diff -Nrcpad gcc-10.3.0/ChangeLog gcc-10.4.0/ChangeLog
*** gcc-10.3.0/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,33 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* Makefile.def: Add dsymutil defs.
+ 	* Makefile.in: Regenerated.
+ 	* Makefile.tpl: Add dsymutil to flags.
+ 	* configure: Regenerated.
+ 	* configure.ac: Add dsymutil to target and build recipes.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* Makefile.in: Regenerate.
+ 	* Makefile.tpl: Make the state of the configured host
+ 	shared flag available to makefile fragements.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure: Regenerate.
+ 	* configure.ac: Adjust cases for which it is necessary to
+ 	include the Darwin host config fragment.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/INSTALL/binaries.html gcc-10.4.0/INSTALL/binaries.html
*** gcc-10.3.0/INSTALL/binaries.html	Thu Apr  8 11:57:06 2021
--- gcc-10.4.0/INSTALL/binaries.html	Tue Jun 28 08:55:12 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: Binaries">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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
--- 79,86 ----
  
  
  
! <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-10.4.0/INSTALL/build.html
*** gcc-10.3.0/INSTALL/build.html	Thu Apr  8 11:57:05 2021
--- gcc-10.4.0/INSTALL/build.html	Tue Jun 28 08:55:12 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: Building">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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.
--- 76,82 ----
  
  
  
! <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,135 ****
  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
--- 123,129 ----
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <div class="section" id="Building-a-native-compiler">
  <h3 class="section">Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
*************** 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
--- 166,173 ----
  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
*************** configure option <samp>--with-build-conf
*** 224,241 ****
  examples of supported build configurations are:
  </p>
  <dl compact="compact">
! <dt>&lsquo;<samp>bootstrap-O1</samp>&rsquo;</dt>
  <dd><p>Removes any <samp>-O</samp>-started option from <code>BOOT_CFLAGS</code>, and adds
  <samp>-O1</samp> to it.  &lsquo;<samp>BUILD_CONFIG=bootstrap-O1</samp>&rsquo; is equivalent to
  &lsquo;<samp>BOOT_CFLAGS='-g -O1'</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-O3</samp>&rsquo;</dt>
! <dt>&lsquo;<samp>bootstrap-Og</samp>&rsquo;</dt>
  <dd><p>Analogous to <code>bootstrap-O1</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto</samp>&rsquo;</dt>
  <dd><p>Enables Link-Time Optimization for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-lto</samp>&rsquo; is equivalent to adding
  <samp>-flto</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option assumes that the host
--- 218,235 ----
  examples of supported build configurations are:
  </p>
  <dl compact="compact">
! <dt><span>&lsquo;<samp>bootstrap-O1</samp>&rsquo;</span></dt>
  <dd><p>Removes any <samp>-O</samp>-started option from <code>BOOT_CFLAGS</code>, and adds
  <samp>-O1</samp> to it.  &lsquo;<samp>BUILD_CONFIG=bootstrap-O1</samp>&rsquo; is equivalent to
  &lsquo;<samp>BOOT_CFLAGS='-g -O1'</samp>&rsquo;.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-O3</samp>&rsquo;</span></dt>
! <dt><span>&lsquo;<samp>bootstrap-Og</samp>&rsquo;</span></dt>
  <dd><p>Analogous to <code>bootstrap-O1</code>.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-lto</samp>&rsquo;</span></dt>
  <dd><p>Enables Link-Time Optimization for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-lto</samp>&rsquo; is equivalent to adding
  <samp>-flto</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option assumes that the host
*************** supports the linker plugin (e.g. GNU ld
*** 243,249 ****
  version 2.21 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto-noplugin</samp>&rsquo;</dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  hosts that do not support the linker plugin.  Without the linker plugin 
  static libraries are not compiled with link-time optimizations.  Since 
--- 237,243 ----
  version 2.21 or later).
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-lto-noplugin</samp>&rsquo;</span></dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  hosts that do not support the linker plugin.  Without the linker plugin 
  static libraries are not compiled with link-time optimizations.  Since 
*************** the GCC middle end and back end are in <
*** 251,264 ****
  that only the front end is actually LTO optimized.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto-lean</samp>&rsquo;</dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  faster build by only using LTO in the final bootstrap stage.
  With &lsquo;<samp>make profiledbootstrap</samp>&rsquo; the LTO frontend
  is trained only on generator files.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug</samp>&rsquo;</dt>
  <dd><p>Verifies that the compiler generates the same executable code, whether
  or not it is asked to emit debug information.  To this end, this
  option builds stage2 host programs without debug information, and uses
--- 245,258 ----
  that only the front end is actually LTO optimized.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-lto-lean</samp>&rsquo;</span></dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  faster build by only using LTO in the final bootstrap stage.
  With &lsquo;<samp>make profiledbootstrap</samp>&rsquo; the LTO frontend
  is trained only on generator files.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug</samp>&rsquo;</span></dt>
  <dd><p>Verifies that the compiler generates the same executable code, whether
  or not it is asked to emit debug information.  To this end, this
  option builds stage2 host programs without debug information, and uses
*************** info into identical object files.  In ad
*** 271,277 ****
  coverage, this option makes default bootstraps faster and leaner.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-big</samp>&rsquo;</dt>
  <dd><p>Rather than comparing stripped object files, as in
  <code>bootstrap-debug</code>, this option saves internal compiler dumps
  during stage2 and stage3 and compares them as well, which helps catch
--- 265,271 ----
  coverage, this option makes default bootstraps faster and leaner.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-big</samp>&rsquo;</span></dt>
  <dd><p>Rather than comparing stripped object files, as in
  <code>bootstrap-debug</code>, this option saves internal compiler dumps
  during stage2 and stage3 and compares them as well, which helps catch
*************** additional potential problems, but at a
*** 279,285 ****
  space.  It can be specified in addition to &lsquo;<samp>bootstrap-debug</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-lean</samp>&rsquo;</dt>
  <dd><p>This option saves disk space compared with <code>bootstrap-debug-big</code>,
  but at the expense of some recompilation.  Instead of saving the dumps
  of stage2 and stage3 until the final compare, it uses
--- 273,279 ----
  space.  It can be specified in addition to &lsquo;<samp>bootstrap-debug</samp>&rsquo;.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-lean</samp>&rsquo;</span></dt>
  <dd><p>This option saves disk space compared with <code>bootstrap-debug-big</code>,
  but at the expense of some recompilation.  Instead of saving the dumps
  of stage2 and stage3 until the final compare, it uses
*************** during stage3, repeating the compilation
*** 288,294 ****
  stage2, whose dumps were not saved.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-lib</samp>&rsquo;</dt>
  <dd><p>This option tests executable code invariance over debug information
  generation on target libraries, just like <code>bootstrap-debug-lean</code>
  tests it on host programs.  It builds stage3 libraries with
--- 282,288 ----
  stage2, whose dumps were not saved.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-lib</samp>&rsquo;</span></dt>
  <dd><p>This option tests executable code invariance over debug information
  generation on target libraries, just like <code>bootstrap-debug-lean</code>
  tests it on host programs.  It builds stage3 libraries with
*************** in stage2 are used in stage3 host progra
*** 302,308 ****
  compile stage2 libraries with different options for comparison purposes.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-ckovw</samp>&rsquo;</dt>
  <dd><p>Arranges for error messages to be issued if the compiler built on any
  stage is run without the option <samp>-fcompare-debug</samp>.  This is
  useful to verify the full <samp>-fcompare-debug</samp> testing coverage.  It
--- 296,302 ----
  compile stage2 libraries with different options for comparison purposes.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-ckovw</samp>&rsquo;</span></dt>
  <dd><p>Arranges for error messages to be issued if the compiler built on any
  stage is run without the option <samp>-fcompare-debug</samp>.  This is
  useful to verify the full <samp>-fcompare-debug</samp> testing coverage.  It
*************** must be used along with <code>bootstrap-
*** 310,316 ****
  <code>bootstrap-debug-lib</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-cet</samp>&rsquo;</dt>
  <dd><p>This option enables Intel CET for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-cet</samp>&rsquo; is equivalent to adding
  <samp>-fcf-protection</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option
--- 304,310 ----
  <code>bootstrap-debug-lib</code>.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-cet</samp>&rsquo;</span></dt>
  <dd><p>This option enables Intel CET for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-cet</samp>&rsquo; is equivalent to adding
  <samp>-fcf-protection</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option
*************** assumes that the host supports Intel CET
*** 318,337 ****
  2.30 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-time</samp>&rsquo;</dt>
  <dd><p>Arranges for the run time of each program started by the GCC driver,
  built in any stage, to be logged to <samp>time.log</samp>, in the top level of
  the build tree.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-asan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using Address Sanitization in order to catch invalid memory
  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
--- 312,332 ----
  2.30 or later).
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-time</samp>&rsquo;</span></dt>
  <dd><p>Arranges for the run time of each program started by the GCC driver,
  built in any stage, to be logged to <samp>time.log</samp>, in the top level of
  the build tree.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-asan</samp>&rsquo;</span></dt>
  <dd><p>Compiles GCC itself using Address Sanitization in order to catch invalid memory
  accesses within the GCC code.
  </p>
  </dd>
  </dl>
  
! </div>
! <div class="section" id="Building-a-cross-compiler">
  <h3 class="section">Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
*************** configuring GCC.  Put them in the direct
*** 369,388 ****
  you should put in this directory:
  </p>
  <dl compact="compact">
! <dt><samp>as</samp></dt>
  <dd><p>This should be the cross-assembler.
  </p>
  </dd>
! <dt><samp>ld</samp></dt>
  <dd><p>This should be the cross-linker.
  </p>
  </dd>
! <dt><samp>ar</samp></dt>
  <dd><p>This should be the cross-archiver: a program which can manipulate
  archive files (linker libraries) in the target machine&rsquo;s format.
  </p>
  </dd>
! <dt><samp>ranlib</samp></dt>
  <dd><p>This should be a program to construct a symbol table in an archive file.
  </p></dd>
  </dl>
--- 364,383 ----
  you should put in this directory:
  </p>
  <dl compact="compact">
! <dt><span><samp>as</samp></span></dt>
  <dd><p>This should be the cross-assembler.
  </p>
  </dd>
! <dt><span><samp>ld</samp></span></dt>
  <dd><p>This should be the cross-linker.
  </p>
  </dd>
! <dt><span><samp>ar</samp></span></dt>
  <dd><p>This should be the cross-archiver: a program which can manipulate
  archive files (linker libraries) in the target machine&rsquo;s format.
  </p>
  </dd>
! <dt><span><samp>ranlib</samp></span></dt>
  <dd><p>This should be a program to construct a symbol table in an archive file.
  </p></dd>
  </dl>
*************** alternatives for <samp>crt0.o</samp>, fo
*** 409,415 ****
  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
--- 404,411 ----
  compilation options.  Check your target&rsquo;s definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! </div>
! <div class="section" id="Building-in-parallel">
  <h3 class="section">Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
*************** your machine will result in fewer and sh
*** 420,431 ****
  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
--- 416,429 ----
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! </div>
! <div class="section" id="Building-the-Ada-compiler">
  <h3 class="section">Building the Ada compiler</h3>
  
  <p><a href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! </div>
! <div class="section" id="Building-with-profile-feedback">
  <h3 class="section">Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
*************** the code quality may be much worse.
*** 466,472 ****
  
  
  
! <hr>
  
  
  
--- 464,470 ----
  
  
  
! <hr></div>
  
  
  
diff -Nrcpad gcc-10.3.0/INSTALL/configure.html gcc-10.4.0/INSTALL/configure.html
*** gcc-10.3.0/INSTALL/configure.html	Thu Apr  8 11:57:05 2021
--- gcc-10.4.0/INSTALL/configure.html	Tue Jun 28 08:55:12 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: Configuration">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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
--- 75,82 ----
  
  
  
! <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,148 ****
  
  <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
  section to make clear that your version contains modifications.
  </p>
  <dl compact="compact">
! <dt><code>--with-pkgversion=<var>version</var></code></dt>
  <dd><p>Specify a string that identifies your package.  You may wish
  to include a build number or build date.  This version string will be
  included in the output of <code>gcc --version</code>.  This suffix does
--- 122,141 ----
  
  <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
  section to make clear that your version contains modifications.
  </p>
  <dl compact="compact">
! <dt><span><code>--with-pkgversion=<var>version</var></code></span></dt>
  <dd><p>Specify a string that identifies your package.  You may wish
  to include a build number or build date.  This version string will be
  included in the output of <code>gcc --version</code>.  This suffix does
*************** not replace the default version string,
*** 151,157 ****
  <p>The default value is &lsquo;<samp>GCC</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-bugurl=<var>url</var></code></dt>
  <dd><p>Specify the URL that users should visit if they wish to report a bug.
  You are of course welcome to forward bugs reported to you to the FSF,
  if you determine that they are not bugs in your modifications.
--- 144,150 ----
  <p>The default value is &lsquo;<samp>GCC</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-bugurl=<var>url</var></code></span></dt>
  <dd><p>Specify the URL that users should visit if they wish to report a bug.
  You are of course welcome to forward bugs reported to you to the FSF,
  if you determine that they are not bugs in your modifications.
*************** if you determine that they are not bugs
*** 159,172 ****
  <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
  </p>
  </dd>
! <dt><code>--with-documentation-root-url=<var>url</var></code></dt>
  <dd><p>Specify the URL root that contains GCC option documentation.  The <var>url</var>
  should end with a <code>/</code> character.
  </p>
  <p>The default value is <a href="https://gcc.gnu.org/onlinedocs/">https://gcc.gnu.org/onlinedocs/</a>.
  </p>
  </dd>
! <dt><code>--with-changes-root-url=<var>url</var></code></dt>
  <dd><p>Specify the URL root that contains information about changes in GCC
  releases like <code>gcc-<var>version</var>/changes.html</code>.
  The <var>url</var> should end with a <code>/</code> character.
--- 152,165 ----
  <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
  </p>
  </dd>
! <dt><span><code>--with-documentation-root-url=<var>url</var></code></span></dt>
  <dd><p>Specify the URL root that contains GCC option documentation.  The <var>url</var>
  should end with a <code>/</code> character.
  </p>
  <p>The default value is <a href="https://gcc.gnu.org/onlinedocs/">https://gcc.gnu.org/onlinedocs/</a>.
  </p>
  </dd>
! <dt><span><code>--with-changes-root-url=<var>url</var></code></span></dt>
  <dd><p>Specify the URL root that contains information about changes in GCC
  releases like <code>gcc-<var>version</var>/changes.html</code>.
  The <var>url</var> should end with a <code>/</code> character.
*************** 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
--- 169,175 ----
  </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
--- 184,190 ----
  </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
*************** work and should not normally be used.
*** 205,211 ****
  corresponding <samp>--without</samp> option.
  </p>
  <dl compact="compact">
! <dt><code>--prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
--- 196,202 ----
  corresponding <samp>--without</samp> option.
  </p>
  <dl compact="compact">
! <dt><span><code>--prefix=<var>dirname</var></code></span></dt>
  <dd><p>Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
*************** beneath a user&rsquo;s home directory tr
*** 220,282 ****
  <p>The following standard <code>autoconf</code> options are supported.  Normally you
  should not need to use these options.
  </p><dl compact="compact">
! <dt><code>--exec-prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the toplevel installation directory for architecture-dependent
  files.  The default is <samp><var>prefix</var></samp>.
  </p>
  </dd>
! <dt><code>--bindir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for the executables called by users
  (such as <code>gcc</code> and <code>g++</code>).  The default is
  <samp><var>exec-prefix</var>/bin</samp>.
  </p>
  </dd>
! <dt><code>--libdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for object code libraries and
  internal data files of GCC.  The default is <samp><var>exec-prefix</var>/lib</samp>.
  </p>
  </dd>
! <dt><code>--libexecdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for internal executables of GCC.
  The default is <samp><var>exec-prefix</var>/libexec</samp>.
  </p>
  </dd>
! <dt><code>--with-slibdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for the shared libgcc library.  The
  default is <samp><var>libdir</var></samp>.
  </p>
  </dd>
! <dt><code>--datarootdir=<var>dirname</var></code></dt>
  <dd><p>Specify the root of the directory tree for read-only architecture-independent
  data files referenced by GCC.  The default is <samp><var>prefix</var>/share</samp>.
  </p>
  </dd>
! <dt><code>--infodir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation in info format.
  The default is <samp><var>datarootdir</var>/info</samp>.
  </p>
  </dd>
! <dt><code>--datadir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for some architecture-independent
  data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
  </p>
  </dd>
! <dt><code>--docdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation files (other
  than Info) for GCC.  The default is <samp><var>datarootdir</var>/doc</samp>.
  </p>
  </dd>
! <dt><code>--htmldir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for HTML documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><code>--pdfdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for PDF documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><code>--mandir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for manual pages.  The default is
  <samp><var>datarootdir</var>/man</samp>.  (Note that the manual pages are only extracts
  from the full GCC manuals, which are provided in Texinfo format.  The manpages
--- 211,273 ----
  <p>The following standard <code>autoconf</code> options are supported.  Normally you
  should not need to use these options.
  </p><dl compact="compact">
! <dt><span><code>--exec-prefix=<var>dirname</var></code></span></dt>
  <dd><p>Specify the toplevel installation directory for architecture-dependent
  files.  The default is <samp><var>prefix</var></samp>.
  </p>
  </dd>
! <dt><span><code>--bindir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for the executables called by users
  (such as <code>gcc</code> and <code>g++</code>).  The default is
  <samp><var>exec-prefix</var>/bin</samp>.
  </p>
  </dd>
! <dt><span><code>--libdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for object code libraries and
  internal data files of GCC.  The default is <samp><var>exec-prefix</var>/lib</samp>.
  </p>
  </dd>
! <dt><span><code>--libexecdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for internal executables of GCC.
  The default is <samp><var>exec-prefix</var>/libexec</samp>.
  </p>
  </dd>
! <dt><span><code>--with-slibdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for the shared libgcc library.  The
  default is <samp><var>libdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--datarootdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the root of the directory tree for read-only architecture-independent
  data files referenced by GCC.  The default is <samp><var>prefix</var>/share</samp>.
  </p>
  </dd>
! <dt><span><code>--infodir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for documentation in info format.
  The default is <samp><var>datarootdir</var>/info</samp>.
  </p>
  </dd>
! <dt><span><code>--datadir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for some architecture-independent
  data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--docdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for documentation files (other
  than Info) for GCC.  The default is <samp><var>datarootdir</var>/doc</samp>.
  </p>
  </dd>
! <dt><span><code>--htmldir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for HTML documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--pdfdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for PDF documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--mandir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for manual pages.  The default is
  <samp><var>datarootdir</var>/man</samp>.  (Note that the manual pages are only extracts
  from the full GCC manuals, which are provided in Texinfo format.  The manpages
*************** are derived by an automatic conversion p
*** 284,297 ****
  manual.)
  </p>
  </dd>
! <dt><code>--with-gxx-include-dir=<var>dirname</var></code></dt>
  <dd><p>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
  </p>
  </dd>
! <dt><code>--with-specs=<var>specs</var></code></dt>
  <dd><p>Specify additional command line driver SPECS.
  This can be useful if you need to turn on a non-standard feature by
  default without modifying the compiler&rsquo;s source code, for instance
--- 275,288 ----
  manual.)
  </p>
  </dd>
! <dt><span><code>--with-gxx-include-dir=<var>dirname</var></code></span></dt>
  <dd><p>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
  </p>
  </dd>
! <dt><span><code>--with-specs=<var>specs</var></code></span></dt>
  <dd><p>Specify additional command line driver SPECS.
  This can be useful if you need to turn on a non-standard feature by
  default without modifying the compiler&rsquo;s source code, for instance
*************** See &ldquo;Spec Files&rdquo; in the main
*** 302,308 ****
  </dl>
  
  </dd>
! <dt><code>--program-prefix=<var>prefix</var></code></dt>
  <dd><p>GCC supports some transformations of the names of its programs when
  installing them.  This option prepends <var>prefix</var> to the names of
  programs to install in <var>bindir</var> (see above).  For example, specifying
--- 293,299 ----
  </dl>
  
  </dd>
! <dt><span><code>--program-prefix=<var>prefix</var></code></span></dt>
  <dd><p>GCC supports some transformations of the names of its programs when
  installing them.  This option prepends <var>prefix</var> to the names of
  programs to install in <var>bindir</var> (see above).  For example, specifying
*************** programs to install in <var>bindir</var>
*** 310,323 ****
  being installed as <samp>/usr/local/bin/foo-gcc</samp>.
  </p>
  </dd>
! <dt><code>--program-suffix=<var>suffix</var></code></dt>
  <dd><p>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
  (see above).  For example, specifying <samp>--program-suffix=-3.1</samp>
  would result in &lsquo;<samp>gcc</samp>&rsquo; being installed as
  <samp>/usr/local/bin/gcc-3.1</samp>.
  </p>
  </dd>
! <dt><code>--program-transform-name=<var>pattern</var></code></dt>
  <dd><p>Applies the &lsquo;<samp>sed</samp>&rsquo; script <var>pattern</var> to be applied to the names
  of programs to install in <var>bindir</var> (see above).  <var>pattern</var> has to
  consist of one or more basic &lsquo;<samp>sed</samp>&rsquo; editing commands, separated by
--- 301,314 ----
  being installed as <samp>/usr/local/bin/foo-gcc</samp>.
  </p>
  </dd>
! <dt><span><code>--program-suffix=<var>suffix</var></code></span></dt>
  <dd><p>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
  (see above).  For example, specifying <samp>--program-suffix=-3.1</samp>
  would result in &lsquo;<samp>gcc</samp>&rsquo; being installed as
  <samp>/usr/local/bin/gcc-3.1</samp>.
  </p>
  </dd>
! <dt><span><code>--program-transform-name=<var>pattern</var></code></span></dt>
  <dd><p>Applies the &lsquo;<samp>sed</samp>&rsquo; script <var>pattern</var> to be applied to the names
  of programs to install in <var>bindir</var> (see above).  <var>pattern</var> has to
  consist of one or more basic &lsquo;<samp>sed</samp>&rsquo; editing commands, separated by
*************** resulting binary would be installed as
*** 350,356 ****
  transformed yet, which will be fixed in some time.
  </p>
  </dd>
! <dt><code>--with-local-prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the
  installation directory for local include files.  The default is
  <samp>/usr/local</samp>.  Specify this option if you want the compiler to
--- 341,347 ----
  transformed yet, which will be fixed in some time.
  </p>
  </dd>
! <dt><span><code>--with-local-prefix=<var>dirname</var></code></span></dt>
  <dd><p>Specify the
  installation directory for local include files.  The default is
  <samp>/usr/local</samp>.  Specify this option if you want the compiler to
*************** install part of GCC.  Perhaps they make
*** 423,434 ****
  installing GCC creates the directory.
  </p>
  </dd>
! <dt><code>--with-gcc-major-version-only</code></dt>
  <dd><p>Specifies that GCC should use only the major number rather than
  <var>major</var>.<var>minor</var>.<var>patchlevel</var> in filesystem paths.
  </p>
  </dd>
! <dt><code>--with-native-system-header-dir=<var>dirname</var></code></dt>
  <dd><p>Specifies that <var>dirname</var> is the directory that contains native system
  header files, rather than <samp>/usr/include</samp>.  This option is most useful
  if you are creating a compiler that should be isolated from the system
--- 414,425 ----
  installing GCC creates the directory.
  </p>
  </dd>
! <dt><span><code>--with-gcc-major-version-only</code></span></dt>
  <dd><p>Specifies that GCC should use only the major number rather than
  <var>major</var>.<var>minor</var>.<var>patchlevel</var> in filesystem paths.
  </p>
  </dd>
! <dt><span><code>--with-native-system-header-dir=<var>dirname</var></code></span></dt>
  <dd><p>Specifies that <var>dirname</var> is the directory that contains native system
  header files, rather than <samp>/usr/include</samp>.  This option is most useful
  if you are creating a compiler that should be isolated from the system
*************** as much as possible.  It is most commonl
*** 437,443 ****
  <var>dirname</var> inside the system root specified by that option.
  </p>
  </dd>
! <dt><code>--enable-shared[=<var>package</var>[,&hellip;]]</code></dt>
  <dd><p>Build shared versions of libraries, if shared libraries are supported on
  the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
  are enabled by default on all platforms that support shared libraries.
--- 428,434 ----
  <var>dirname</var> inside the system root specified by that option.
  </p>
  </dd>
! <dt><span><code>--enable-shared[=<var>package</var>[,&hellip;]]</code></span></dt>
  <dd><p>Build shared versions of libraries, if shared libraries are supported on
  the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
  are enabled by default on all platforms that support shared libraries.
*************** argument, only <samp>--enable-shared</sa
*** 458,464 ****
  code.
  </p>
  </dd>
! <dt><code>--enable-host-shared</code></dt>
  <dd><p>Specify that the <em>host</em> code should be built into position-independent
  machine code (with -fPIC), allowing it to be used within shared libraries,
  but yielding a slightly slower compiler.
--- 449,455 ----
  code.
  </p>
  </dd>
! <dt><span><code>--enable-host-shared</code></span></dt>
  <dd><p>Specify that the <em>host</em> code should be built into position-independent
  machine code (with -fPIC), allowing it to be used within shared libraries,
  but yielding a slightly slower compiler.
*************** 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
--- 460,466 ----
  libraries.
  </p>
  </dd>
! <dt><span><code><span id="with-gnu-as"></span>--with-gnu-as</code></span></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:
--- 483,489 ----
  </li></ul>
  
  </dd>
! <dt><span><code><span id="with-as"></span>--with-as=<var>pathname</var></code></span></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,554 ****
  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>
  </dd>
! <dt><code>--with-ld=<var>pathname</var></code></dt>
  <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code>--with-stabs</code></dt>
  <dd><p>Specify that stabs debugging
  information should be used instead of whatever format the host normally
  uses.  Normally GCC uses the same debug format as the host system.
  </p>
  </dd>
! <dt><code>--with-tls=<var>dialect</var></code></dt>
  <dd><p>Specify the default TLS dialect, for systems were there is a choice.
  For ARM targets, possible values for <var>dialect</var> are <code>gnu</code> or
  <code>gnu2</code>, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
  </p>
  </dd>
! <dt><code>--enable-multiarch</code></dt>
  <dd><p>Specify whether to enable or disable multiarch support.  The default is
  to check for glibc start files in a multiarch location, and enable it
  if the files are found.  The auto detection is enabled for native builds,
--- 516,550 ----
  above rules.
  </p>
  </dd>
! <dt><span><code><span id="with-gnu-ld"></span>--with-gnu-ld</code></span></dt>
  <dd><p>Same as <a href="#with-gnu-as"><samp>--with-gnu-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><span><code>--with-ld=<var>pathname</var></code></span></dt>
  <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><span><code>--with-dsymutil=<var>pathname</var></code></span></dt>
! <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
! but for the debug linker (only used on Darwin platforms so far).
! </p>
! </dd>
! <dt><span><code>--with-stabs</code></span></dt>
  <dd><p>Specify that stabs debugging
  information should be used instead of whatever format the host normally
  uses.  Normally GCC uses the same debug format as the host system.
  </p>
  </dd>
! <dt><span><code>--with-tls=<var>dialect</var></code></span></dt>
  <dd><p>Specify the default TLS dialect, for systems were there is a choice.
  For ARM targets, possible values for <var>dialect</var> are <code>gnu</code> or
  <code>gnu2</code>, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
  </p>
  </dd>
! <dt><span><code>--enable-multiarch</code></span></dt>
  <dd><p>Specify whether to enable or disable multiarch support.  The default is
  to check for glibc start files in a multiarch location, and enable it
  if the files are found.  The auto detection is enabled for native builds,
*************** More documentation about multiarch can b
*** 558,570 ****
  <a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
  </p>
  </dd>
! <dt><code>--enable-sjlj-exceptions</code></dt>
  <dd><p>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions.
  &lsquo;<samp>configure</samp>&rsquo; ordinarily picks the correct value based on the platform.
  Only use this option if you are sure you need a different setting.
  </p>
  </dd>
! <dt><code>--enable-vtable-verify</code></dt>
  <dd><p>Specify whether to enable or disable the vtable verification feature.
  Enabling this feature causes libstdc++ to be built with its virtual calls
  in verifiable mode.  This means that, when linked with libvtv, every
--- 554,566 ----
  <a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
  </p>
  </dd>
! <dt><span><code>--enable-sjlj-exceptions</code></span></dt>
  <dd><p>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions.
  &lsquo;<samp>configure</samp>&rsquo; ordinarily picks the correct value based on the platform.
  Only use this option if you are sure you need a different setting.
  </p>
  </dd>
! <dt><span><code>--enable-vtable-verify</code></span></dt>
  <dd><p>Specify whether to enable or disable the vtable verification feature.
  Enabling this feature causes libstdc++ to be built with its virtual calls
  in verifiable mode.  This means that, when linked with libvtv, every
*************** still be built (see <samp>--disable-libv
*** 577,588 ****
  <samp>--disable-vtable-verify</samp> is the default.
  </p>
  </dd>
! <dt><code>--disable-gcov</code></dt>
  <dd><p>Specify that the run-time library used for coverage analysis
  and associated host tools should not be built.
  </p>
  </dd>
! <dt><code>--disable-multilib</code></dt>
  <dd><p>Specify that multiple target
  libraries to support different target variants, calling
  conventions, etc. should not be built.  The default is to build a
--- 573,584 ----
  <samp>--disable-vtable-verify</samp> is the default.
  </p>
  </dd>
! <dt><span><code>--disable-gcov</code></span></dt>
  <dd><p>Specify that the run-time library used for coverage analysis
  and associated host tools should not be built.
  </p>
  </dd>
! <dt><span><code>--disable-multilib</code></span></dt>
  <dd><p>Specify that multiple target
  libraries to support different target variants, calling
  conventions, etc. should not be built.  The default is to build a
*************** predefined set of them.
*** 591,613 ****
  <p>Some targets provide finer-grained control over which multilibs are built
  (e.g., <samp>--disable-softfloat</samp>):
  </p><dl compact="compact">
! <dt><code>arm-*-*</code></dt>
  <dd><p>fpu, 26bit, underscore, interwork, biendian, nofmult.
  </p>
  </dd>
! <dt><code>m68*-*-*</code></dt>
  <dd><p>softfloat, m68881, m68000, m68020.
  </p>
  </dd>
! <dt><code>mips*-*-*</code></dt>
  <dd><p>single-float, biendian, softfloat.
  </p>
  </dd>
! <dt><code>msp430-*-*</code></dt>
  <dd><p>no-exceptions
  </p>
  </dd>
! <dt><code>powerpc*-*-*, rs6000*-*-*</code></dt>
  <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  </p>
--- 587,609 ----
  <p>Some targets provide finer-grained control over which multilibs are built
  (e.g., <samp>--disable-softfloat</samp>):
  </p><dl compact="compact">
! <dt><span><code>arm-*-*</code></span></dt>
  <dd><p>fpu, 26bit, underscore, interwork, biendian, nofmult.
  </p>
  </dd>
! <dt><span><code>m68*-*-*</code></span></dt>
  <dd><p>softfloat, m68881, m68000, m68020.
  </p>
  </dd>
! <dt><span><code>mips*-*-*</code></span></dt>
  <dd><p>single-float, biendian, softfloat.
  </p>
  </dd>
! <dt><span><code>msp430-*-*</code></span></dt>
  <dd><p>no-exceptions
  </p>
  </dd>
! <dt><span><code>powerpc*-*-*, rs6000*-*-*</code></span></dt>
  <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  </p>
*************** sysv, aix.
*** 615,629 ****
  </dl>
  
  </dd>
! <dt><code>--with-multilib-list=<var>list</var></code></dt>
! <dt><code>--without-multilib-list</code></dt>
  <dd><p>Specify what multilibs to build.  <var>list</var> is a comma separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for aarch64*-*-*, arm*-*-*, riscv*-*-*, sh*-*-* and x86-64-*-linux*.  The
  accepted values and meaning for each target is given below.
  </p>
  <dl compact="compact">
! <dt><code>aarch64*-*-*</code></dt>
  <dd><p><var>list</var> is a comma separated list of <code>ilp32</code>, and <code>lp64</code>
  to enable ILP32 and LP64 run-time libraries, respectively.  If
  <var>list</var> is empty, then there will be no multilibs and only the
--- 611,625 ----
  </dl>
  
  </dd>
! <dt><span><code>--with-multilib-list=<var>list</var></code></span></dt>
! <dt><span><code>--without-multilib-list</code></span></dt>
  <dd><p>Specify what multilibs to build.  <var>list</var> is a comma separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for aarch64*-*-*, arm*-*-*, riscv*-*-*, sh*-*-* and x86-64-*-linux*.  The
  accepted values and meaning for each target is given below.
  </p>
  <dl compact="compact">
! <dt><span><code>aarch64*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of <code>ilp32</code>, and <code>lp64</code>
  to enable ILP32 and LP64 run-time libraries, respectively.  If
  <var>list</var> is empty, then there will be no multilibs and only the
*************** default set of libraries is selected bas
*** 633,639 ****
  <samp>--target</samp>.
  </p>
  </dd>
! <dt><code>arm*-*-*</code></dt>
  <dd><p><var>list</var> is a comma separated list of <code>aprofile</code> and
  <code>rmprofile</code> to build multilibs for A or R and M architecture
  profiles respectively.  Note that, due to some limitation of the current
--- 629,635 ----
  <samp>--target</samp>.
  </p>
  </dd>
! <dt><span><code>arm*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of <code>aprofile</code> and
  <code>rmprofile</code> to build multilibs for A or R and M architecture
  profiles respectively.  Note that, due to some limitation of the current
*************** profile.  The union of these options is
*** 695,701 ****
  </table>
  
  </dd>
! <dt><code>riscv*-*-*</code></dt>
  <dd><p><var>list</var> is a single ABI name.  The target architecture must be either
  <code>rv32gc</code> or <code>rv64gc</code>.  This will build a single multilib for the
  specified architecture and ABI pair.  If <code>--with-multilib-list</code> is not
--- 691,697 ----
  </table>
  
  </dd>
! <dt><span><code>riscv*-*-*</code></span></dt>
  <dd><p><var>list</var> is a single ABI name.  The target architecture must be either
  <code>rv32gc</code> or <code>rv64gc</code>.  This will build a single multilib for the
  specified architecture and ABI pair.  If <code>--with-multilib-list</code> is not
*************** given, then a default set of multilibs i
*** 703,709 ****
  <samp>--target</samp>.  This is usually a large set of multilibs.
  </p>
  </dd>
! <dt><code>sh*-*-*</code></dt>
  <dd><p><var>list</var> is a comma separated list of CPU names.  These must be of the
  form <code>sh*</code> or <code>m*</code> (in which case they match the compiler option
  for that processor).  The list should not contain any endian options -
--- 699,705 ----
  <samp>--target</samp>.  This is usually a large set of multilibs.
  </p>
  </dd>
! <dt><span><code>sh*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of CPU names.  These must be of the
  form <code>sh*</code> or <code>m*</code> (in which case they match the compiler option
  for that processor).  The list should not contain any endian options -
*************** specialized subset.
*** 724,742 ****
  </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>
  
  </dd>
! <dt><code>x86-64-*-linux*</code></dt>
  <dd><p><var>list</var> is a comma separated list of <code>m32</code>, <code>m64</code> and
  <code>mx32</code> to enable 32-bit, 64-bit and x32 run-time libraries,
  respectively.  If <var>list</var> is empty, then there will be no multilibs
--- 720,738 ----
  </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>
  
  </dd>
! <dt><span><code>x86-64-*-linux*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of <code>m32</code>, <code>m64</code> and
  <code>mx32</code> to enable 32-bit, 64-bit and x32 run-time libraries,
  respectively.  If <var>list</var> is empty, then there will be no multilibs
*************** and only the default run-time library wi
*** 748,775 ****
  </dl>
  
  </dd>
! <dt><code>--with-endian=<var>endians</var></code></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
  </p>
  <p><var>endians</var> may be one of the following:
  </p><dl compact="compact">
! <dt><code>big</code></dt>
  <dd><p>Use big endian exclusively.
  </p></dd>
! <dt><code>little</code></dt>
  <dd><p>Use little endian exclusively.
  </p></dd>
! <dt><code>big,little</code></dt>
  <dd><p>Use big endian by default.  Provide a multilib for little endian.
  </p></dd>
! <dt><code>little,big</code></dt>
  <dd><p>Use little endian by default.  Provide a multilib for big endian.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--enable-threads</code></dt>
  <dd><p>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
  library, and exception handling for other languages like C++.
--- 744,771 ----
  </dl>
  
  </dd>
! <dt><span><code>--with-endian=<var>endians</var></code></span></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
  </p>
  <p><var>endians</var> may be one of the following:
  </p><dl compact="compact">
! <dt><span><code>big</code></span></dt>
  <dd><p>Use big endian exclusively.
  </p></dd>
! <dt><span><code>little</code></span></dt>
  <dd><p>Use little endian exclusively.
  </p></dd>
! <dt><span><code>big,little</code></span></dt>
  <dd><p>Use big endian by default.  Provide a multilib for little endian.
  </p></dd>
! <dt><span><code>little,big</code></span></dt>
  <dd><p>Use little endian by default.  Provide a multilib for big endian.
  </p></dd>
  </dl>
  
  </dd>
! <dt><span><code>--enable-threads</code></span></dt>
  <dd><p>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
  library, and exception handling for other languages like C++.
*************** available for the system.  In this case,
*** 782,836 ****
  alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code>--disable-threads</code></dt>
  <dd><p>Specify that threading support should be disabled for the system.
  This is an alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code>--enable-threads=<var>lib</var></code></dt>
  <dd><p>Specify that
  <var>lib</var> is the thread support library.  This affects the Objective-C
  compiler and runtime library, and exception handling for other languages
  like C++.  The possibilities for <var>lib</var> are:
  </p>
  <dl compact="compact">
! <dt><code>aix</code></dt>
  <dd><p>AIX thread support.
  </p></dd>
! <dt><code>dce</code></dt>
  <dd><p>DCE thread support.
  </p></dd>
! <dt><code>lynx</code></dt>
  <dd><p>LynxOS thread support.
  </p></dd>
! <dt><code>mipssde</code></dt>
  <dd><p>MIPS SDE thread support.
  </p></dd>
! <dt><code>no</code></dt>
  <dd><p>This is an alias for &lsquo;<samp>single</samp>&rsquo;.
  </p></dd>
! <dt><code>posix</code></dt>
  <dd><p>Generic POSIX/Unix98 thread support.
  </p></dd>
! <dt><code>rtems</code></dt>
  <dd><p>RTEMS thread support.
  </p></dd>
! <dt><code>single</code></dt>
  <dd><p>Disable thread support, should work for all platforms.
  </p></dd>
! <dt><code>tpf</code></dt>
  <dd><p>TPF thread support.
  </p></dd>
! <dt><code>vxworks</code></dt>
  <dd><p>VxWorks thread support.
  </p></dd>
! <dt><code>win32</code></dt>
  <dd><p>Microsoft Win32 API thread support.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--enable-tls</code></dt>
  <dd><p>Specify that the target supports TLS (Thread Local Storage).  Usually
  configure can correctly determine if TLS is supported.  In cases where
  it guesses incorrectly, TLS can be explicitly enabled or disabled with
--- 778,832 ----
  alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><span><code>--disable-threads</code></span></dt>
  <dd><p>Specify that threading support should be disabled for the system.
  This is an alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-threads=<var>lib</var></code></span></dt>
  <dd><p>Specify that
  <var>lib</var> is the thread support library.  This affects the Objective-C
  compiler and runtime library, and exception handling for other languages
  like C++.  The possibilities for <var>lib</var> are:
  </p>
  <dl compact="compact">
! <dt><span><code>aix</code></span></dt>
  <dd><p>AIX thread support.
  </p></dd>
! <dt><span><code>dce</code></span></dt>
  <dd><p>DCE thread support.
  </p></dd>
! <dt><span><code>lynx</code></span></dt>
  <dd><p>LynxOS thread support.
  </p></dd>
! <dt><span><code>mipssde</code></span></dt>
  <dd><p>MIPS SDE thread support.
  </p></dd>
! <dt><span><code>no</code></span></dt>
  <dd><p>This is an alias for &lsquo;<samp>single</samp>&rsquo;.
  </p></dd>
! <dt><span><code>posix</code></span></dt>
  <dd><p>Generic POSIX/Unix98 thread support.
  </p></dd>
! <dt><span><code>rtems</code></span></dt>
  <dd><p>RTEMS thread support.
  </p></dd>
! <dt><span><code>single</code></span></dt>
  <dd><p>Disable thread support, should work for all platforms.
  </p></dd>
! <dt><span><code>tpf</code></span></dt>
  <dd><p>TPF thread support.
  </p></dd>
! <dt><span><code>vxworks</code></span></dt>
  <dd><p>VxWorks thread support.
  </p></dd>
! <dt><span><code>win32</code></span></dt>
  <dd><p>Microsoft Win32 API thread support.
  </p></dd>
  </dl>
  
  </dd>
! <dt><span><code>--enable-tls</code></span></dt>
  <dd><p>Specify that the target supports TLS (Thread Local Storage).  Usually
  configure can correctly determine if TLS is supported.  In cases where
  it guesses incorrectly, TLS can be explicitly enabled or disabled with
*************** the assembler supports TLS but the C lib
*** 839,858 ****
  assumptions made by the configure test are incorrect.
  </p>
  </dd>
! <dt><code>--disable-tls</code></dt>
  <dd><p>Specify that the target does not support TLS.
  This is an alias for <samp>--enable-tls=no</samp>.
  </p>
  </dd>
! <dt><code>--disable-tm-clone-registry</code></dt>
  <dd><p>Disable TM clone registry in libgcc. It is enabled in libgcc by default.
  This option helps to reduce code size for embedded targets which do
  not use transactional memory.
  </p>
  </dd>
! <dt><code>--with-cpu=<var>cpu</var></code></dt>
! <dt><code>--with-cpu-32=<var>cpu</var></code></dt>
! <dt><code>--with-cpu-64=<var>cpu</var></code></dt>
  <dd><p>Specify which cpu variant the compiler should generate code for by default.
  <var>cpu</var> will be used as the default value of the <samp>-mcpu=</samp> switch.
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
--- 835,854 ----
  assumptions made by the configure test are incorrect.
  </p>
  </dd>
! <dt><span><code>--disable-tls</code></span></dt>
  <dd><p>Specify that the target does not support TLS.
  This is an alias for <samp>--enable-tls=no</samp>.
  </p>
  </dd>
! <dt><span><code>--disable-tm-clone-registry</code></span></dt>
  <dd><p>Disable TM clone registry in libgcc. It is enabled in libgcc by default.
  This option helps to reduce code size for embedded targets which do
  not use transactional memory.
  </p>
  </dd>
! <dt><span><code>--with-cpu=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-cpu-32=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-cpu-64=<var>cpu</var></code></span></dt>
  <dd><p>Specify which cpu variant the compiler should generate code for by default.
  <var>cpu</var> will be used as the default value of the <samp>-mcpu=</samp> switch.
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
*************** PowerPC, and SPARC.  It is mandatory for
*** 862,877 ****
  x86-64, PowerPC, and SPARC.
  </p>
  </dd>
! <dt><code>--with-schedule=<var>cpu</var></code></dt>
! <dt><code>--with-arch=<var>cpu</var></code></dt>
! <dt><code>--with-arch-32=<var>cpu</var></code></dt>
! <dt><code>--with-arch-64=<var>cpu</var></code></dt>
! <dt><code>--with-tune=<var>cpu</var></code></dt>
! <dt><code>--with-tune-32=<var>cpu</var></code></dt>
! <dt><code>--with-tune-64=<var>cpu</var></code></dt>
! <dt><code>--with-abi=<var>abi</var></code></dt>
! <dt><code>--with-fpu=<var>type</var></code></dt>
! <dt><code>--with-float=<var>type</var></code></dt>
  <dd><p>These configure options provide default values for the <samp>-mschedule=</samp>,
  <samp>-march=</samp>, <samp>-mtune=</samp>, <samp>-mabi=</samp>, and <samp>-mfpu=</samp>
  options and for <samp>-mhard-float</samp> or <samp>-msoft-float</samp>.  As with
--- 858,873 ----
  x86-64, PowerPC, and SPARC.
  </p>
  </dd>
! <dt><span><code>--with-schedule=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-arch=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-arch-32=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-arch-64=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-tune=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-tune-32=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-tune-64=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-abi=<var>abi</var></code></span></dt>
! <dt><span><code>--with-fpu=<var>type</var></code></span></dt>
! <dt><span><code>--with-float=<var>type</var></code></span></dt>
  <dd><p>These configure options provide default values for the <samp>-mschedule=</samp>,
  <samp>-march=</samp>, <samp>-mtune=</samp>, <samp>-mabi=</samp>, and <samp>-mfpu=</samp>
  options and for <samp>-mhard-float</samp> or <samp>-msoft-float</samp>.  As with
*************** options and for <samp>-mhard-float</samp
*** 879,915 ****
  of the arguments depend on the target.
  </p>
  </dd>
! <dt><code>--with-mode=<var>mode</var></code></dt>
  <dd><p>Specify if the compiler should default to <samp>-marm</samp> or <samp>-mthumb</samp>.
  This option is only supported on ARM targets.
  </p>
  </dd>
! <dt><code>--with-stack-offset=<var>num</var></code></dt>
  <dd><p>This option sets the default for the -mstack-offset=<var>num</var> option,
  and will thus generally also control the setting of this option for
  libraries.  This option is only supported on Epiphany targets.
  </p>
  </dd>
! <dt><code>--with-fpmath=<var>isa</var></code></dt>
  <dd><p>This options sets <samp>-mfpmath=sse</samp> by default and specifies the default
  ISA for floating-point arithmetics.  You can select either &lsquo;<samp>sse</samp>&rsquo; which
  enables <samp>-msse2</samp> or &lsquo;<samp>avx</samp>&rsquo; which enables <samp>-mavx</samp> by default.
  This option is only supported on i386 and x86-64 targets.
  </p>
  </dd>
! <dt><code>--with-fp-32=<var>mode</var></code></dt>
  <dd><p>On MIPS targets, set the default value for the <samp>-mfp</samp> option when using
  the o32 ABI.  The possibilities for <var>mode</var> are:
  </p><dl compact="compact">
! <dt><code>32</code></dt>
  <dd><p>Use the o32 FP32 ABI extension, as with the <samp>-mfp32</samp> command-line
  option.
  </p></dd>
! <dt><code>xx</code></dt>
  <dd><p>Use the o32 FPXX ABI extension, as with the <samp>-mfpxx</samp> command-line
  option.
  </p></dd>
! <dt><code>64</code></dt>
  <dd><p>Use the o32 FP64 ABI extension, as with the <samp>-mfp64</samp> command-line
  option.
  </p></dd>
--- 875,911 ----
  of the arguments depend on the target.
  </p>
  </dd>
! <dt><span><code>--with-mode=<var>mode</var></code></span></dt>
  <dd><p>Specify if the compiler should default to <samp>-marm</samp> or <samp>-mthumb</samp>.
  This option is only supported on ARM targets.
  </p>
  </dd>
! <dt><span><code>--with-stack-offset=<var>num</var></code></span></dt>
  <dd><p>This option sets the default for the -mstack-offset=<var>num</var> option,
  and will thus generally also control the setting of this option for
  libraries.  This option is only supported on Epiphany targets.
  </p>
  </dd>
! <dt><span><code>--with-fpmath=<var>isa</var></code></span></dt>
  <dd><p>This options sets <samp>-mfpmath=sse</samp> by default and specifies the default
  ISA for floating-point arithmetics.  You can select either &lsquo;<samp>sse</samp>&rsquo; which
  enables <samp>-msse2</samp> or &lsquo;<samp>avx</samp>&rsquo; which enables <samp>-mavx</samp> by default.
  This option is only supported on i386 and x86-64 targets.
  </p>
  </dd>
! <dt><span><code>--with-fp-32=<var>mode</var></code></span></dt>
  <dd><p>On MIPS targets, set the default value for the <samp>-mfp</samp> option when using
  the o32 ABI.  The possibilities for <var>mode</var> are:
  </p><dl compact="compact">
! <dt><span><code>32</code></span></dt>
  <dd><p>Use the o32 FP32 ABI extension, as with the <samp>-mfp32</samp> command-line
  option.
  </p></dd>
! <dt><span><code>xx</code></span></dt>
  <dd><p>Use the o32 FPXX ABI extension, as with the <samp>-mfpxx</samp> command-line
  option.
  </p></dd>
! <dt><span><code>64</code></span></dt>
  <dd><p>Use the o32 FP64 ABI extension, as with the <samp>-mfp64</samp> command-line
  option.
  </p></dd>
*************** option.
*** 918,944 ****
  FP32 ABI extension.
  </p>
  </dd>
! <dt><code>--with-odd-spreg-32</code></dt>
  <dd><p>On MIPS targets, set the <samp>-modd-spreg</samp> option by default when using
  the o32 ABI.
  </p>
  </dd>
! <dt><code>--without-odd-spreg-32</code></dt>
  <dd><p>On MIPS targets, set the <samp>-mno-odd-spreg</samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
  <samp>--with-fp-32=64</samp> in order to target the o32 FP64A ABI extension.
  </p>
  </dd>
! <dt><code>--with-nan=<var>encoding</var></code></dt>
  <dd><p>On MIPS targets, set the default encoding convention to use for the
  special not-a-number (NaN) IEEE 754 floating-point data.  The
  possibilities for <var>encoding</var> are:
  </p><dl compact="compact">
! <dt><code>legacy</code></dt>
  <dd><p>Use the legacy encoding, as with the <samp>-mnan=legacy</samp> command-line
  option.
  </p></dd>
! <dt><code>2008</code></dt>
  <dd><p>Use the 754-2008 encoding, as with the <samp>-mnan=2008</samp> command-line
  option.
  </p></dd>
--- 914,940 ----
  FP32 ABI extension.
  </p>
  </dd>
! <dt><span><code>--with-odd-spreg-32</code></span></dt>
  <dd><p>On MIPS targets, set the <samp>-modd-spreg</samp> option by default when using
  the o32 ABI.
  </p>
  </dd>
! <dt><span><code>--without-odd-spreg-32</code></span></dt>
  <dd><p>On MIPS targets, set the <samp>-mno-odd-spreg</samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
  <samp>--with-fp-32=64</samp> in order to target the o32 FP64A ABI extension.
  </p>
  </dd>
! <dt><span><code>--with-nan=<var>encoding</var></code></span></dt>
  <dd><p>On MIPS targets, set the default encoding convention to use for the
  special not-a-number (NaN) IEEE 754 floating-point data.  The
  possibilities for <var>encoding</var> are:
  </p><dl compact="compact">
! <dt><span><code>legacy</code></span></dt>
  <dd><p>Use the legacy encoding, as with the <samp>-mnan=legacy</samp> command-line
  option.
  </p></dd>
! <dt><span><code>2008</code></span></dt>
  <dd><p>Use the 754-2008 encoding, as with the <samp>-mnan=2008</samp> command-line
  option.
  </p></dd>
*************** the legacy encoding, as when neither of
*** 950,999 ****
  <samp>-mnan=legacy</samp> command-line options has been used.
  </p>
  </dd>
! <dt><code>--with-divide=<var>type</var></code></dt>
  <dd><p>Specify how the compiler should generate code for checking for
  division by zero.  This option is only supported on the MIPS target.
  The possibilities for <var>type</var> are:
  </p><dl compact="compact">
! <dt><code>traps</code></dt>
  <dd><p>Division by zero checks use conditional traps (this is the default on
  systems that support conditional traps).
  </p></dd>
! <dt><code>breaks</code></dt>
  <dd><p>Division by zero checks use the break instruction.
  </p></dd>
  </dl>
  
  
  </dd>
! <dt><code>--with-llsc</code></dt>
  <dd><p>On MIPS targets, make <samp>-mllsc</samp> the default when no
  <samp>-mno-llsc</samp> option is passed.  This is the default for
  Linux-based targets, as the kernel will emulate them if the ISA does
  not provide them.
  </p>
  </dd>
! <dt><code>--without-llsc</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-llsc</samp> the default when no
  <samp>-mllsc</samp> option is passed.
  </p>
  </dd>
! <dt><code>--with-synci</code></dt>
  <dd><p>On MIPS targets, make <samp>-msynci</samp> the default when no
  <samp>-mno-synci</samp> option is passed.
  </p>
  </dd>
! <dt><code>--without-synci</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-synci</samp> the default when no
  <samp>-msynci</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--with-lxc1-sxc1</code></dt>
  <dd><p>On MIPS targets, make <samp>-mlxc1-sxc1</samp> the default when no
  <samp>-mno-lxc1-sxc1</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--without-lxc1-sxc1</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-lxc1-sxc1</samp> the default when no
  <samp>-mlxc1-sxc1</samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
--- 946,995 ----
  <samp>-mnan=legacy</samp> command-line options has been used.
  </p>
  </dd>
! <dt><span><code>--with-divide=<var>type</var></code></span></dt>
  <dd><p>Specify how the compiler should generate code for checking for
  division by zero.  This option is only supported on the MIPS target.
  The possibilities for <var>type</var> are:
  </p><dl compact="compact">
! <dt><span><code>traps</code></span></dt>
  <dd><p>Division by zero checks use conditional traps (this is the default on
  systems that support conditional traps).
  </p></dd>
! <dt><span><code>breaks</code></span></dt>
  <dd><p>Division by zero checks use the break instruction.
  </p></dd>
  </dl>
  
  
  </dd>
! <dt><span><code>--with-llsc</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mllsc</samp> the default when no
  <samp>-mno-llsc</samp> option is passed.  This is the default for
  Linux-based targets, as the kernel will emulate them if the ISA does
  not provide them.
  </p>
  </dd>
! <dt><span><code>--without-llsc</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-llsc</samp> the default when no
  <samp>-mllsc</samp> option is passed.
  </p>
  </dd>
! <dt><span><code>--with-synci</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-msynci</samp> the default when no
  <samp>-mno-synci</samp> option is passed.
  </p>
  </dd>
! <dt><span><code>--without-synci</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-synci</samp> the default when no
  <samp>-msynci</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><span><code>--with-lxc1-sxc1</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mlxc1-sxc1</samp> the default when no
  <samp>-mno-lxc1-sxc1</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><span><code>--without-lxc1-sxc1</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-lxc1-sxc1</samp> the default when no
  <samp>-mlxc1-sxc1</samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
*************** pure 32-bit environment and can hold tru
*** 1009,1020 ****
  the address space is accurately set to be 32-bit for o32 and n32.
  </p>
  </dd>
! <dt><code>--with-madd4</code></dt>
  <dd><p>On MIPS targets, make <samp>-mmadd4</samp> the default when no
  <samp>-mno-madd4</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--without-madd4</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-madd4</samp> the default when no
  <samp>-mmadd4</samp> option is passed.  The <code>madd4</code> instruction
  family can be problematic when targeting a combination of cores that
--- 1005,1016 ----
  the address space is accurately set to be 32-bit for o32 and n32.
  </p>
  </dd>
! <dt><span><code>--with-madd4</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mmadd4</samp> the default when no
  <samp>-mno-madd4</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><span><code>--without-madd4</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-madd4</samp> the default when no
  <samp>-mmadd4</samp> option is passed.  The <code>madd4</code> instruction
  family can be problematic when targeting a combination of cores that
*************** only way to ensure compatible code is ge
*** 1025,1044 ****
  a performance penalty.
  </p>
  </dd>
! <dt><code>--with-mips-plt</code></dt>
  <dd><p>On MIPS targets, make use of copy relocations and PLTs.
  These features are extensions to the traditional
  SVR4-based MIPS ABIs and require support from GNU binutils
  and the runtime C library.
  </p>
  </dd>
! <dt><code>--with-stack-clash-protection-guard-size=<var>size</var></code></dt>
  <dd><p>On certain targets this option sets the default stack clash protection guard
  size as a power of two in bytes.  On AArch64 <var>size</var> is required to be either
  12 (4KB) or 16 (64KB).
  </p>
  </dd>
! <dt><code>--enable-__cxa_atexit</code></dt>
  <dd><p>Define if you want to use __cxa_atexit, rather than atexit, to
  register C++ destructors for local statics and global objects.
  This is essential for fully standards-compliant handling of
--- 1021,1040 ----
  a performance penalty.
  </p>
  </dd>
! <dt><span><code>--with-mips-plt</code></span></dt>
  <dd><p>On MIPS targets, make use of copy relocations and PLTs.
  These features are extensions to the traditional
  SVR4-based MIPS ABIs and require support from GNU binutils
  and the runtime C library.
  </p>
  </dd>
! <dt><span><code>--with-stack-clash-protection-guard-size=<var>size</var></code></span></dt>
  <dd><p>On certain targets this option sets the default stack clash protection guard
  size as a power of two in bytes.  On AArch64 <var>size</var> is required to be either
  12 (4KB) or 16 (64KB).
  </p>
  </dd>
! <dt><span><code>--enable-__cxa_atexit</code></span></dt>
  <dd><p>Define if you want to use __cxa_atexit, rather than atexit, to
  register C++ destructors for local statics and global objects.
  This is essential for fully standards-compliant handling of
*************** only available on systems with GNU libc.
*** 1047,1074 ****
  <samp>-fuse-cxa-atexit</samp> to be passed by default.
  </p>
  </dd>
! <dt><code>--enable-gnu-indirect-function</code></dt>
  <dd><p>Define if you want to enable the <code>ifunc</code> attribute.  This option is
  currently only available on systems with GNU libc on certain targets.
  </p>
  </dd>
! <dt><code>--enable-target-optspace</code></dt>
  <dd><p>Specify that target
  libraries should be optimized for code space instead of code speed.
  This is the default for the m32r platform.
  </p>
  </dd>
! <dt><code>--with-cpp-install-dir=<var>dirname</var></code></dt>
  <dd><p>Specify that the user visible <code>cpp</code> program should be installed
  in <samp><var>prefix</var>/<var>dirname</var>/cpp</samp>, in addition to <var>bindir</var>.
  </p>
  </dd>
! <dt><code>--enable-comdat</code></dt>
  <dd><p>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
  </p>
  </dd>
! <dt><code>--enable-initfini-array</code></dt>
  <dd><p>Force the use of sections <code>.init_array</code> and <code>.fini_array</code>
  (instead of <code>.init</code> and <code>.fini</code>) for constructors and
  destructors.  Option <samp>--disable-initfini-array</samp> has the
--- 1043,1070 ----
  <samp>-fuse-cxa-atexit</samp> to be passed by default.
  </p>
  </dd>
! <dt><span><code>--enable-gnu-indirect-function</code></span></dt>
  <dd><p>Define if you want to enable the <code>ifunc</code> attribute.  This option is
  currently only available on systems with GNU libc on certain targets.
  </p>
  </dd>
! <dt><span><code>--enable-target-optspace</code></span></dt>
  <dd><p>Specify that target
  libraries should be optimized for code space instead of code speed.
  This is the default for the m32r platform.
  </p>
  </dd>
! <dt><span><code>--with-cpp-install-dir=<var>dirname</var></code></span></dt>
  <dd><p>Specify that the user visible <code>cpp</code> program should be installed
  in <samp><var>prefix</var>/<var>dirname</var>/cpp</samp>, in addition to <var>bindir</var>.
  </p>
  </dd>
! <dt><span><code>--enable-comdat</code></span></dt>
  <dd><p>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
  </p>
  </dd>
! <dt><span><code>--enable-initfini-array</code></span></dt>
  <dd><p>Force the use of sections <code>.init_array</code> and <code>.fini_array</code>
  (instead of <code>.init</code> and <code>.fini</code>) for constructors and
  destructors.  Option <samp>--disable-initfini-array</samp> has the
*************** will try to guess whether the <code>.ini
*** 1077,1089 ****
  <code>.fini_array</code> sections are supported and, if they are, use them.
  </p>
  </dd>
! <dt><code>--enable-link-mutex</code></dt>
  <dd><p>When building GCC, use a mutex to avoid linking the compilers for
  multiple languages at the same time, to avoid thrashing on build
  systems with limited free memory.  The default is not to use such a mutex.
  </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
  disabled.  This is because it can only be rebuilt if the complete source
--- 1073,1085 ----
  <code>.fini_array</code> sections are supported and, if they are, use them.
  </p>
  </dd>
! <dt><span><code>--enable-link-mutex</code></span></dt>
  <dd><p>When building GCC, use a mutex to avoid linking the compilers for
  multiple languages at the same time, to avoid thrashing on build
  systems with limited free memory.  The default is not to use such a mutex.
  </p>
  </dd>
! <dt><span><code>--enable-maintainer-mode</code></span></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
  disabled.  This is because it can only be rebuilt if the complete source
*************** this.  Note that you need a recent versi
*** 1093,1106 ****
  to do so.
  </p>
  </dd>
! <dt><code>--disable-bootstrap</code></dt>
  <dd><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,
  testing that GCC can compile itself correctly.  If you want to disable
  this process, you can configure with <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--enable-bootstrap</code></dt>
  <dd><p>In special cases, you may want to perform a 3-stage build
  even if the target and host triplets are different.
  This is possible when the host can run code compiled for
--- 1089,1102 ----
  to do so.
  </p>
  </dd>
! <dt><span><code>--disable-bootstrap</code></span></dt>
  <dd><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,
  testing that GCC can compile itself correctly.  If you want to disable
  this process, you can configure with <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-bootstrap</code></span></dt>
  <dd><p>In special cases, you may want to perform a 3-stage build
  even if the target and host triplets are different.
  This is possible when the host can run code compiled for
*************** Starting from GCC 4.2, to do this you ha
*** 1109,1115 ****
  with <samp>--enable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--enable-generated-files-in-srcdir</code></dt>
  <dd><p>Neither the .c and .h files that are generated from Bison and flex nor the
  info manuals and man pages that are built from the .texi files are present
  in the repository development tree.  When building GCC from that development tree,
--- 1105,1111 ----
  with <samp>--enable-bootstrap</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-generated-files-in-srcdir</code></span></dt>
  <dd><p>Neither the .c and .h files that are generated from Bison and flex nor the
  info manuals and man pages that are built from the .texi files are present
  in the repository development tree.  When building GCC from that development tree,
*************** is not a requirement that the users of s
*** 1124,1130 ****
  or makeinfo.
  </p>
  </dd>
! <dt><code>--enable-version-specific-runtime-libs</code></dt>
  <dd><p>Specify
  that runtime libraries should be installed in the compiler specific
  subdirectory (<samp><var>libdir</var>/gcc</samp>) rather than the usual places.  In
--- 1120,1126 ----
  or makeinfo.
  </p>
  </dd>
! <dt><span><code>--enable-version-specific-runtime-libs</code></span></dt>
  <dd><p>Specify
  that runtime libraries should be installed in the compiler specific
  subdirectory (<samp><var>libdir</var>/gcc</samp>) rather than the usual places.  In
*************** 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,
--- 1132,1138 ----
  the remaining libraries.
  </p>
  </dd>
! <dt><span><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></span></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,1160 ****
  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>
  <p>As long as shared library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><code>--with-aix-soname=aix</code></dt>
! <dt><code>--with-aix-soname=both</code></dt>
  <dd><p>A (traditional AIX) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
--- 1143,1156 ----
  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>
  <p>As long as shared library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><span><code>--with-aix-soname=aix</code></span></dt>
! <dt><span><code>--with-aix-soname=both</code></span></dt>
  <dd><p>A (traditional AIX) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
*************** Command</a> reference.
*** 1171,1178 ****
    </li></ul>
  </li></ul>
  </dd>
! <dt><code>--with-aix-soname=both</code></dt>
! <dt><code>--with-aix-soname=svr4</code></dt>
  <dd><p>A (second) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.so.V</samp>&rsquo; filename scheme
--- 1167,1174 ----
    </li></ul>
  </li></ul>
  </dd>
! <dt><span><code>--with-aix-soname=both</code></span></dt>
! <dt><span><code>--with-aix-soname=svr4</code></span></dt>
  <dd><p>A (second) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.so.V</samp>&rsquo; filename scheme
*************** Command</a> reference.
*** 1210,1216 ****
  
  <p>As long as static library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><code>--with-aix-soname=svr4</code></dt>
  <dd><p>A <code>Static Archive Library</code> is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
--- 1206,1212 ----
  
  <p>As long as static library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><span><code>--with-aix-soname=svr4</code></span></dt>
  <dd><p>A <code>Static Archive Library</code> is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
*************** this option is still experimental and no
*** 1242,1254 ****
  <p>Default is the traditional behavior <samp>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;</samp>.
  </p>
  </dd>
! <dt><code>--enable-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that only a particular subset of compilers and
  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>,
--- 1238,1250 ----
  <p>Default is the traditional behavior <samp>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></span></dt>
  <dd><p>Specify that only a particular subset of compilers and
  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>,
*************** exception is <code>jit</code> language,
*** 1264,1270 ****
  <samp>--enable-host-shared</samp> to be included with <code>all</code>.
  </p>
  </dd>
! <dt><code>--enable-stage1-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that a particular subset of compilers and their runtime
  libraries should be built with the system C compiler during stage 1 of
  the bootstrap process, rather than only in later stages with the
--- 1260,1266 ----
  <samp>--enable-host-shared</samp> to be included with <code>all</code>.
  </p>
  </dd>
! <dt><span><code>--enable-stage1-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></span></dt>
  <dd><p>Specify that a particular subset of compilers and their runtime
  libraries should be built with the system C compiler during stage 1 of
  the bootstrap process, rather than only in later stages with the
*************** stage1-bubble all-target</code>, or run
*** 1280,1331 ****
  for the specified languages using <code>make stage1-start check-gcc</code>.
  </p>
  </dd>
! <dt><code>--disable-libada</code></dt>
  <dd><p>Specify that the run-time libraries and tools used by GNAT should not
  be built.  This can be useful for debugging, or for compatibility with
  previous Ada build procedures, when it was required to explicitly
  do a &lsquo;<samp>make -C gcc gnatlib_and_tools</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--disable-libsanitizer</code></dt>
  <dd><p>Specify that the run-time libraries for the various sanitizers should
  not be built.
  </p>
  </dd>
! <dt><code>--disable-libssp</code></dt>
  <dd><p>Specify that the run-time libraries for stack smashing protection
  should not be built or linked against.  On many targets library support
  is provided by the C library instead.
  </p>
  </dd>
! <dt><code>--disable-libquadmath</code></dt>
  <dd><p>Specify that the GCC quad-precision math library should not be built.
  On some systems, the library is required to be linkable when building
  the Fortran front end, unless <samp>--disable-libquadmath-support</samp>
  is used.
  </p>
  </dd>
! <dt><code>--disable-libquadmath-support</code></dt>
  <dd><p>Specify that the Fortran front end and <code>libgfortran</code> do not add
  support for <code>libquadmath</code> on systems supporting it.
  </p>
  </dd>
! <dt><code>--disable-libgomp</code></dt>
  <dd><p>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
  </p>
  </dd>
! <dt><code>--disable-libvtv</code></dt>
  <dd><p>Specify that the run-time libraries used by vtable verification
  should not be built.
  </p>
  </dd>
! <dt><code>--with-dwarf2</code></dt>
  <dd><p>Specify that the compiler should
  use DWARF 2 debugging information as the default.
  </p>
  </dd>
! <dt><code>--with-advance-toolchain=<var>at</var></code></dt>
  <dd><p>On 64-bit PowerPC Linux systems, configure the compiler to use the
  header files, library files, and the dynamic linker from the Advance
  Toolchain release <var>at</var> instead of the default versions that are
--- 1276,1327 ----
  for the specified languages using <code>make stage1-start check-gcc</code>.
  </p>
  </dd>
! <dt><span><code>--disable-libada</code></span></dt>
  <dd><p>Specify that the run-time libraries and tools used by GNAT should not
  be built.  This can be useful for debugging, or for compatibility with
  previous Ada build procedures, when it was required to explicitly
  do a &lsquo;<samp>make -C gcc gnatlib_and_tools</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--disable-libsanitizer</code></span></dt>
  <dd><p>Specify that the run-time libraries for the various sanitizers should
  not be built.
  </p>
  </dd>
! <dt><span><code>--disable-libssp</code></span></dt>
  <dd><p>Specify that the run-time libraries for stack smashing protection
  should not be built or linked against.  On many targets library support
  is provided by the C library instead.
  </p>
  </dd>
! <dt><span><code>--disable-libquadmath</code></span></dt>
  <dd><p>Specify that the GCC quad-precision math library should not be built.
  On some systems, the library is required to be linkable when building
  the Fortran front end, unless <samp>--disable-libquadmath-support</samp>
  is used.
  </p>
  </dd>
! <dt><span><code>--disable-libquadmath-support</code></span></dt>
  <dd><p>Specify that the Fortran front end and <code>libgfortran</code> do not add
  support for <code>libquadmath</code> on systems supporting it.
  </p>
  </dd>
! <dt><span><code>--disable-libgomp</code></span></dt>
  <dd><p>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
  </p>
  </dd>
! <dt><span><code>--disable-libvtv</code></span></dt>
  <dd><p>Specify that the run-time libraries used by vtable verification
  should not be built.
  </p>
  </dd>
! <dt><span><code>--with-dwarf2</code></span></dt>
  <dd><p>Specify that the compiler should
  use DWARF 2 debugging information as the default.
  </p>
  </dd>
! <dt><span><code>--with-advance-toolchain=<var>at</var></code></span></dt>
  <dd><p>On 64-bit PowerPC Linux systems, configure the compiler to use the
  header files, library files, and the dynamic linker from the Advance
  Toolchain release <var>at</var> instead of the default versions that are
*************** intended for the developers of GCC, and
*** 1334,1341 ****
  use.
  </p>
  </dd>
! <dt><code>--enable-targets=all</code></dt>
! <dt><code>--enable-targets=<var>target_list</var></code></dt>
  <dd><p>Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
  These are compilers that are able to generate either 64-bit or 32-bit
  code.  Typically, the corresponding 32-bit target, e.g.
--- 1330,1337 ----
  use.
  </p>
  </dd>
! <dt><span><code>--enable-targets=all</code></span></dt>
! <dt><span><code>--enable-targets=<var>target_list</var></code></span></dt>
  <dd><p>Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
  These are compilers that are able to generate either 64-bit or 32-bit
  code.  Typically, the corresponding 32-bit target, e.g.
*************** Currently, this option only affects spar
*** 1349,1373 ****
  mips-linux and s390-linux.
  </p>
  </dd>
! <dt><code>--enable-default-pie</code></dt>
  <dd><p>Turn on <samp>-fPIE</samp> and <samp>-pie</samp> by default.
  </p>
  </dd>
! <dt><code>--enable-secureplt</code></dt>
  <dd><p>This option enables <samp>-msecure-plt</samp> by default for powerpc-linux.
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code>--enable-default-ssp</code></dt>
  <dd><p>Turn on <samp>-fstack-protector-strong</samp> by default.
  </p>
  </dd>
! <dt><code>--enable-cld</code></dt>
  <dd><p>This option enables <samp>-mcld</samp> by default for 32-bit x86 targets.
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code>--enable-large-address-aware</code></dt>
  <dd><p>The <samp>--enable-large-address-aware</samp> option arranges for MinGW
  executables to be linked using the <samp>--large-address-aware</samp>
  option, that enables the use of more than 2GB of memory.  If GCC is
--- 1345,1369 ----
  mips-linux and s390-linux.
  </p>
  </dd>
! <dt><span><code>--enable-default-pie</code></span></dt>
  <dd><p>Turn on <samp>-fPIE</samp> and <samp>-pie</samp> by default.
  </p>
  </dd>
! <dt><span><code>--enable-secureplt</code></span></dt>
  <dd><p>This option enables <samp>-msecure-plt</samp> by default for powerpc-linux.
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><span><code>--enable-default-ssp</code></span></dt>
  <dd><p>Turn on <samp>-fstack-protector-strong</samp> by default.
  </p>
  </dd>
! <dt><span><code>--enable-cld</code></span></dt>
  <dd><p>This option enables <samp>-mcld</samp> by default for 32-bit x86 targets.
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><span><code>--enable-large-address-aware</code></span></dt>
  <dd><p>The <samp>--enable-large-address-aware</samp> option arranges for MinGW
  executables to be linked using the <samp>--large-address-aware</samp>
  option, that enables the use of more than 2GB of memory.  If GCC is
*************** configured with this option, its effects
*** 1376,1389 ****
  compiler driver.
  </p>
  </dd>
! <dt><code>--enable-win32-registry</code></dt>
! <dt><code>--enable-win32-registry=<var>key</var></code></dt>
! <dt><code>--disable-win32-registry</code></dt>
  <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
--- 1372,1385 ----
  compiler driver.
  </p>
  </dd>
! <dt><span><code>--enable-win32-registry</code></span></dt>
! <dt><span><code>--enable-win32-registry=<var>key</var></code></span></dt>
! <dt><span><code>--disable-win32-registry</code></span></dt>
  <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
*************** by default, and can be disabled by <samp
*** 1395,1410 ****
  option.  This option has no effect on the other hosts.
  </p>
  </dd>
! <dt><code>--nfp</code></dt>
  <dd><p>Specify that the machine does not have a floating point unit.  This
  option only applies to &lsquo;<samp>m68k-sun-sunos<var>n</var></samp>&rsquo;.  On any other
  system, <samp>--nfp</samp> has no effect.
  </p>
  </dd>
! <dt><code>--enable-werror</code></dt>
! <dt><code>--disable-werror</code></dt>
! <dt><code>--enable-werror=yes</code></dt>
! <dt><code>--enable-werror=no</code></dt>
  <dd><p>When you specify this option, it controls whether certain files in the
  compiler are built with <samp>-Werror</samp> in bootstrap stage2 and later.
  If you don&rsquo;t specify it, <samp>-Werror</samp> is turned on for the main
--- 1391,1406 ----
  option.  This option has no effect on the other hosts.
  </p>
  </dd>
! <dt><span><code>--nfp</code></span></dt>
  <dd><p>Specify that the machine does not have a floating point unit.  This
  option only applies to &lsquo;<samp>m68k-sun-sunos<var>n</var></samp>&rsquo;.  On any other
  system, <samp>--nfp</samp> has no effect.
  </p>
  </dd>
! <dt><span><code>--enable-werror</code></span></dt>
! <dt><span><code>--disable-werror</code></span></dt>
! <dt><span><code>--enable-werror=yes</code></span></dt>
! <dt><span><code>--enable-werror=no</code></span></dt>
  <dd><p>When you specify this option, it controls whether certain files in the
  compiler are built with <samp>-Werror</samp> in bootstrap stage2 and later.
  If you don&rsquo;t specify it, <samp>-Werror</samp> is turned on for the main
*************** final releases.  The specific files whic
*** 1413,1421 ****
  controlled by the Makefiles.
  </p>
  </dd>
! <dt><code>--enable-checking</code></dt>
! <dt><code>--disable-checking</code></dt>
! <dt><code>--enable-checking=<var>list</var></code></dt>
  <dd><p>This option controls performing internal consistency checks in the compiler.
  It does not change the generated code, but adds error checking of the
  requested complexity.  This slows down the compiler and may only work
--- 1409,1417 ----
  controlled by the Makefiles.
  </p>
  </dd>
! <dt><span><code>--enable-checking</code></span></dt>
! <dt><span><code>--disable-checking</code></span></dt>
! <dt><span><code>--enable-checking=<var>list</var></code></span></dt>
  <dd><p>This option controls performing internal consistency checks in the compiler.
  It does not change the generated code, but adds error checking of the
  requested complexity.  This slows down the compiler and may only work
*************** expensive and the &lsquo;<samp>df</samp>
*** 1453,1461 ****
  expensive.
  </p>
  </dd>
! <dt><code>--disable-stage1-checking</code></dt>
! <dt><code>--enable-stage1-checking</code></dt>
! <dt><code>--enable-stage1-checking=<var>list</var></code></dt>
  <dd><p>This option affects only bootstrap build.  If no <samp>--enable-checking</samp>
  option is specified the stage1 compiler is built with &lsquo;<samp>yes</samp>&rsquo; checking
  enabled, otherwise the stage1 checking flags are the same as specified by
--- 1449,1457 ----
  expensive.
  </p>
  </dd>
! <dt><span><code>--disable-stage1-checking</code></span></dt>
! <dt><span><code>--enable-stage1-checking</code></span></dt>
! <dt><span><code>--enable-stage1-checking=<var>list</var></code></span></dt>
  <dd><p>This option affects only bootstrap build.  If no <samp>--enable-checking</samp>
  option is specified the stage1 compiler is built with &lsquo;<samp>yes</samp>&rsquo; checking
  enabled, otherwise the stage1 checking flags are the same as specified by
*************** with checking for stage1 enabled, you ca
*** 1467,1474 ****
  to disable checking for the stage1 compiler.
  </p>
  </dd>
! <dt><code>--enable-coverage</code></dt>
! <dt><code>--enable-coverage=<var>level</var></code></dt>
  <dd><p>With this option, the compiler is built to collect self coverage
  information, every time it is run.  This is for internal development
  purposes, and only works when the compiler is being built with gcc.  The
--- 1463,1470 ----
  to disable checking for the stage1 compiler.
  </p>
  </dd>
! <dt><span><code>--enable-coverage</code></span></dt>
! <dt><span><code>--enable-coverage=<var>level</var></code></span></dt>
  <dd><p>With this option, the compiler is built to collect self coverage
  information, every time it is run.  This is for internal development
  purposes, and only works when the compiler is being built with gcc.  The
*************** enable optimization.  When coverage is e
*** 1479,1509 ****
  without optimization.
  </p>
  </dd>
! <dt><code>--enable-gather-detailed-mem-stats</code></dt>
  <dd><p>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
  <samp>-fmem-report</samp>.
  </p>
  </dd>
! <dt><code>--enable-valgrind-annotations</code></dt>
  <dd><p>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
  </p>
  </dd>
! <dt><code>--enable-nls</code></dt>
! <dt><code>--disable-nls</code></dt>
  <dd><p>The <samp>--enable-nls</samp> option enables Native Language Support (NLS),
  which lets GCC output diagnostics in languages other than American
  English.  Native Language Support is enabled by default if not doing a
  canadian cross build.  The <samp>--disable-nls</samp> option disables NLS.
  </p>
  </dd>
! <dt><code>--with-included-gettext</code></dt>
  <dd><p>If NLS is enabled, the <samp>--with-included-gettext</samp> option causes the build
  procedure to prefer its copy of GNU <code>gettext</code>.
  </p>
  </dd>
! <dt><code>--with-catgets</code></dt>
  <dd><p>If NLS is enabled, and if the host lacks <code>gettext</code> but has the
  inferior <code>catgets</code> interface, the GCC build procedure normally
  ignores <code>catgets</code> and instead uses GCC&rsquo;s copy of the GNU
--- 1475,1505 ----
  without optimization.
  </p>
  </dd>
! <dt><span><code>--enable-gather-detailed-mem-stats</code></span></dt>
  <dd><p>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
  <samp>-fmem-report</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-valgrind-annotations</code></span></dt>
  <dd><p>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
  </p>
  </dd>
! <dt><span><code>--enable-nls</code></span></dt>
! <dt><span><code>--disable-nls</code></span></dt>
  <dd><p>The <samp>--enable-nls</samp> option enables Native Language Support (NLS),
  which lets GCC output diagnostics in languages other than American
  English.  Native Language Support is enabled by default if not doing a
  canadian cross build.  The <samp>--disable-nls</samp> option disables NLS.
  </p>
  </dd>
! <dt><span><code>--with-included-gettext</code></span></dt>
  <dd><p>If NLS is enabled, the <samp>--with-included-gettext</samp> option causes the build
  procedure to prefer its copy of GNU <code>gettext</code>.
  </p>
  </dd>
! <dt><span><code>--with-catgets</code></span></dt>
  <dd><p>If NLS is enabled, and if the host lacks <code>gettext</code> but has the
  inferior <code>catgets</code> interface, the GCC build procedure normally
  ignores <code>catgets</code> and instead uses GCC&rsquo;s copy of the GNU
*************** ignores <code>catgets</code> and instead
*** 1511,1522 ****
  build procedure to use the host&rsquo;s <code>catgets</code> in this situation.
  </p>
  </dd>
! <dt><code>--with-libiconv-prefix=<var>dir</var></code></dt>
  <dd><p>Search for libiconv header files in <samp><var>dir</var>/include</samp> and
  libiconv library files in <samp><var>dir</var>/lib</samp>.
  </p>
  </dd>
! <dt><code>--enable-obsolete</code></dt>
  <dd><p>Enable configuration for an obsoleted system.  If you attempt to
  configure GCC for a system (build, host, or target) which has been
  obsoleted, and you do not specify this flag, configure will halt with an
--- 1507,1518 ----
  build procedure to use the host&rsquo;s <code>catgets</code> in this situation.
  </p>
  </dd>
! <dt><span><code>--with-libiconv-prefix=<var>dir</var></code></span></dt>
  <dd><p>Search for libiconv header files in <samp><var>dir</var>/include</samp> and
  libiconv library files in <samp><var>dir</var>/lib</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-obsolete</code></span></dt>
  <dd><p>Enable configuration for an obsoleted system.  If you attempt to
  configure GCC for a system (build, host, or target) which has been
  obsoleted, and you do not specify this flag, configure will halt with an
*************** is removed entirely in the next major re
*** 1527,1538 ****
  forward to maintain the port.
  </p>
  </dd>
! <dt><code>--enable-decimal-float</code></dt>
! <dt><code>--enable-decimal-float=yes</code></dt>
! <dt><code>--enable-decimal-float=no</code></dt>
! <dt><code>--enable-decimal-float=bid</code></dt>
! <dt><code>--enable-decimal-float=dpd</code></dt>
! <dt><code>--disable-decimal-float</code></dt>
  <dd><p>Enable (or disable) support for the C decimal floating point extension
  that is in the IEEE 754-2008 standard.  This is enabled by default only
  on PowerPC, i386, and x86_64 GNU/Linux systems.  Other systems may also
--- 1523,1534 ----
  forward to maintain the port.
  </p>
  </dd>
! <dt><span><code>--enable-decimal-float</code></span></dt>
! <dt><span><code>--enable-decimal-float=yes</code></span></dt>
! <dt><span><code>--enable-decimal-float=no</code></span></dt>
! <dt><span><code>--enable-decimal-float=bid</code></span></dt>
! <dt><span><code>--enable-decimal-float=dpd</code></span></dt>
! <dt><span><code>--disable-decimal-float</code></span></dt>
  <dd><p>Enable (or disable) support for the C decimal floating point extension
  that is in the IEEE 754-2008 standard.  This is enabled by default only
  on PowerPC, i386, and x86_64 GNU/Linux systems.  Other systems may also
*************** format is default on i386 and x86_64 sys
*** 1543,1557 ****
  (densely packed decimal) format is default on PowerPC systems.
  </p>
  </dd>
! <dt><code>--enable-fixed-point</code></dt>
! <dt><code>--disable-fixed-point</code></dt>
  <dd><p>Enable (or disable) support for C fixed-point arithmetic.
  This option is enabled by default for some targets (such as MIPS) which
  have hardware-support for fixed-point operations.  On other targets, you
  may enable this option manually.
  </p>
  </dd>
! <dt><code>--with-long-double-128</code></dt>
  <dd><p>Specify if <code>long double</code> type should be 128-bit by default on selected
  GNU/Linux architectures.  If using <code>--without-long-double-128</code>,
  <code>long double</code> will be by default 64-bit, the same as <code>double</code> type.
--- 1539,1553 ----
  (densely packed decimal) format is default on PowerPC systems.
  </p>
  </dd>
! <dt><span><code>--enable-fixed-point</code></span></dt>
! <dt><span><code>--disable-fixed-point</code></span></dt>
  <dd><p>Enable (or disable) support for C fixed-point arithmetic.
  This option is enabled by default for some targets (such as MIPS) which
  have hardware-support for fixed-point operations.  On other targets, you
  may enable this option manually.
  </p>
  </dd>
! <dt><span><code>--with-long-double-128</code></span></dt>
  <dd><p>Specify if <code>long double</code> type should be 128-bit by default on selected
  GNU/Linux architectures.  If using <code>--without-long-double-128</code>,
  <code>long double</code> will be by default 64-bit, the same as <code>double</code> type.
*************** When neither of these configure options
*** 1560,1567 ****
  64-bit <code>long double</code> otherwise.
  </p>
  </dd>
! <dt><code>--with-long-double-format=ibm</code></dt>
! <dt><code>--with-long-double-format=ieee</code></dt>
  <dd><p>Specify whether <code>long double</code> uses the IBM extended double format
  or the IEEE 128-bit floating point format on PowerPC Linux systems.
  This configuration switch will only work on little endian PowerPC
--- 1556,1563 ----
  64-bit <code>long double</code> otherwise.
  </p>
  </dd>
! <dt><span><code>--with-long-double-format=ibm</code></span></dt>
! <dt><span><code>--with-long-double-format=ieee</code></span></dt>
  <dd><p>Specify whether <code>long double</code> uses the IBM extended double format
  or the IEEE 128-bit floating point format on PowerPC Linux systems.
  This configuration switch will only work on little endian PowerPC
*************** the compiler using the <samp>--with-syst
*** 1590,1608 ****
  will be generated.
  </p>
  </dd>
! <dt><code>--enable-fdpic</code></dt>
  <dd><p>On SH Linux systems, generate ELF FDPIC code.
  </p>
  </dd>
! <dt><code>--with-gmp=<var>pathname</var></code></dt>
! <dt><code>--with-gmp-include=<var>pathname</var></code></dt>
! <dt><code>--with-gmp-lib=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr-include=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr-lib=<var>pathname</var></code></dt>
! <dt><code>--with-mpc=<var>pathname</var></code></dt>
! <dt><code>--with-mpc-include=<var>pathname</var></code></dt>
! <dt><code>--with-mpc-lib=<var>pathname</var></code></dt>
  <dd><p>If you want to build GCC but do not have the GMP library, the MPFR
  library and/or the MPC library installed in a standard location and
  do not have their sources present in the GCC source tree then you
--- 1586,1604 ----
  will be generated.
  </p>
  </dd>
! <dt><span><code>--enable-fdpic</code></span></dt>
  <dd><p>On SH Linux systems, generate ELF FDPIC code.
  </p>
  </dd>
! <dt><span><code>--with-gmp=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-gmp-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-gmp-lib=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpfr=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpfr-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpfr-lib=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpc=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpc-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpc-lib=<var>pathname</var></code></span></dt>
  <dd><p>If you want to build GCC but do not have the GMP library, the MPFR
  library and/or the MPC library installed in a standard location and
  do not have their sources present in the GCC source tree then you
*************** variable (<code>LD_LIBRARY_PATH</code> o
*** 1629,1637 ****
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code>--with-isl=<var>pathname</var></code></dt>
! <dt><code>--with-isl-include=<var>pathname</var></code></dt>
! <dt><code>--with-isl-lib=<var>pathname</var></code></dt>
  <dd><p>If you do not have the isl library installed in a standard location and you
  want to build GCC, you can explicitly specify the directory where it is
  installed (&lsquo;<samp>--with-isl=<var>islinstalldir</var></samp>&rsquo;). The
--- 1625,1633 ----
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><span><code>--with-isl=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-isl-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-isl-lib=<var>pathname</var></code></span></dt>
  <dd><p>If you do not have the isl library installed in a standard location and you
  want to build GCC, you can explicitly specify the directory where it is
  installed (&lsquo;<samp>--with-isl=<var>islinstalldir</var></samp>&rsquo;). The
*************** include and lib options directly.
*** 1645,1651 ****
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code>--with-stage1-ldflags=<var>flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 1 of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.  If <samp>--with-stage1-libs</samp> is not set to a
--- 1641,1647 ----
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><span><code>--with-stage1-ldflags=<var>flags</var></code></span></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 1 of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.  If <samp>--with-stage1-libs</samp> is not set to a
*************** value, then the default is &lsquo;<samp>
*** 1653,1683 ****
  supported.
  </p>
  </dd>
! <dt><code>--with-stage1-libs=<var>libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 1
  of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--with-boot-ldflags=<var>flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If &ndash;with-boot-libs
  is not is set to a value, then the default is
  &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-boot-libs=<var>libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
  </p>
  </dd>
! <dt><code>--with-debug-prefix-map=<var>map</var></code></dt>
  <dd><p>Convert source directory names using <samp>-fdebug-prefix-map</samp> when
  building runtime libraries.  &lsquo;<samp><var>map</var></samp>&rsquo; is a space-separated
  list of maps of the form &lsquo;<samp><var>old</var>=<var>new</var></samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--enable-linker-build-id</code></dt>
  <dd><p>Tells GCC to pass <samp>--build-id</samp> option to the linker for all final
  links (links performed without the <samp>-r</samp> or <samp>--relocatable</samp>
  option), if the linker supports it.  If you specify
--- 1649,1679 ----
  supported.
  </p>
  </dd>
! <dt><span><code>--with-stage1-libs=<var>libs</var></code></span></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 1
  of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><span><code>--with-boot-ldflags=<var>flags</var></code></span></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If &ndash;with-boot-libs
  is not is set to a value, then the default is
  &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-boot-libs=<var>libs</var></code></span></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
  </p>
  </dd>
! <dt><span><code>--with-debug-prefix-map=<var>map</var></code></span></dt>
  <dd><p>Convert source directory names using <samp>-fdebug-prefix-map</samp> when
  building runtime libraries.  &lsquo;<samp><var>map</var></samp>&rsquo; is a space-separated
  list of maps of the form &lsquo;<samp><var>old</var>=<var>new</var></samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--enable-linker-build-id</code></span></dt>
  <dd><p>Tells GCC to pass <samp>--build-id</samp> option to the linker for all final
  links (links performed without the <samp>-r</samp> or <samp>--relocatable</samp>
  option), if the linker supports it.  If you specify
*************** support <samp>--build-id</samp> option,
*** 1686,1706 ****
  <samp>--enable-linker-build-id</samp> option is ignored.  The default is off.
  </p>
  </dd>
! <dt><code>--with-linker-hash-style=<var>choice</var></code></dt>
  <dd><p>Tells GCC to pass <samp>--hash-style=<var>choice</var></samp> option to the
  linker for all final links. <var>choice</var> can be one of
  &lsquo;<samp>sysv</samp>&rsquo;, &lsquo;<samp>gnu</samp>&rsquo;, and &lsquo;<samp>both</samp>&rsquo; where &lsquo;<samp>sysv</samp>&rsquo; is the default.
  </p>
  </dd>
! <dt><code>--enable-gnu-unique-object</code></dt>
! <dt><code>--disable-gnu-unique-object</code></dt>
  <dd><p>Tells GCC to use the gnu_unique_object relocation for C++ template
  static data members and inline function local statics.  Enabled by
  default for a toolchain with an assembler that accepts it and
  GLIBC 2.11 or above, otherwise disabled.
  </p>
  </dd>
! <dt><code>--with-diagnostics-color=<var>choice</var></code></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-color=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
--- 1682,1702 ----
  <samp>--enable-linker-build-id</samp> option is ignored.  The default is off.
  </p>
  </dd>
! <dt><span><code>--with-linker-hash-style=<var>choice</var></code></span></dt>
  <dd><p>Tells GCC to pass <samp>--hash-style=<var>choice</var></samp> option to the
  linker for all final links. <var>choice</var> can be one of
  &lsquo;<samp>sysv</samp>&rsquo;, &lsquo;<samp>gnu</samp>&rsquo;, and &lsquo;<samp>both</samp>&rsquo; where &lsquo;<samp>sysv</samp>&rsquo; is the default.
  </p>
  </dd>
! <dt><span><code>--enable-gnu-unique-object</code></span></dt>
! <dt><span><code>--disable-gnu-unique-object</code></span></dt>
  <dd><p>Tells GCC to use the gnu_unique_object relocation for C++ template
  static data members and inline function local statics.  Enabled by
  default for a toolchain with an assembler that accepts it and
  GLIBC 2.11 or above, otherwise disabled.
  </p>
  </dd>
! <dt><span><code>--with-diagnostics-color=<var>choice</var></code></span></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-color=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
*************** is present and non-empty in the environm
*** 1710,1716 ****
  <samp>-fdiagnostics-color=never</samp> otherwise.
  </p>
  </dd>
! <dt><code>--with-diagnostics-urls=<var>choice</var></code></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-urls=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
--- 1706,1712 ----
  <samp>-fdiagnostics-color=never</samp> otherwise.
  </p>
  </dd>
! <dt><span><code>--with-diagnostics-urls=<var>choice</var></code></span></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-urls=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
*************** or <code>TERM_URLS</code> is present and
*** 1720,1733 ****
  compiler, and <samp>-fdiagnostics-urls=never</samp> otherwise.
  </p>
  </dd>
! <dt><code>--enable-lto</code></dt>
! <dt><code>--disable-lto</code></dt>
  <dd><p>Enable support for link-time optimization (LTO).  This is enabled by
  default, and may be disabled using <samp>--disable-lto</samp>.
  </p>
  </dd>
! <dt><code>--enable-linker-plugin-configure-flags=FLAGS</code></dt>
! <dt><code>--enable-linker-plugin-flags=FLAGS</code></dt>
  <dd><p>By default, linker plugins (such as the LTO plugin) are built for the
  host system architecture.  For the case that the linker has a
  different (but run-time compatible) architecture, these flags can be
--- 1716,1729 ----
  compiler, and <samp>-fdiagnostics-urls=never</samp> otherwise.
  </p>
  </dd>
! <dt><span><code>--enable-lto</code></span></dt>
! <dt><span><code>--disable-lto</code></span></dt>
  <dd><p>Enable support for link-time optimization (LTO).  This is enabled by
  default, and may be disabled using <samp>--disable-lto</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-linker-plugin-configure-flags=FLAGS</code></span></dt>
! <dt><span><code>--enable-linker-plugin-flags=FLAGS</code></span></dt>
  <dd><p>By default, linker plugins (such as the LTO plugin) are built for the
  host system architecture.  For the case that the linker has a
  different (but run-time compatible) architecture, these flags can be
*************** GNU/Linux (&lsquo;<samp>i686-pc-linux-gn
*** 1738,1752 ****
  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'
  </pre></div>
  
  </dd>
! <dt><code>--with-plugin-ld=<var>pathname</var></code></dt>
  <dd><p>Enable an alternate linker to be used at link-time optimization (LTO)
  link time when <samp>-fuse-linker-plugin</samp> is enabled.
  This linker should have plugin support such as gold starting with
--- 1734,1748 ----
  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'
  </pre></div>
  
  </dd>
! <dt><span><code>--with-plugin-ld=<var>pathname</var></code></span></dt>
  <dd><p>Enable an alternate linker to be used at link-time optimization (LTO)
  link time when <samp>-fuse-linker-plugin</samp> is enabled.
  This linker should have plugin support such as gold starting with
*************** version 2.20 or GNU ld starting with ver
*** 1754,1761 ****
  See <samp>-fuse-linker-plugin</samp> for details.
  </p>
  </dd>
! <dt><code>--enable-canonical-system-headers</code></dt>
! <dt><code>--disable-canonical-system-headers</code></dt>
  <dd><p>Enable system header path canonicalization for <samp>libcpp</samp>.  This can
  produce shorter header file paths in diagnostics and dependency output
  files, but these changed header paths may conflict with some compilation
--- 1750,1757 ----
  See <samp>-fuse-linker-plugin</samp> for details.
  </p>
  </dd>
! <dt><span><code>--enable-canonical-system-headers</code></span></dt>
! <dt><span><code>--disable-canonical-system-headers</code></span></dt>
  <dd><p>Enable system header path canonicalization for <samp>libcpp</samp>.  This can
  produce shorter header file paths in diagnostics and dependency output
  files, but these changed header paths may conflict with some compilation
*************** environments.  Enabled by default, and m
*** 1763,1769 ****
  <samp>--disable-canonical-system-headers</samp>.
  </p>
  </dd>
! <dt><code>--with-glibc-version=<var>major</var>.<var>minor</var></code></dt>
  <dd><p>Tell GCC that when the GNU C Library (glibc) is used on the target it
  will be version <var>major</var>.<var>minor</var> or later.  Normally this can
  be detected from the C library&rsquo;s header files, but this option may be
--- 1759,1765 ----
  <samp>--disable-canonical-system-headers</samp>.
  </p>
  </dd>
! <dt><span><code>--with-glibc-version=<var>major</var>.<var>minor</var></code></span></dt>
  <dd><p>Tell GCC that when the GNU C Library (glibc) is used on the target it
  will be version <var>major</var>.<var>minor</var> or later.  Normally this can
  be detected from the C library&rsquo;s header files, but this option may be
*************** However, such configurations may not wor
*** 1776,1793 ****
  configuration in GCC is on a per-multilib basis.
  </p>
  </dd>
! <dt><code>--enable-as-accelerator-for=<var>target</var></code></dt>
  <dd><p>Build as offload target compiler. Specify offload host triple by <var>target</var>.
  </p>
  </dd>
! <dt><code>--enable-offload-targets=<var>target1</var>[=<var>path1</var>],&hellip;,<var>targetN</var>[=<var>pathN</var>]</code></dt>
  <dd><p>Enable offloading to targets <var>target1</var>, &hellip;, <var>targetN</var>.
  Offload compilers are expected to be already installed.  Default search
  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>
  
--- 1772,1789 ----
  configuration in GCC is on a per-multilib basis.
  </p>
  </dd>
! <dt><span><code>--enable-as-accelerator-for=<var>target</var></code></span></dt>
  <dd><p>Build as offload target compiler. Specify offload host triple by <var>target</var>.
  </p>
  </dd>
! <dt><span><code>--enable-offload-targets=<var>target1</var>[=<var>path1</var>],&hellip;,<var>targetN</var>[=<var>pathN</var>]</code></span></dt>
  <dd><p>Enable offloading to targets <var>target1</var>, &hellip;, <var>targetN</var>.
  Offload compilers are expected to be already installed.  Default search
  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,hsa
  </pre></div>
  
*************** built with support for HSA GPU accelerat
*** 1796,1804 ****
  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
--- 1792,1800 ----
  compiler will emit the accelerator code, no path should be specified.
  </p>
  </dd>
! <dt><span><code>--with-hsa-runtime=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-hsa-runtime-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-hsa-runtime-lib=<var>pathname</var></code></span></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
*************** shorthand for
*** 1809,1816 ****
  <samp>--with-hsa-runtime-include=<var>hsainstalldir</var>/include</samp>.
  </p>
  </dd>
! <dt><code>--enable-cet</code></dt>
! <dt><code>--disable-cet</code></dt>
  <dd><p>Enable building target run-time libraries with control-flow
  instrumentation, see <samp>-fcf-protection</samp> option.  When
  <code>--enable-cet</code> is specified target libraries are configured
--- 1805,1812 ----
  <samp>--with-hsa-runtime-include=<var>hsainstalldir</var>/include</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-cet</code></span></dt>
! <dt><span><code>--disable-cet</code></span></dt>
  <dd><p>Enable building target run-time libraries with control-flow
  instrumentation, see <samp>-fcf-protection</samp> option.  When
  <code>--enable-cet</code> is specified target libraries are configured
*************** In this case the target libraries are co
*** 1824,1830 ****
  <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>
  <dd><p>Generate RISC-V attribute by default, in order to record extra build
  information in object.
  </p>
--- 1820,1826 ----
  <samp>-fcf-protection</samp> option.
  </p>
  </dd>
! <dt><span><code>--with-riscv-attribute=&lsquo;<samp>yes</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>default</samp>&rsquo;</code></span></dt>
  <dd><p>Generate RISC-V attribute by default, in order to record extra build
  information in object.
  </p>
*************** target if target binutils supported.
*** 1833,1850 ****
  </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">
! <dt><code>--with-toolexeclibdir=<var>dir</var></code></dt>
  <dd><p>Specify the installation directory for libraries built with a cross compiler.
  The default is <samp>${gcc_tooldir}/lib</samp>.
  </p>
  </dd>
! <dt><code>--with-sysroot</code></dt>
! <dt><code>--with-sysroot=<var>dir</var></code></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the root of a tree that contains
  (a subset of) the root filesystem of the target operating system.
  Target system headers, libraries and run-time object files will be
--- 1829,1845 ----
  </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">
! <dt><span><code>--with-toolexeclibdir=<var>dir</var></code></span></dt>
  <dd><p>Specify the installation directory for libraries built with a cross compiler.
  The default is <samp>${gcc_tooldir}/lib</samp>.
  </p>
  </dd>
! <dt><span><code>--with-sysroot</code></span></dt>
! <dt><span><code>--with-sysroot=<var>dir</var></code></span></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the root of a tree that contains
  (a subset of) the root filesystem of the target operating system.
  Target system headers, libraries and run-time object files will be
*************** option then the compiler will search tha
*** 1868,1875 ****
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><code>--with-build-sysroot</code></dt>
! <dt><code>--with-build-sysroot=<var>dir</var></code></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the system root (see
  <samp>--with-sysroot</samp>) while building target libraries, instead of
  the directory specified with <samp>--with-sysroot</samp>.  This option is
--- 1863,1870 ----
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><span><code>--with-build-sysroot</code></span></dt>
! <dt><span><code>--with-build-sysroot=<var>dir</var></code></span></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the system root (see
  <samp>--with-sysroot</samp>) while building target libraries, instead of
  the directory specified with <samp>--with-sysroot</samp>.  This option is
*************** option then the compiler will search tha
*** 1887,1894 ****
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><code>--with-headers</code></dt>
! <dt><code>--with-headers=<var>dir</var></code></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies that target headers are available when building a cross compiler.
  The <var>dir</var> argument specifies a directory which has the target include
--- 1882,1889 ----
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><span><code>--with-headers</code></span></dt>
! <dt><span><code>--with-headers=<var>dir</var></code></span></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies that target headers are available when building a cross compiler.
  The <var>dir</var> argument specifies a directory which has the target include
*************** pre-exist, the <var>dir</var> argument m
*** 1900,1913 ****
  will be run on these files to make them compatible with GCC.
  </p>
  </dd>
! <dt><code>--without-headers</code></dt>
  <dd><p>Tells GCC not use any target headers from a libc when building a cross
  compiler.  When crossing to GNU/Linux, you need the headers so GCC
  can build the exception handling for libgcc.
  </p>
  </dd>
! <dt><code>--with-libs</code></dt>
! <dt><code>--with-libs=&quot;<var>dir1</var> <var>dir2</var> &hellip; <var>dirN</var>&quot;</code></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies a list of directories which contain the target runtime
  libraries.  These libraries will be copied into the <samp>gcc</samp> install
--- 1895,1908 ----
  will be run on these files to make them compatible with GCC.
  </p>
  </dd>
! <dt><span><code>--without-headers</code></span></dt>
  <dd><p>Tells GCC not use any target headers from a libc when building a cross
  compiler.  When crossing to GNU/Linux, you need the headers so GCC
  can build the exception handling for libgcc.
  </p>
  </dd>
! <dt><span><code>--with-libs</code></span></dt>
! <dt><span><code>--with-libs=&quot;<var>dir1</var> <var>dir2</var> &hellip; <var>dirN</var>&quot;</code></span></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies a list of directories which contain the target runtime
  libraries.  These libraries will be copied into the <samp>gcc</samp> install
*************** directory.  If the directory list is omi
*** 1915,1921 ****
  effect.
  </p>
  </dd>
! <dt><code>--with-newlib</code></dt>
  <dd><p>Specifies that &lsquo;<samp>newlib</samp>&rsquo; is
  being used as the target C library.  This causes <code>__eprintf</code> to be
  omitted from <samp>libgcc.a</samp> on the assumption that it will be provided by
--- 1910,1916 ----
  effect.
  </p>
  </dd>
! <dt><span><code>--with-newlib</code></span></dt>
  <dd><p>Specifies that &lsquo;<samp>newlib</samp>&rsquo; is
  being used as the target C library.  This causes <code>__eprintf</code> to be
  omitted from <samp>libgcc.a</samp> on the assumption that it will be provided by
*************** omitted from <samp>libgcc.a</samp> on th
*** 1923,1929 ****
  </p>
  <a name="avr"></a>
  </dd>
! <dt><code>--with-avrlibc</code></dt>
  <dd><p>Only supported for the AVR target. Specifies that &lsquo;<samp>AVR-Libc</samp>&rsquo; is
  being used as the target C&nbsp; library.  This causes float support
  functions like <code>__addsf3</code> to be omitted from <samp>libgcc.a</samp> on
--- 1918,1924 ----
  </p>
  <a name="avr"></a>
  </dd>
! <dt><span><code>--with-avrlibc</code></span></dt>
  <dd><p>Only supported for the AVR target. Specifies that &lsquo;<samp>AVR-Libc</samp>&rsquo; is
  being used as the target C&nbsp; library.  This causes float support
  functions like <code>__addsf3</code> to be omitted from <samp>libgcc.a</samp> on
*************** RTEMS configurations, which currently us
*** 1934,1941 ****
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
  </p>
  </dd>
! <dt><code>--with-double={32|64|32,64|64,32}</code></dt>
! <dt><code>--with-long-double={32|64|32,64|64,32|double}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify the default layout available for the C/C++ &lsquo;<samp>double</samp>&rsquo;
  and &lsquo;<samp>long double</samp>&rsquo; type, respectively. The following rules apply:
--- 1929,1936 ----
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
  </p>
  </dd>
! <dt><span><code>--with-double={32|64|32,64|64,32}</code></span></dt>
! <dt><span><code>--with-long-double={32|64|32,64|64,32|double}</code></span></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify the default layout available for the C/C++ &lsquo;<samp>double</samp>&rsquo;
  and &lsquo;<samp>long double</samp>&rsquo; type, respectively. The following rules apply:
*************** that &lsquo;<samp>long double</samp>&rsq
*** 1962,1968 ****
  32&nbsp;bits wide.
  </p>
  </dd>
! <dt><code>--with-double-comparison={tristate|bool|libf7}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify what result format is returned by library functions that
  compare 64-bit floating point values (<code>DFmode</code>).
--- 1957,1963 ----
  32&nbsp;bits wide.
  </p>
  </dd>
! <dt><span><code>--with-double-comparison={tristate|bool|libf7}</code></span></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify what result format is returned by library functions that
  compare 64-bit floating point values (<code>DFmode</code>).
*************** The GCC default is &lsquo;<samp>tristate
*** 1970,1976 ****
  implementation returns a boolean instead, set it to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-libf7={libgcc|math|math-symbols|no}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify to which degree code from LibF7 is included in libgcc.
  LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
--- 1965,1971 ----
  implementation returns a boolean instead, set it to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-libf7={libgcc|math|math-symbols|no}</code></span></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify to which degree code from LibF7 is included in libgcc.
  LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
*************** from elsewhere.  This option sets <samp>
*** 1986,1998 ****
  to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-nds32-lib=<var>library</var></code></dt>
  <dd><p>Specifies that <var>library</var> setting is used for building <samp>libgcc.a</samp>.
  Currently, the valid <var>library</var> is &lsquo;<samp>newlib</samp>&rsquo; or &lsquo;<samp>mculib</samp>&rsquo;.
  This option is only supported for the NDS32 target.
  </p>
  </dd>
! <dt><code>--with-build-time-tools=<var>dir</var></code></dt>
  <dd><p>Specifies where to find the set of target tools (assembler, linker, etc.)
  that will be used while building GCC itself.  This option can be useful
  if the directory layouts are different between the system you are building
--- 1981,1993 ----
  to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-nds32-lib=<var>library</var></code></span></dt>
  <dd><p>Specifies that <var>library</var> setting is used for building <samp>libgcc.a</samp>.
  Currently, the valid <var>library</var> is &lsquo;<samp>newlib</samp>&rsquo; or &lsquo;<samp>mculib</samp>&rsquo;.
  This option is only supported for the NDS32 target.
  </p>
  </dd>
! <dt><span><code>--with-build-time-tools=<var>dir</var></code></span></dt>
  <dd><p>Specifies where to find the set of target tools (assembler, linker, etc.)
  that will be used while building GCC itself.  This option can be useful
  if the directory layouts are different between the system you are building
*************** 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
--- 2006,2012 ----
  </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
*************** system or work around a bug in a test.
*** 2020,2040 ****
  script provides three variables for this:
  </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>
  </dd>
--- 2014,2031 ----
  script provides three variables for this:
  </p>
  <dl compact="compact">
! <dt id='index-build_005fconfigargs'><span><code>build_configargs</code><a href='#index-build_005fconfigargs' class='copiable-anchor'> &para;</a></span></dt>
! <dd><p>The contents of this variable is passed to all build <code>configure</code>
  scripts.
  </p>
  </dd>
! <dt id='index-host_005fconfigargs'><span><code>host_configargs</code><a href='#index-host_005fconfigargs' class='copiable-anchor'> &para;</a></span></dt>
! <dd><p>The contents of this variable is passed to all host <code>configure</code>
  scripts.
  </p>
  </dd>
! <dt id='index-target_005fconfigargs'><span><code>target_configargs</code><a href='#index-target_005fconfigargs' class='copiable-anchor'> &para;</a></span></dt>
! <dd><p>The contents of this variable is passed to all target <code>configure</code>
  scripts.
  </p>
  </dd>
*************** scripts.
*** 2044,2056 ****
  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>
  <dl compact="compact">
! <dt><code>--enable-objc-gc</code></dt>
  <dd><p>Specify that an additional variant of the GNU Objective-C runtime library
  is built, using an external build of the Boehm-Demers-Weiser garbage
  collector (<a href="https://www.hboehm.info/gc/">https://www.hboehm.info/gc/</a>).  This library needs to be
--- 2035,2046 ----
  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>
  <dl compact="compact">
! <dt><span><code>--enable-objc-gc</code></span></dt>
  <dd><p>Specify that an additional variant of the GNU Objective-C runtime library
  is built, using an external build of the Boehm-Demers-Weiser garbage
  collector (<a href="https://www.hboehm.info/gc/">https://www.hboehm.info/gc/</a>).  This library needs to be
*************** additional runtime library is skipped wh
*** 2060,2068 ****
  continues.
  </p>
  </dd>
! <dt><code>--with-target-bdw-gc=<var>list</var></code></dt>
! <dt><code>--with-target-bdw-gc-include=<var>list</var></code></dt>
! <dt><code>--with-target-bdw-gc-lib=<var>list</var></code></dt>
  <dd><p>Specify search directories for the garbage collector header files and
  libraries. <var>list</var> is a comma separated list of key value pairs of the
  form &lsquo;<samp><var>multilibdir</var>=<var>path</var></samp>&rsquo;, where the default multilib key
--- 2050,2058 ----
  continues.
  </p>
  </dd>
! <dt><span><code>--with-target-bdw-gc=<var>list</var></code></span></dt>
! <dt><span><code>--with-target-bdw-gc-include=<var>list</var></code></span></dt>
! <dt><span><code>--with-target-bdw-gc-lib=<var>list</var></code></span></dt>
  <dd><p>Specify search directories for the garbage collector header files and
  libraries. <var>list</var> is a comma separated list of key value pairs of the
  form &lsquo;<samp><var>multilibdir</var>=<var>path</var></samp>&rsquo;, where the default multilib key
*************** default locations.
*** 2081,2095 ****
  </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>
  <dl compact="compact">
! <dt><code>--enable-libphobos-checking</code></dt>
! <dt><code>--disable-libphobos-checking</code></dt>
! <dt><code>--enable-libphobos-checking=<var>list</var></code></dt>
  <dd><p>This option controls whether run-time checks and contracts are compiled into
  the D runtime library.  When the option is not specified, the library is built
  with &lsquo;<samp>release</samp>&rsquo; checking.  When the option is specified without a
--- 2071,2084 ----
  </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>
  <dl compact="compact">
! <dt><span><code>--enable-libphobos-checking</code></span></dt>
! <dt><span><code>--disable-libphobos-checking</code></span></dt>
! <dt><span><code>--enable-libphobos-checking=<var>list</var></code></span></dt>
  <dd><p>This option controls whether run-time checks and contracts are compiled into
  the D runtime library.  When the option is not specified, the library is built
  with &lsquo;<samp>release</samp>&rsquo; checking.  When the option is specified without a
*************** libphobos with <samp>-fno-release</samp>
*** 2106,2113 ****
  with an extra option <samp>-fassert</samp>).
  </p>
  </dd>
! <dt><code>--with-libphobos-druntime-only</code></dt>
! <dt><code>--with-libphobos-druntime-only=<var>choice</var></code></dt>
  <dd><p>Specify whether to build only the core D runtime library (druntime), or both
  the core and standard library (phobos) into libphobos.  This is useful for
  targets that have full support in druntime, but no or incomplete support
--- 2095,2102 ----
  with an extra option <samp>-fassert</samp>).
  </p>
  </dd>
! <dt><span><code>--with-libphobos-druntime-only</code></span></dt>
! <dt><span><code>--with-libphobos-druntime-only=<var>choice</var></code></span></dt>
  <dd><p>Specify whether to build only the core D runtime library (druntime), or both
  the core and standard library (phobos) into libphobos.  This is useful for
  targets that have full support in druntime, but no or incomplete support
*************** When the option is specified without a <
*** 2120,2126 ****
  &lsquo;<samp>--with-libphobos-druntime-only=yes</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-target-system-zlib</code></dt>
  <dd><p>Use installed &lsquo;<samp>zlib</samp>&rsquo; rather than that included with GCC.  This needs
  to be available for each multilib variant, unless configured with
  <samp>--with-target-system-zlib=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the GCC&nbsp;included
--- 2109,2115 ----
  &lsquo;<samp>--with-libphobos-druntime-only=yes</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-target-system-zlib</code></span></dt>
  <dd><p>Use installed &lsquo;<samp>zlib</samp>&rsquo; rather than that included with GCC.  This needs
  to be available for each multilib variant, unless configured with
  <samp>--with-target-system-zlib=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the GCC&nbsp;included
diff -Nrcpad gcc-10.3.0/INSTALL/download.html gcc-10.4.0/INSTALL/download.html
*** gcc-10.3.0/INSTALL/download.html	Thu Apr  8 11:57:05 2021
--- gcc-10.4.0/INSTALL/download.html	Tue Jun 28 08:55:11 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Downloading GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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>.
--- 74,81 ----
  
  
  
! <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-10.4.0/INSTALL/finalinstall.html
*** gcc-10.3.0/INSTALL/finalinstall.html	Thu Apr  8 11:57:06 2021
--- gcc-10.4.0/INSTALL/finalinstall.html	Tue Jun 28 08:55:12 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: Final installation">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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
--- 80,87 ----
  
  
  <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
--- 113,120 ----
  <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
--- 133,140 ----
  </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-10.4.0/INSTALL/gfdl.html
*** gcc-10.3.0/INSTALL/gfdl.html	Thu Apr  8 11:57:06 2021
--- gcc-10.4.0/INSTALL/gfdl.html	Tue Jun 28 08:55:13 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: GNU Free Documentation License">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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">
--- 84,90 ----
  
  <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;
--- 517,531 ----
  </p>
  </li></ol>
  
! <div class="unnumberedsec" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents">
  <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>
--- 537,544 ----
  <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>
*************** to permit their use in free software.
*** 564,570 ****
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
! <hr>
  
  
  
--- 558,564 ----
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
! <hr></div>
  
  
  
diff -Nrcpad gcc-10.3.0/INSTALL/index.html gcc-10.4.0/INSTALL/index.html
*** gcc-10.3.0/INSTALL/index.html	Thu Apr  8 11:57:04 2021
--- gcc-10.4.0/INSTALL/index.html	Tue Jun 28 08:55:11 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** Free Documentation License</a>&rdquo;.
*** 149,155 ****
  
  
  
- 
  
  
  
--- 143,148 ----
diff -Nrcpad gcc-10.3.0/INSTALL/old.html gcc-10.4.0/INSTALL/old.html
*** gcc-10.3.0/INSTALL/old.html	Thu Apr  8 11:57:06 2021
--- gcc-10.4.0/INSTALL/old.html	Tue Jun 28 08:55:12 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: Old documentation">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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
--- 124,131 ----
  </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>
--- 151,158 ----
  </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-10.4.0/INSTALL/prerequisites.html
*** gcc-10.3.0/INSTALL/prerequisites.html	Thu Apr  8 11:57:05 2021
--- gcc-10.4.0/INSTALL/prerequisites.html	Tue Jun 28 08:55:11 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Prerequisites for GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 79,94 ****
  
  
  
! <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
--- 73,87 ----
  
  
  
! <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><span>ISO C++98 compiler</span></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
*************** bootstrapping the compiler with such ear
*** 105,111 ****
  discouraged.
  </p>
  </dd>
! <dt>C standard library and headers</dt>
  <dd>
  <p>In order to build GCC, the C standard library and headers must be present
  for all target variants for which target libraries will be built (and not
--- 98,104 ----
  discouraged.
  </p>
  </dd>
! <dt><span>C standard library and headers</span></dt>
  <dd>
  <p>In order to build GCC, the C standard library and headers must be present
  for all target variants for which target libraries will be built (and not
*************** 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).
--- 115,121 ----
  &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
! <dt><span><span id="GNAT-prerequisite"></span>GNAT</span></dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 4.7 or later).
*************** by verifying that &lsquo;<samp>gnatls -v
*** 152,158 ****
  section.
  </p>
  </dd>
! <dt>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash</dt>
  <dd>
  <p>Necessary when running <code>configure</code> because some
  <code>/bin/sh</code> shells have bugs and may crash when configuring the
--- 145,151 ----
  section.
  </p>
  </dd>
! <dt><span>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash</span></dt>
  <dd>
  <p>Necessary when running <code>configure</code> because some
  <code>/bin/sh</code> shells have bugs and may crash when configuring the
*************** environment to your &ldquo;good&rdquo; s
*** 171,210 ****
  work when configuring GCC.
  </p>
  </dd>
! <dt>A POSIX or SVR4 awk</dt>
  <dd>
  <p>Necessary for creating some of the generated source files for GCC.
  If in doubt, use a recent GNU awk version, as some of the older ones
  are broken.  GNU awk version 3.1.5 is known to work.
  </p>
  </dd>
! <dt>GNU binutils</dt>
  <dd>
  <p>Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
  requirements.
  </p>
  </dd>
! <dt>gzip version 1.2.4 (or later) or</dt>
! <dt>bzip2 version 1.0.2 (or later)</dt>
  <dd>
  <p>Necessary to uncompress GCC <code>tar</code> files when source code is
  obtained via HTTPS mirror sites.
  </p>
  </dd>
! <dt>GNU make version 3.80 (or later)</dt>
  <dd>
  <p>You must have GNU make installed to build GCC.
  </p>
  </dd>
! <dt>GNU tar version 1.14 (or later)</dt>
  <dd>
  <p>Necessary (only on some platforms) to untar the source code.  Many
  systems&rsquo; <code>tar</code> programs will also work, only try GNU
  <code>tar</code> if you have problems.
  </p>
  </dd>
! <dt>Perl version between 5.6.1 and 5.6.24</dt>
  <dd>
  <p>Necessary when targeting Darwin, building &lsquo;<samp>libstdc++</samp>&rsquo;,
  and not using <samp>--disable-symvers</samp>.
--- 164,203 ----
  work when configuring GCC.
  </p>
  </dd>
! <dt><span>A POSIX or SVR4 awk</span></dt>
  <dd>
  <p>Necessary for creating some of the generated source files for GCC.
  If in doubt, use a recent GNU awk version, as some of the older ones
  are broken.  GNU awk version 3.1.5 is known to work.
  </p>
  </dd>
! <dt><span>GNU binutils</span></dt>
  <dd>
  <p>Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
  requirements.
  </p>
  </dd>
! <dt><span>gzip version 1.2.4 (or later) or</span></dt>
! <dt><span>bzip2 version 1.0.2 (or later)</span></dt>
  <dd>
  <p>Necessary to uncompress GCC <code>tar</code> files when source code is
  obtained via HTTPS mirror sites.
  </p>
  </dd>
! <dt><span>GNU make version 3.80 (or later)</span></dt>
  <dd>
  <p>You must have GNU make installed to build GCC.
  </p>
  </dd>
! <dt><span>GNU tar version 1.14 (or later)</span></dt>
  <dd>
  <p>Necessary (only on some platforms) to untar the source code.  Many
  systems&rsquo; <code>tar</code> programs will also work, only try GNU
  <code>tar</code> if you have problems.
  </p>
  </dd>
! <dt><span>Perl version between 5.6.1 and 5.6.24</span></dt>
  <dd>
  <p>Necessary when targeting Darwin, building &lsquo;<samp>libstdc++</samp>&rsquo;,
  and not using <samp>--disable-symvers</samp>.
*************** support libraries then using those packa
*** 233,239 ****
  install the libraries.
  </p>
  <dl compact="compact">
! <dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  If a GMP source distribution is found in a
  subdirectory of your GCC sources named <samp>gmp</samp>, it will be built
--- 226,232 ----
  install the libraries.
  </p>
  <dl compact="compact">
! <dt><span>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)</span></dt>
  <dd>
  <p>Necessary to build GCC.  If a GMP source distribution is found in a
  subdirectory of your GCC sources named <samp>gmp</samp>, it will be built
*************** The in-tree build is only supported with
*** 245,251 ****
  download_prerequisites installs.
  </p>
  </dd>
! <dt>MPFR Library version 3.1.0 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="https://www.mpfr.org">https://www.mpfr.org</a>.  If an MPFR source distribution is found
--- 238,244 ----
  download_prerequisites installs.
  </p>
  </dd>
! <dt><span>MPFR Library version 3.1.0 (or later)</span></dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="https://www.mpfr.org">https://www.mpfr.org</a>.  If an MPFR source distribution is found
*************** The in-tree build is only supported with
*** 258,264 ****
  download_prerequisites installs.
  </p>
  </dd>
! <dt>MPC Library version 1.0.1 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="http://www.multiprecision.org/mpc/">http://www.multiprecision.org/mpc/</a>.  If an MPC source distribution
--- 251,257 ----
  download_prerequisites installs.
  </p>
  </dd>
! <dt><span>MPC Library version 1.0.1 (or later)</span></dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="http://www.multiprecision.org/mpc/">http://www.multiprecision.org/mpc/</a>.  If an MPC source distribution
*************** The in-tree build is only supported with
*** 271,277 ****
  download_prerequisites installs.
  </p>
  </dd>
! <dt>isl Library version 0.15 or later.</dt>
  <dd>
  <p>Necessary to build GCC with the Graphite loop optimizations.
  It can be downloaded from <a href="https://gcc.gnu.org/pub/gcc/infrastructure/">https://gcc.gnu.org/pub/gcc/infrastructure/</a>.
--- 264,270 ----
  download_prerequisites installs.
  </p>
  </dd>
! <dt><span>isl Library version 0.15 or later.</span></dt>
  <dd>
  <p>Necessary to build GCC with the Graphite loop optimizations.
  It can be downloaded from <a href="https://gcc.gnu.org/pub/gcc/infrastructure/">https://gcc.gnu.org/pub/gcc/infrastructure/</a>.
*************** option should be used if isl is not inst
*** 282,288 ****
  search path.
  </p>
  </dd>
! <dt>zstd Library.</dt>
  <dd>
  <p>Necessary to build GCC with zstd compression used for LTO bytecode.
  The library is searched in your default library patch search.
--- 275,281 ----
  search path.
  </p>
  </dd>
! <dt><span>zstd Library.</span></dt>
  <dd>
  <p>Necessary to build GCC with zstd compression used for LTO bytecode.
  The library is searched in your default library patch search.
*************** Alternatively, the <samp>--with-zstd</sa
*** 291,307 ****
  </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>
  <dd>
  <p>Necessary when modifying <samp>configure.ac</samp>, <samp>aclocal.m4</samp>, etc.
  to regenerate <samp>configure</samp> and <samp>config.in</samp> files.
  </p>
  </dd>
! <dt>automake version 1.15.1</dt>
  <dd>
  <p>Necessary when modifying a <samp>Makefile.am</samp> file to regenerate its
  associated <samp>Makefile.in</samp>.
--- 284,299 ----
  </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><span>autoconf version 2.69</span></dt>
! <dt><span>GNU m4 version 1.4.6 (or later)</span></dt>
  <dd>
  <p>Necessary when modifying <samp>configure.ac</samp>, <samp>aclocal.m4</samp>, etc.
  to regenerate <samp>configure</samp> and <samp>config.in</samp> files.
  </p>
  </dd>
! <dt><span>automake version 1.15.1</span></dt>
  <dd>
  <p>Necessary when modifying a <samp>Makefile.am</samp> file to regenerate its
  associated <samp>Makefile.in</samp>.
*************** to a newer version, please update all th
*** 317,344 ****
  to the latest released version.
  </p>
  </dd>
! <dt>gettext version 0.14.5 (or later)</dt>
  <dd>
  <p>Needed to regenerate <samp>gcc.pot</samp>.
  </p>
  </dd>
! <dt>gperf version 2.7.2 (or later)</dt>
  <dd>
  <p>Necessary when modifying <code>gperf</code> input files, e.g.
  <samp>gcc/cp/cfns.gperf</samp> to regenerate its associated header file, e.g.
  <samp>gcc/cp/cfns.h</samp>.
  </p>
  </dd>
! <dt>DejaGnu 1.4.4</dt>
! <dt>Expect</dt>
! <dt>Tcl</dt>
  <dd>
  <p>Necessary to run the GCC testsuite; see the section on testing for
  details.
  </p>
  </dd>
! <dt>autogen version 5.5.4 (or later) and</dt>
! <dt>guile version 1.4.1 (or later)</dt>
  <dd>
  <p>Necessary to regenerate <samp>fixinc/fixincl.x</samp> from
  <samp>fixinc/inclhack.def</samp> and <samp>fixinc/*.tpl</samp>.
--- 309,336 ----
  to the latest released version.
  </p>
  </dd>
! <dt><span>gettext version 0.14.5 (or later)</span></dt>
  <dd>
  <p>Needed to regenerate <samp>gcc.pot</samp>.
  </p>
  </dd>
! <dt><span>gperf version 2.7.2 (or later)</span></dt>
  <dd>
  <p>Necessary when modifying <code>gperf</code> input files, e.g.
  <samp>gcc/cp/cfns.gperf</samp> to regenerate its associated header file, e.g.
  <samp>gcc/cp/cfns.h</samp>.
  </p>
  </dd>
! <dt><span>DejaGnu 1.4.4</span></dt>
! <dt><span>Expect</span></dt>
! <dt><span>Tcl</span></dt>
  <dd>
  <p>Necessary to run the GCC testsuite; see the section on testing for
  details.
  </p>
  </dd>
! <dt><span>autogen version 5.5.4 (or later) and</span></dt>
! <dt><span>guile version 1.4.1 (or later)</span></dt>
  <dd>
  <p>Necessary to regenerate <samp>fixinc/fixincl.x</samp> from
  <samp>fixinc/inclhack.def</samp> and <samp>fixinc/*.tpl</samp>.
*************** details.
*** 349,355 ****
  <samp>Makefile.tpl</samp> and <samp>Makefile.def</samp>.
  </p>
  </dd>
! <dt>Flex version 2.5.4 (or later)</dt>
  <dd>
  <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
--- 341,347 ----
  <samp>Makefile.tpl</samp> and <samp>Makefile.def</samp>.
  </p>
  </dd>
! <dt><span>Flex version 2.5.4 (or later)</span></dt>
  <dd>
  <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
*************** files are not included in the version-co
*** 358,364 ****
  They are included in releases.
  </p>
  </dd>
! <dt>Texinfo version 4.7 (or later)</dt>
  <dd>
  <p>Necessary for running <code>makeinfo</code> when modifying <samp>*.texi</samp>
  files to test your changes.
--- 350,356 ----
  They are included in releases.
  </p>
  </dd>
! <dt><span>Texinfo version 4.7 (or later)</span></dt>
  <dd>
  <p>Necessary for running <code>makeinfo</code> when modifying <samp>*.texi</samp>
  files to test your changes.
*************** generated output files are not included
*** 372,403 ****
  included in releases.
  </p>
  </dd>
! <dt>TeX (any working version)</dt>
  <dd>
  <p>Necessary for running <code>texi2dvi</code> and <code>texi2pdf</code>, which
  are used when running <code>make dvi</code> or <code>make pdf</code> to create
  DVI or PDF files, respectively.
  </p>
  </dd>
! <dt>Sphinx version 1.0 (or later)</dt>
  <dd>
  <p>Necessary to regenerate <samp>jit/docs/_build/texinfo</samp> from the <samp>.rst</samp>
  files in the directories below <samp>jit/docs</samp>.
  </p>
  </dd>
! <dt>git (any version)</dt>
! <dt>SSH (any version)</dt>
  <dd>
  <p>Necessary to access the source repository.  Public releases and weekly
  snapshots of the development sources are also available via HTTPS.
  </p>
  </dd>
! <dt>GNU diffutils version 2.7 (or later)</dt>
  <dd>
  <p>Useful when submitting patches for the GCC source code.
  </p>
  </dd>
! <dt>patch version 2.5.4 (or later)</dt>
  <dd>
  <p>Necessary when applying patches, created with <code>diff</code>, to one&rsquo;s
  own sources.
--- 364,395 ----
  included in releases.
  </p>
  </dd>
! <dt><span>TeX (any working version)</span></dt>
  <dd>
  <p>Necessary for running <code>texi2dvi</code> and <code>texi2pdf</code>, which
  are used when running <code>make dvi</code> or <code>make pdf</code> to create
  DVI or PDF files, respectively.
  </p>
  </dd>
! <dt><span>Sphinx version 1.0 (or later)</span></dt>
  <dd>
  <p>Necessary to regenerate <samp>jit/docs/_build/texinfo</samp> from the <samp>.rst</samp>
  files in the directories below <samp>jit/docs</samp>.
  </p>
  </dd>
! <dt><span>git (any version)</span></dt>
! <dt><span>SSH (any version)</span></dt>
  <dd>
  <p>Necessary to access the source repository.  Public releases and weekly
  snapshots of the development sources are also available via HTTPS.
  </p>
  </dd>
! <dt><span>GNU diffutils version 2.7 (or later)</span></dt>
  <dd>
  <p>Useful when submitting patches for the GCC source code.
  </p>
  </dd>
! <dt><span>patch version 2.5.4 (or later)</span></dt>
  <dd>
  <p>Necessary when applying patches, created with <code>diff</code>, to one&rsquo;s
  own sources.
diff -Nrcpad gcc-10.3.0/INSTALL/specific.html gcc-10.4.0/INSTALL/specific.html
*** gcc-10.3.0/INSTALL/specific.html	Thu Apr  8 11:57:05 2021
--- gcc-10.4.0/INSTALL/specific.html	Tue Jun 28 08:55:11 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Host/Target specific installation notes for GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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.
--- 80,90 ----
  
  
  
! <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>.
--- 174,180 ----
  
  <!-- -------- 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
--- 211,227 ----
  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
--- 239,257 ----
  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
--- 259,265 ----
  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>
--- 276,289 ----
  </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>
--- 291,297 ----
  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>
--- 305,311 ----
  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>
*************** for a list of CRIS-specific options.
*** 331,341 ****
  </p>
  <p>There are a few different CRIS targets:
  </p><dl compact="compact">
! <dt><code>cris-axis-elf</code></dt>
  <dd><p>Mainly for monolithic embedded systems.  Includes a multilib for the
  &lsquo;<samp>v10</samp>&rsquo; core used in &lsquo;<samp>ETRAX 100 LX</samp>&rsquo;.
  </p></dd>
! <dt><code>cris-axis-linux-gnu</code></dt>
  <dd><p>A GNU/Linux port for the CRIS architecture, currently targeting
  &lsquo;<samp>ETRAX 100 LX</samp>&rsquo; by default.
  </p></dd>
--- 314,324 ----
  </p>
  <p>There are a few different CRIS targets:
  </p><dl compact="compact">
! <dt><span><code>cris-axis-elf</code></span></dt>
  <dd><p>Mainly for monolithic embedded systems.  Includes a multilib for the
  &lsquo;<samp>v10</samp>&rsquo; core used in &lsquo;<samp>ETRAX 100 LX</samp>&rsquo;.
  </p></dd>
! <dt><span><code>cris-axis-linux-gnu</code></span></dt>
  <dd><p>A GNU/Linux port for the CRIS architecture, currently targeting
  &lsquo;<samp>ETRAX 100 LX</samp>&rsquo; by default.
  </p></dd>
*************** 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
--- 330,336 ----
  <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.
--- 339,350 ----
  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>.
--- 379,390 ----
  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
--- 395,401 ----
  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>
--- 445,451 ----
  <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>
--- 455,461 ----
  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>
--- 558,570 ----
  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
--- 573,579 ----
  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>
--- 597,603 ----
  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.
--- 615,621 ----
  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>
--- 628,634 ----
  </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>
  
--- 645,652 ----
  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>
  
--- 657,664 ----
  <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
--- 708,714 ----
  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
--- 722,741 ----
  </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;
--- 792,823 ----
  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
--- 843,861 ----
  <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>
--- 895,905 ----
  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
--- 918,932 ----
  </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,
--- 944,966 ----
  <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.
--- 974,1058 ----
  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>
  
--- 1067,1074 ----
  &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.
--- 1125,1131 ----
  </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
--- 1137,1143 ----
  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>.
--- 1157,1171 ----
  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.
--- 1178,1217 ----
  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
--- 1244,1257 ----
  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
--- 1264,1270 ----
  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
--- 1279,1285 ----
  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
--- 1288,1303 ----
  <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
--- 1312,1329 ----
  <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>
--- 1337,1343 ----
  <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
--- 1351,1363 ----
  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
--- 1400,1406 ----
  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-10.4.0/INSTALL/test.html
*** gcc-10.3.0/INSTALL/test.html	Thu Apr  8 11:57:05 2021
--- gcc-10.4.0/INSTALL/test.html	Tue Jun 28 08:55:12 2022
***************
*** 1,5 ****
--- 1,8 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
+ <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <!-- Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
*************** A GNU Manual
*** 19,27 ****
  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>
  
  <meta name="description" content="Installing GCC: Testing">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  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}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {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}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** 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
--- 77,85 ----
  
  
  
! <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
*************** installed are not in the <code>PATH</cod
*** 115,122 ****
  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>
  
--- 109,116 ----
  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
--- 120,127 ----
  </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,145 ****
  <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
--- 133,139 ----
  <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>
! <div class="section" id="How-can-you-run-the-testsuite-on-selected-tests_003f">
  <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
*************** 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
--- 148,162 ----
  <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>
  
--- 164,171 ----
  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,188 ****
  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
--- 176,183 ----
  output of &lsquo;<samp>make check</samp>&rsquo; into a file and look at the
  &lsquo;<samp>Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! </div>
! <div class="section" id="Passing-options-and-running-multiple-testsuites">
  <h3 class="section">Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
*************** output of &lsquo;<samp>make check</samp>
*** 190,197 ****
  &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
--- 185,192 ----
  &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 \
--- 197,212 ----
  <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;.
--- 219,226 ----
  <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
--- 232,245 ----
  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,259 ****
  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>
--- 248,255 ----
  typing <code>echo</code> before the example given here.)
  </p>
  
! </div>
! <div class="section" id="How-to-interpret-test-results">
  <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>
*************** 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>
  
--- 274,288 ----
  be fixed in future releases.
  </p>
  
! </div>
! <div class="section" id="Submitting-test-results">
  <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>
  
*************** messages may be automatically processed.
*** 306,312 ****
  
  
  
! <hr>
  
  
  
--- 303,309 ----
  
  
  
! <hr></div>
  
  
  
diff -Nrcpad gcc-10.3.0/LAST_UPDATED gcc-10.4.0/LAST_UPDATED
*** gcc-10.3.0/LAST_UPDATED	Thu Apr  8 11:57:04 2021
--- gcc-10.4.0/LAST_UPDATED	Tue Jun 28 08:55:10 2022
***************
*** 1 ****
! Obtained from git: releases/gcc-10.3.0 revision f00b5710a30f22efc3171c393e56aeb335c3cd39
--- 1 ----
! Obtained from git: releases/gcc-10.4.0 revision 7ff47281ce4f3699185b06a3430968eac2a5b0c6
diff -Nrcpad gcc-10.3.0/MD5SUMS gcc-10.4.0/MD5SUMS
*** gcc-10.3.0/MD5SUMS	Thu Apr  8 12:11:19 2021
--- gcc-10.4.0/MD5SUMS	Tue Jun 28 09:30:46 2022
***************
*** 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-10.4.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
*************** d0320fa024ec213600ee6dbf489abd65  .gitig
*** 17,43 ****
  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
--- 17,43 ----
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 6e7d6bcd61dea315e12af0b56eaf1bea  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 1c06be8540b85795303faa5186490767  INSTALL/binaries.html
! c3c421e1c73564e683d1912d09178242  INSTALL/build.html
! ed9ba39fdc63a2c6092487b0ecdb5f78  INSTALL/configure.html
! 71b5494f672ef1888930edbb71defbd9  INSTALL/download.html
! c330cfa3e24009efc60c76ccc852dbaa  INSTALL/finalinstall.html
! 5786c31173880a7a14d83c2d3469623f  INSTALL/gfdl.html
! f3c79bc16b7f61da06b42ab5d45d9925  INSTALL/index.html
! 45da48552d767144c7c59ff8cf78163b  INSTALL/old.html
! e30701af4d51f69b6bb1c2eb4b70711e  INSTALL/prerequisites.html
! e3f671ef58c9848f53e7ae123906a98c  INSTALL/specific.html
! 85740f94bacd79a7e69e888dce5753de  INSTALL/test.html
! d81345babf6e5cf3fa2115c5e7d28be5  LAST_UPDATED
  4ccaac378eb9cf3fbfcf750473e826bf  MAINTAINERS
! cb5edf936597133b680860a5356159ae  Makefile.def
! 27d6ec707037e5745ef2223c4a3f9360  Makefile.in
! bd1b01226d5dc4857f2b8305a5af47b3  Makefile.tpl
! 87b17f3b6a94ff1d4ecfd1450bcfa7c0  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
  500b9244caa7a7ab23ece1db37efa76d  compile
*************** a657821f65bab77f4fbf3a75cdee6da9  ar-lib
*** 45,51 ****
  b3c47a769a12794661355d3a5dcfeb3d  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  8172cd8087c91ceb16a61a62c9d71ff1  config.sub
! fc128a0e0bd42c97d9eff3690c7073ab  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
--- 45,51 ----
  b3c47a769a12794661355d3a5dcfeb3d  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  8172cd8087c91ceb16a61a62c9d71ff1  config.sub
! ff300defbb21c05e66db2573ed302d6c  config/ChangeLog
  0fcd4badfe2a2191778bdf5ab94aa40c  config/acinclude.m4
  2ea0edfde0ce5ce69b49317a5650f048  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
*************** b75e527c5a9b8dcbcfb1ac321fa244eb  config
*** 102,110 ****
  ad4ae2c604a57f5e6f53c9edc33ea1f1  config/math.m4
  e10d31316e03a59577fb4ed90a670914  config/mh-alpha-linux
  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
--- 102,110 ----
  ad4ae2c604a57f5e6f53c9edc33ea1f1  config/math.m4
  e10d31316e03a59577fb4ed90a670914  config/mh-alpha-linux
  3fe4a576c2a75736c8da3af1d0824217  config/mh-cygwin
! 12e3e525300d7b265337e9f2dfe0e2af  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
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 142,150 ****
  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
--- 142,150 ----
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! c009c02627e52f6da0c8e85d79a04f79  configure
! 6503b83e283382eb3d11c0fbe430c34d  configure.ac
! 87122df5eb58027c04140aeebf9d7cc2  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
  8498c0cdfe3f444ad6f540ec9e11cbec  contrib/analyze_brprob.py
*************** b2981d3447dc8ffa5f08bc99277ae76c  contri
*** 169,188 ****
  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
--- 169,188 ----
  defd641fcdf03f433c3ad5d4b2520e36  contrib/dg-extract-results.py
  599fa78ff6918c41e353990adf0a1ba4  contrib/dg-extract-results.sh
  87ae17b353cdce921324af084ec6dcb1  contrib/dglib.pm
! a42f879fdbecf0f66d193cfc5180b1fe  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
! 65b703f51d9d7a7a56a649493e3c01b9  contrib/gcc-changelog/git_check_commit.py
! 2d072240bf6de5330608921ceb48bf43  contrib/gcc-changelog/git_commit.py
! 722c96f24ea159413d6e28c6b91a7a23  contrib/gcc-changelog/git_email.py
! a9d06dee58845e59874c5f7fc58e2824  contrib/gcc-changelog/git_repository.py
! b83d69417c5c5d4f873dd999bef094e1  contrib/gcc-changelog/git_update_version.py
! 1fcc4f18e9f9043eaea6c3c990d96d9b  contrib/gcc-changelog/setup.cfg
! 7226a8eee0694eb4b73201404f06a8c2  contrib/gcc-changelog/test_email.py
! 0dce8095b39e54d03c1207f021756933  contrib/gcc-changelog/test_patches.txt
! afffb72bfd599fda78278a8c0dccfc16  contrib/gcc-git-customization.sh
  dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
  55236e85d8087042189b701cd05d84be  contrib/gcc_build
  cecb3852a568945e2a82691f772f2d47  contrib/gcc_update
*************** cecb3852a568945e2a82691f772f2d47  contri
*** 190,199 ****
  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
--- 190,203 ----
  379516c6635d267f661c36248d59ccef  contrib/gennews
  25491ab6a5a68d252f311f5a9c6f4c8f  contrib/git-add-user-branch.sh
  7e5729822d673e846d5ef26e1f1b8591  contrib/git-add-vendor-branch.sh
! db81d221a5a18e48788ee8984d453248  contrib/git-backport.py
! e9bac7c82bdb5f92b354d9da854d463b  contrib/git-commit-mklog.py
! 6400831de9622ded00d0c379a99db5a4  contrib/git-descr.sh
  6277756eb398a594323d2d2b52962046  contrib/git-fetch-vendor.sh
+ e462c83bdf45bf6e9b434d18fa9f66e4  contrib/git-fix-changelog.py
+ 6996a054c7e7aaf9f27737c3d6f2518c  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! c7f6fe6c2886edd657b64d6ee05262b7  contrib/header-tools/ChangeLog
  4f7d3bf5dd67c6b144a7a1ea0bb4127b  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
*************** a7318fa2f0580c3a0d5dd4b14e4d0e0d  contri
*** 212,223 ****
  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
--- 216,228 ----
  bd49fb9eed9f0a5344158e834dd6f468  contrib/mark_spam.py
  60407a5923bc8a58a2d9b937c3f2cea8  contrib/mklog
  fc4965b52fd7de27941bf5183aa1ece9  contrib/mklog.pl
+ 81f9fb8a95f10dbb07425dfd3fd50782  contrib/mklog.py
  0fb5c8c3cd465d8bd57b55b2548c683a  contrib/paranoia.cc
  a34668cfad9dec733354503fbc67fb24  contrib/patch_tester.sh
  87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
! 6bc8415291f74dbbb7994622ca9a7b28  contrib/prerequisites.md5
! 2a7fbcbf9b708ecbd31408646f9dd122  contrib/prerequisites.sha512
! 7a3164f3afed40fdc6289071ec5aca65  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
--- 281,287 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 2edae0119f89aea8085486504b8914cd  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,296 ****
--- 296,302 ----
  dc562ddb86567c65e82953825713dc4b  contrib/regression/site.exp
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
  39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
+ 9cc97e47ccced46f47870847040e0d41  contrib/test_mklog.py
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
  c650e776de65a2de80bbfb0033641805  contrib/test_summary
  45bd745cf293127fa6b729c7b58cf11f  contrib/testsuite-management/validate_failures.py
*************** a0d12be401961a2557883b7c09dc71eb  contri
*** 315,321 ****
  b99476ca28b484080c3ec5916a9ca3f9  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! 08fc830135f3010c5228f15c70980d25  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
--- 321,327 ----
  b99476ca28b484080c3ec5916a9ca3f9  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! be878b66d84566f7311647d0ae4cfec9  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
*************** a5e817d35ded04a0fb03999b50c0e89e  fixinc
*** 455,466 ****
  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
--- 461,472 ----
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  1ce72cc651f747fb639548ef7ebd9343  gcc/ABOUT-GCC-NLS
! 959d4d8d0d62b27e19b225036300d43d  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 17166c1f8c276093a40eedac8d6d75e0  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** 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
--- 498,515 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 769f536015269fbdf03c8015200f7fe6  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  c33c506f2d95a3607de3aa55eaa5eb38  gcc/LANGUAGES
! 365223403361093e36494fce430db6a3  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  b23b4202aae37888126f4e47d40b8fe9  gcc/README.Portability
  44bcc4f9a8803d3dcc72b217421afef0  gcc/acinclude.m4
  6879fc308101ea4a52d17fb89e463ec2  gcc/aclocal.m4
! cec47ed31dbe78ce8e7ccdae94fc0621  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** e886b111487071a30a52edb616ff7844  gcc/ad
*** 527,533 ****
  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
--- 533,539 ----
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  a2eeb36cd2de35ce6a808c67a61edb7e  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! b2f3a3fee7de11832c6c38c4405a318c  gcc/ada/Makefile.rtl
  c637ca4a2cfb622775cc0a3d4dda2d79  gcc/ada/ada_get_targ.adb
  7158476d6ec9f1793d5a4e9424816307  gcc/ada/adabkend.adb
  1aac6e8e4b3ba0e7abd9f7bbe98d4923  gcc/ada/adabkend.ads
*************** b63b26f9f195b10007d4d0348382a447  gcc/ad
*** 738,749 ****
  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
--- 744,755 ----
  2908ab49ce5308abc2c54cd072a4631a  gcc/ada/fname-uf.ads
  b741ad98e35e6ebcae2a1d4be9320160  gcc/ada/fname.adb
  a312f72cf2c70dd6fb07d318a099caf1  gcc/ada/fname.ads
! 6f6169b5f29bc43ae3a776c5082fd26c  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
! c2c94df3820530f78c56cbd0adbc50c1  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
*************** f7677c298cb2f4c70ecf284c7e18cb80  gcc/ad
*** 751,765 ****
  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
--- 757,771 ----
  51c95420b5900990141d2e5705582197  gcc/ada/gcc-interface/ada.h
  2962facaf5b9ac376e7335599112a520  gcc/ada/gcc-interface/config-lang.in
  786d39e3fbc38a2dc96917857f9a69ef  gcc/ada/gcc-interface/cuintp.c
! 432a7bab330256558cda6f5dd59cf8b4  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
! 90746cfd3e148d7a8b290a188db0454d  gcc/ada/gcc-interface/misc.c
  56f626f9ee32eba8c2d478af39425ad5  gcc/ada/gcc-interface/targtyps.c
! 678a7820fa672c5b15aab20a650860f7  gcc/ada/gcc-interface/trans.c
! 11200fdccd8840ab48b31262780847b9  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
*************** e1ca9ed16396d47d0eff95d527cd8e18  gcc/ad
*** 1728,1735 ****
  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
--- 1734,1741 ----
  91d676c4dc6498442bd8d7565bf39cc5  gcc/ada/libgnat/g-sehash.ads
  1624078f3925d91971a098d53f86b317  gcc/ada/libgnat/g-sercom.adb
  4f55a5239115ec59e8d5647145d7d093  gcc/ada/libgnat/g-sercom.ads
! aae0fc1e45d6f4dd1a1faa8fe062dccd  gcc/ada/libgnat/g-sercom__linux.adb
! 986c86d54c3526e23ce20151c5792b20  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
*************** bf97b7f8e6545014e1b279ad0d620c83  gcc/ad
*** 2694,2700 ****
  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
--- 2700,2706 ----
  08e25cef2848d0514379987946b6ca3a  gcc/align.h
  c7cfb5850156fc8afe634563752d95a3  gcc/alloc-pool.c
  ee7f0ff2bee3fadcdee7a89a27acb71b  gcc/alloc-pool.h
! fd6fa16abdfb5ce97cc21cc642d83357  gcc/analyzer/ChangeLog
  77136ce027aa1a848c103c22012f4981  gcc/analyzer/analysis-plan.cc
  1584264752cd434a0710f577b0dfa611  gcc/analyzer/analysis-plan.h
  3a2b0d98433a870a9557dfdce96f66a9  gcc/analyzer/analyzer-logging.cc
*************** d8c9aff92756dfb6bea625ad3991c6f4  gcc/an
*** 2743,2749 ****
  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
--- 2749,2755 ----
  7fb862b48294ed6a0179f1e37e83e379  gcc/analyzer/supergraph.cc
  ae73cd9f21809df4536e52b1d362b94e  gcc/analyzer/supergraph.h
  d311c2d7a0c5f301689d9840cec0a20a  gcc/array-traits.h
! 855ead6b447cf993204b6628d0513f9f  gcc/asan.c
  a2de801369a7f06644ece2df336529f1  gcc/asan.h
  3c3a488f40039a38b62b0caa467387ae  gcc/attribs.c
  f2cd647934c49497538483a30bc682d0  gcc/attribs.h
*************** cf933c0e81e09ddcb384623eb6340d83  gcc/bb
*** 2757,2763 ****
  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
--- 2763,2769 ----
  f7b5eb17081fd36741c37e2fbae07255  gcc/bitmap.c
  18c3da3fab8c769aed98aa69a2c72082  gcc/bitmap.h
  aa400898daf96dc45fdd63ffc02e43d9  gcc/brig-builtins.def
! 0920e3ba1195fa5dd5240b3526e643f8  gcc/brig/ChangeLog
  bab627d6443c1a1acc88dda9e6f6e709  gcc/brig/Make-lang.in
  0b230923a4c2c3af6b4d7ce68c999bb7  gcc/brig/brig-builtins.h
  774fc3b6756369a6579cac74f64c911f  gcc/brig/brig-c.h
*************** df2479761de54ed90a98e54f52fb50a2  gcc/br
*** 2800,2814 ****
  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
--- 2806,2820 ----
  0d1a99c0e202b680ee608858701de0bf  gcc/brig/lang.opt
  d3b19e5439825080ec7a33d50b0068df  gcc/builtin-attrs.def
  1be7e27be346b87cc4427d231810a8eb  gcc/builtin-types.def
! a53ce347ce39cc70a2a3d5766b7f96fc  gcc/builtins.c
  cf87a3e542aeb250ce5b39931e715fcd  gcc/builtins.def
  2ecd530cb8252acf75726a9febdb44db  gcc/builtins.h
! c646c5262db075984549d61c313049e1  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
! 74df8819e134ed94a6f76aee45691be3  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
*************** d530c6ebfb68d3bd9fe3c35dd52a29d7  gcc/c-
*** 2820,2827 ****
  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
--- 2826,2833 ----
  db7fa238fdc72d487e426feaa3986e9c  gcc/c-family/c-indentation.h
  dcd39370d6f1e36700fef1b5aa18a096  gcc/c-family/c-lex.c
  6063463a86506d7e2ef869a98478b588  gcc/c-family/c-objc.h
! d7b5ce63e2d17d365b4c9df54d71812b  gcc/c-family/c-omp.c
! 56450435eeb15eddb606a41f9275843d  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
*************** fc14322847441cb3667440bc87da3b52  gcc/c-
*** 2834,2891 ****
  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
--- 2840,2897 ----
  bfd80d2148106bac1d05ea7c2b9411eb  gcc/c-family/c-target-def.h
  7242045cebb1e11387757265413d5251  gcc/c-family/c-target.def
  2aa125b135889f7a2184e6c67397c8cb  gcc/c-family/c-target.h
! 4dabf2f881abddea3da78ee7e6183342  gcc/c-family/c-ubsan.c
  7cf91a9589ce350e33ba2b47bb1a325f  gcc/c-family/c-ubsan.h
! a16f65c4674ae5b380d92da924474737  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
! 1773a72e335345c533ee83230093bc6c  gcc/c-family/stub-objc.c
! 1a7731d4bfb67c7da261f41829b96acd  gcc/c/ChangeLog
  f6929faadb53d5b9422199d45077f288  gcc/c/Make-lang.in
  126762639055b3b1b86e5d430aa07db1  gcc/c/c-aux-info.c
  e377a3eb832170e8484be76c63e35536  gcc/c/c-convert.c
! ae73260f7f31cd757ce5b67753166db3  gcc/c/c-decl.c
  84043724eb03cdccb58873ba5e72c627  gcc/c/c-errors.c
! 16ea34c512c7204006823f83b79fe4e2  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
! 6a6621ec4fe222932af0d82dc0c81dee  gcc/c/c-parser.c
  4e3cefb76c65add787d87d68751b1a07  gcc/c/c-parser.h
  e9fc075c7931d694d1792d63eec30240  gcc/c/c-tree.h
! 37e5340a4ac0aaf918f5ec5b75fd62f2  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
! 6558d621bf33b5754a1ef82e76896a9a  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
! b8a8f13511b2a58a92f6f88180478eed  gcc/cfganal.c
! 323bf37c29b5e56113ce2ef1d930f53f  gcc/cfganal.h
  7545937c02f6a985cafd1ad68106530a  gcc/cfgbuild.c
  4ff5cc9e540613e104f270326dd30463  gcc/cfgbuild.h
! 33a44e2340091ed8621bc5b7e3c328cd  gcc/cfgcleanup.c
  18ca8e6def454559f2c04130a898ff21  gcc/cfgcleanup.h
! 720eb37f143179272470440fcaeff12d  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
! a22a3e9d60cd0079f4733d7dd1915514  gcc/cfgloopmanip.c
  6a4905a41957ce68c581d825ff73ae29  gcc/cfgloopmanip.h
! 5691f9c73e1fc552483d9c1525f1d14c  gcc/cfgrtl.c
  ec3e0c9cceed5cde000334a220d1fb2a  gcc/cfgrtl.h
  fde53137ba6eba2024e5c18c0b6cf126  gcc/cgraph.c
  05f66df4f4ad23469d802fc5ff9e9407  gcc/cgraph.h
*************** c8a675e59007c17716a525659fa4904d  gcc/cg
*** 2897,2907 ****
  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
--- 2903,2913 ----
  d0e4b33a4a5624ecb4ca454449ef852e  gcc/collect-utils.h
  0fc4bd5d5c5774e66988336e4b5da75d  gcc/collect2-aix.c
  3f91bd4f770d3a36dc9dcc035a254573  gcc/collect2-aix.h
! 2c92b736e958aa2dcd5c71384b3a8f0c  gcc/collect2.c
  416d4b94dd438f73c5d439f42105f2a3  gcc/collect2.h
  1d67c810e859fc4af8b450c90ce93a11  gcc/color-macros.h
  b538ae3d0d86d85d58477d0cc2edbf19  gcc/combine-stack-adj.c
! 26fde0cdafc3da303dd91149cd47723f  gcc/combine.c
  6942b61cb20a34ce213644d097e91820  gcc/common.md
  b78ea8df7546699f60269afaca5aae97  gcc/common.opt
  97a5a84c9ace6b2ba5208d4acb473e94  gcc/common/common-target-def.h
*************** b3d591cea0deadd38b0d7aeb3fc223bb  gcc/co
*** 2912,2918 ****
  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
--- 2918,2924 ----
  dd0800ae529a87b856ad6cab3b19894a  gcc/common/config/aarch64/aarch64-common.c
  69cef0f9f5ee9931e966f2907b72f942  gcc/common/config/alpha/alpha-common.c
  3a7a42cf8770939ad560368ce7b5ceed  gcc/common/config/arc/arc-common.c
! f540c59632a78867e67b9df30c4e4ced  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
*************** b6ac968b98e4025b822753e1d568a650  gcc/co
*** 2947,2953 ****
  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
--- 2953,2959 ----
  fb62a9b3bd5b370edeb53b5722c08a17  gcc/common/config/pdp11/pdp11-common.c
  5f5ebca1101d7c14bcf4b39f4d08c6ca  gcc/common/config/pru/pru-common.c
  8fcf8800dae6a18e3535975bc489da02  gcc/common/config/riscv/riscv-common.c
! a21db83893f45c61034972e85523d043  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
*************** f6304e65f3c00a6a7aee195a39898f89  gcc/co
*** 2962,2976 ****
  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
--- 2968,2982 ----
  8763e6612b3f349cca760cdd8226cddd  gcc/compare-elim.c
  eab0d30a85465c8dfc86d5de1b6fbeb0  gcc/conditions.h
  c8cbeab9205c5362586933dd45dc115e  gcc/config.build
! eca8c32a5be6aa0aba025ab99916e2ca  gcc/config.gcc
  a0c075b392f11951c415335bdf967308  gcc/config.host
! d9c4940061976b97581faa8115f9bfcd  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
  e100e878ef9a128dbaa8fac0c0a00e15  gcc/config/aarch64/aarch64-arches.def
! d75c36a73f9ff426af3f63ac06794e39  gcc/config/aarch64/aarch64-bti-insert.c
  1e3e6b0b4deb9c4d7ba78b9ec8c7947e  gcc/config/aarch64/aarch64-builtins.c
  bebc910ea9166916d8b120860ae862a1  gcc/config/aarch64/aarch64-c.c
! de9ebc7005b685ffa5a8754830fa7028  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
*************** c97840e68a2ac3eb338dc9997e7112d1  gcc/co
*** 2985,2994 ****
  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
--- 2991,3000 ----
  1bac6726009e0fb8452d559c3dd88e26  gcc/config/aarch64/aarch64-option-extensions.def
  fd4267a19928f12195f70461bd5c06c4  gcc/config/aarch64/aarch64-opts.h
  2d3c997a76ea54fd838b69085e0a560b  gcc/config/aarch64/aarch64-passes.def
! f0e19bf0c86ab241e64aea2f4367970c  gcc/config/aarch64/aarch64-protos.h
  2e263bfa2bd1fea303c37b04ce63eb60  gcc/config/aarch64/aarch64-simd-builtin-types.def
  e861473941caf234c01ffa1712e67f68  gcc/config/aarch64/aarch64-simd-builtins.def
! fd2dcbb95040d8a0e635b8cb46251cd6  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
*************** c94e53bffc6998ca046cd74f9e425e17  gcc/co
*** 2999,3015 ****
  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
--- 3005,3021 ----
  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
! ac068e7497068050097af24e4524dbb7  gcc/config/aarch64/aarch64-sve-builtins.cc
  abe33f03faf6cbe321c71fda2b57c71f  gcc/config/aarch64/aarch64-sve-builtins.def
! b53d707b8cc17ce59ac8a275884d1584  gcc/config/aarch64/aarch64-sve-builtins.h
! c915fa6ccecc9e8fb1a19fce69f6c8eb  gcc/config/aarch64/aarch64-sve.md
  58533c161280fb74a5faa1e7075cbe1c  gcc/config/aarch64/aarch64-sve2.md
! d98960533bbb2b4e07e4fa669fc35414  gcc/config/aarch64/aarch64-tune.md
  9be3f2134bfe0325d95ce4a8e484c851  gcc/config/aarch64/aarch64-tuning-flags.def
  284de9008114b29d2b3367a8907cabc9  gcc/config/aarch64/aarch64-vxworks.h
! fb97bded2ac89424a5d5c2f8ecfd7f81  gcc/config/aarch64/aarch64.c
  77a28f34959cb9ea2609b78316480192  gcc/config/aarch64/aarch64.h
! 68c064fb342fc1947a5d1cc7c47401b4  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
*************** ff5515782bebfacde1bf17e778e04041  gcc/co
*** 3020,3033 ****
  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
--- 3026,3039 ----
  41e1078f5e43cdccd458276f86672c4a  gcc/config/aarch64/biarchilp32.h
  471db9bdb42726f9e3088620822281cc  gcc/config/aarch64/biarchlp64.h
  60c2456961e828947f52d5537ffe1906  gcc/config/aarch64/check-sve-md.awk
! d6b4bcd1976a38548f182f79fee0a58e  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
! 9677fac82c3e25a1be66e6b2ccf4496d  gcc/config/aarch64/iterators.md
  52269092b238bd0fa24fc117eda7723a  gcc/config/aarch64/predicates.md
  6e7d185b76922a87ae30f2ff6904d3e0  gcc/config/aarch64/rtems.h
  f9247c06e620b0ace1c5a3e9d3bb9000  gcc/config/aarch64/saphira.md
*************** db564cb2c0bc4b2857f5ebf9d38cd02e  gcc/co
*** 3043,3050 ****
  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
--- 3049,3056 ----
  8b41b511cae4a5eda35cf19755875d5a  gcc/config/aarch64/x-aarch64
  e9e4d81fc187a540c984a3ce5dc325bc  gcc/config/alpha/alpha-modes.def
  026f7d9567ff45cd1b720c805c4166ab  gcc/config/alpha/alpha-passes.def
! 1db8fe53b3f970d2f44e03698215ec44  gcc/config/alpha/alpha-protos.h
! 2db66a0988c9516fdbfa7f4f3eda9379  gcc/config/alpha/alpha.c
  060573fbeb69cb096ba9000df08c9fa5  gcc/config/alpha/alpha.h
  3d507b04ba3ecd3a41f026d0a54249c7  gcc/config/alpha/alpha.md
  d2a1e933711cdd89259088df02f012e0  gcc/config/alpha/alpha.opt
*************** d2a1e933711cdd89259088df02f012e0  gcc/co
*** 3052,3058 ****
  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
--- 3058,3064 ----
  b89f73a9c09d3ae0c2102ac2330c9f0c  gcc/config/alpha/driver-alpha.c
  8b496a97d747b2fc282727956439a44b  gcc/config/alpha/elf.h
  299ed6183ec12328d99c153093498919  gcc/config/alpha/elf.opt
! 3cdd3e623d90cd598e24104979b7097f  gcc/config/alpha/ev4.md
  b149a535086d9346d88c7a31def27955  gcc/config/alpha/ev5.md
  6ef0f265f9771e296aa49fc5694fad8d  gcc/config/alpha/ev6.md
  5ab4c9b093a15c9811b166e04eb1d5d8  gcc/config/alpha/linux-elf.h
*************** ee3c42e137c21bc92c7ac820b6fa3da6  gcc/co
*** 3110,3117 ****
  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
--- 3116,3123 ----
  789272e082287ba7b243d2a476de4ff8  gcc/config/arm/aout.h
  db9303cf7fad69237031669a87f71c28  gcc/config/arm/arm-builtins.c
  26b09ae8b9e7598fbdda3b4070bf9a6f  gcc/config/arm/arm-builtins.h
! 12d3955d0dd4d8f67c4de78e1abd2463  gcc/config/arm/arm-c.c
! 0e4902397736bc6fab236d480a836190  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
*************** f727e7f536ad470bb7174f2d00c1d383  gcc/co
*** 3119,3132 ****
  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
--- 3125,3138 ----
  39ccfe33ac81fb206aaf667df7b2c117  gcc/config/arm/arm-ldmstm.ml
  043e53fa28fccc5766c5e2523369b020  gcc/config/arm/arm-modes.def
  631077b70ffe49ffbd25cf0e6b76f611  gcc/config/arm/arm-opts.h
! 00a3f3ab038a79387b0dcc5405ad6fab  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
! 5ed79c04b5cfe3a8749ae5871092cdb5  gcc/config/arm/arm.c
! 5de4c25f31969be20c58357ce7fd654e  gcc/config/arm/arm.h
! 10caf6e1cd4e0af00f9fe616be60e8c1  gcc/config/arm/arm.md
! 0dbb24ac1d0e8cd8b1fc21a2893fa1e5  gcc/config/arm/arm.opt
  92534062d244959bdcd18adc5d185c7f  gcc/config/arm/arm1020e.md
  d314474c68aa5c3ecc398062a2d4045e  gcc/config/arm/arm1026ejs.md
  f741dee0384ab03d7bb6e6805d83abd2  gcc/config/arm/arm1136jfs.md
*************** f9fb2d4803a2675c9141c038ebb45808  gcc/co
*** 3138,3144 ****
  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
--- 3144,3150 ----
  8de388e84807fa4a309ab2274386319b  gcc/config/arm/arm_cde_builtins.def
  faee14128e82903dd6092173e3fcda2d  gcc/config/arm/arm_cmse.h
  121941743291dc22afc42381af34d1dd  gcc/config/arm/arm_fp16.h
! 961f911bd9190f0959a3db98dd35ad7b  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
*************** cba5bb06b2f0f89c465a6fb784d72b9d  gcc/co
*** 3175,3181 ****
  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
--- 3181,3187 ----
  3c7373e9263cc887cb228df9590c94a5  gcc/config/arm/fmp626.md
  5a8b13a7aebcfe4ac43f21ef13a86eb9  gcc/config/arm/freebsd.h
  e28e0b5c3f8e0830c41307fb9251b5b7  gcc/config/arm/fuchsia-elf.h
! f0fdc45f9f3f14074fa32ca74e2e04f8  gcc/config/arm/iterators.md
  df8c33c1d92134bde92a14a80201a228  gcc/config/arm/iwmmxt.md
  51132ff11484e3ee066f07d796cf06ba  gcc/config/arm/iwmmxt2.md
  ead04158f0c4135990f48a876b12e071  gcc/config/arm/ldmstm.md
*************** ead04158f0c4135990f48a876b12e071  gcc/co
*** 3186,3192 ****
  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
--- 3192,3198 ----
  77bbfc52cec114473e16cc45525b78da  gcc/config/arm/marvell-f-iwmmxt.md
  593ec45cb06c77ec6517d3934663cfae  gcc/config/arm/marvell-pj4.md
  f2cd1bfe02c6d51cc3919ec1fa7a85dd  gcc/config/arm/mmintrin.h
! 738a081764b8f9ea0ef68625865ec8c8  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
*************** da8d328015b35fd5b8cd1ba383e1bbb9  gcc/co
*** 3195,3201 ****
  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
--- 3201,3207 ----
  f4a86e4fad5b4973b6cdca4114088d5b  gcc/config/arm/rtems.h
  07678b5b8ea0443225b9349ebcaba1fa  gcc/config/arm/semi.h
  34fc812393e7e05c8e7e3044b3c9ad70  gcc/config/arm/symbian.h
! 33dc28d26c672264e77e4951edeff7e0  gcc/config/arm/sync.md
  0b44c661a4fcd03784c39188a20363be  gcc/config/arm/t-aprofile
  3f25dc0f49eface5117308ae09e426cd  gcc/config/arm/t-arm
  47884ae185b6b2d1b47c57cb9841ee7f  gcc/config/arm/t-arm-elf
*************** e3950ec6bd159734835f8f8fb143efc6  gcc/co
*** 3205,3215 ****
  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
--- 3211,3221 ----
  1abbe7e2dff325a461f882d81ae9d0d8  gcc/config/arm/t-linux-eabi
  5a9bee6531255caed891c4648c339693  gcc/config/arm/t-multilib
  ba3c742cee71d778250a3ac85590c93f  gcc/config/arm/t-phoenix
! a02da217c2da7b0f39431dcd3caa445f  gcc/config/arm/t-rmprofile
  c434e99f4fc47fd32ffab26fbeea8464  gcc/config/arm/t-rtems
  7bc6fe2692f1011c28fb08ded09ee55e  gcc/config/arm/t-symbian
  57111571363907f82abf9b0499b22c32  gcc/config/arm/t-vxworks
! 2e50a24471ce341611dc8203a682af30  gcc/config/arm/thumb1.md
  de2a944122b1cd99e997917c51aa833e  gcc/config/arm/thumb2.md
  7ebef77d5257a6de55452d0d2378a2b4  gcc/config/arm/types.md
  1700cb3de0abc236d3c38a45bf6e0ee1  gcc/config/arm/uclinux-eabi.h
*************** de2a944122b1cd99e997917c51aa833e  gcc/co
*** 3218,3224 ****
  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
--- 3224,3230 ----
  e2b8dca0f9e3facba6e03b04aaa95212  gcc/config/arm/unknown-elf.h
  e075c37998acb90c1a6e11045354aa0d  gcc/config/arm/unspecs.md
  984d0d34f4810c9a0d7c03d9e7ac1bc7  gcc/config/arm/vec-common.md
! ad57d8e130d7c0f8941667442dc97203  gcc/config/arm/vfp.md
  d6b75cda88705fcb9bb24c973403a79f  gcc/config/arm/vfp11.md
  754d278d0f42efc5ea21a852701d64b7  gcc/config/arm/vxworks.h
  a1e68ca6527d721ca9b727becce9d101  gcc/config/arm/vxworks.opt
*************** ce868686e5f0526d7cb6ca055c30072f  gcc/co
*** 3274,3280 ****
  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
--- 3280,3286 ----
  f2e59c4eaca2034d760cec596b3fae20  gcc/config/bpf/bpf-opts.h
  364a22d645333f30b748ccf0d9221523  gcc/config/bpf/bpf-protos.h
  91a90aafb26f37313f9a0591c2902c55  gcc/config/bpf/bpf.c
! 9f23aec73a40c57f4034dea83c4d6562  gcc/config/bpf/bpf.h
  55217985dd2ce7ec8091abab7a4720da  gcc/config/bpf/bpf.md
  2827201f2e549ab03b7fde6f23f62680  gcc/config/bpf/bpf.opt
  3dd8832965cd44da084efa8bbf5de946  gcc/config/bpf/constraints.md
*************** ffa667e7d265230909c154a94cfad363  gcc/co
*** 3354,3368 ****
  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
--- 3360,3374 ----
  eb052b8d01bcc66ec2df70dc2fa9613d  gcc/config/csky/t-csky-elf
  1026cc867bc5f4fec333b6048114963e  gcc/config/csky/t-csky-linux
  9d4fc2f4697ee7f8aa6e4217e0a103fb  gcc/config/csky/t-sysroot-suffix
! 8245011ff3cdae26a5ae84a60707dff0  gcc/config/darwin-c.c
! 6a83956230938a0685d626fa3eee5341  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
! 69e84f6bd9c7313a9ae6893ebbb889d7  gcc/config/darwin-sections.def
! c0064773917e263b67dfab93c68f7e1f  gcc/config/darwin.c
! 5390518b50e0a967755fd4eef1cf1ae4  gcc/config/darwin.h
! d8c7012757245e277db480f7772ef9f7  gcc/config/darwin.opt
  22ef11e2b04fb7440bd17058f103745f  gcc/config/dbx.h
  3af56e740de05f1af8d575ff940e0c76  gcc/config/dbxcoff.h
  ad58fb2666fa68834ef425036a33e796  gcc/config/dbxelf.h
*************** ba03bec1b5b42479d08bafd50432bfb6  gcc/co
*** 3484,3492 ****
  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
--- 3490,3498 ----
  e858463aa18e541bb926ca013db00830  gcc/config/i386/avx512bitalgintrin.h
  e6896c24e23ba9bb59f65f7eea7d814b  gcc/config/i386/avx512bwintrin.h
  3b517b5dacb8f1ca675f305ca1f76828  gcc/config/i386/avx512cdintrin.h
! 4d349589fc15e2c60bfdee5d3ea9ee5c  gcc/config/i386/avx512dqintrin.h
  43bf9d7c74dc1f9290224f374d6f469d  gcc/config/i386/avx512erintrin.h
! 771f52a45ba3b64196206910c46e06d0  gcc/config/i386/avx512fintrin.h
  6c19b1782d389e155a239932643ccfe5  gcc/config/i386/avx512ifmaintrin.h
  ac74b24ec10ff04dae6993be08616614  gcc/config/i386/avx512ifmavlintrin.h
  8da3bc9ec56da67548b118f1ba2e3a35  gcc/config/i386/avx512pfintrin.h
*************** bfcd3e6fd3b7ade4cad500b08492030c  gcc/co
*** 3532,3540 ****
  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
--- 3538,3546 ----
  1b2dce662c4d7271e97d8cf48d79873b  gcc/config/i386/cygwin-w64.h
  a920dc760960c1ed02cc219a810b4b04  gcc/config/i386/cygwin.h
  a7241e61e02eb91d00b8df74f7331812  gcc/config/i386/cygwin.opt
! b4c2e389d8862b616eaacf6eebc6b176  gcc/config/i386/darwin.h
! 8783d472c4a43c5b43260471ceff1ef9  gcc/config/i386/darwin32-biarch.h
! 03fa7de16c00878c50253b1a0bdaf09c  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
*************** a272fd26d6041bc4515b6896c00c0a72  gcc/co
*** 3567,3577 ****
  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
--- 3573,3583 ----
  7c05e9e74dcafa1fbe9d1675caea25f6  gcc/config/i386/i386-builtin-types.awk
  ec29ccbc1d26aeb4e0ec2191e078e9ba  gcc/config/i386/i386-builtin-types.def
  5ab7f189cd953b5beee2d6f0c6edeb15  gcc/config/i386/i386-builtin.def
! 3defe9579bdfc8b73dade84e73328e2f  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
! 8946ee03d1901bacff463415edc68bf9  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
*************** b3e9baa55fb8746055ad945e5fbe38b8  gcc/co
*** 3581,3589 ****
  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
--- 3587,3595 ----
  924c47602884a3f6573760aad71baf6c  gcc/config/i386/i386-opts.h
  942113f86f41f99e3b37fa463f0e076d  gcc/config/i386/i386-passes.def
  f674f550c6872e8fdd37477ce2bff33d  gcc/config/i386/i386-protos.h
! b470de4780b8f45c3d9420def4d34691  gcc/config/i386/i386.c
  0e4f35e441236b8bea5403cb6607d1ef  gcc/config/i386/i386.h
! 433ba8c53844ebf5c9dd4240e81baaca  gcc/config/i386/i386.md
  f766df0b13effe8c4f16b6991a53f84d  gcc/config/i386/i386.opt
  c58df180ee34f0f28fc135d0ec98da21  gcc/config/i386/i386elf.h
  f936c0131591cc882312338cc5f1c56f  gcc/config/i386/ia32intrin.h
*************** b536f806896e5b96bf8c7ca33d07c56e  gcc/co
*** 3638,3648 ****
  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
--- 3644,3654 ----
  f6b0a9b38fc804adcd8a679d1d1a298d  gcc/config/i386/slm.md
  4530deeaee608a58494762629aba3c83  gcc/config/i386/smmintrin.h
  59a6647bb24abb7905b8ebad61cdf12b  gcc/config/i386/sol2.h
! cc39af3c507dc63bc5aae9769239219a  gcc/config/i386/sse.md
  25052628dbb6b92ee7352816628eafbc  gcc/config/i386/ssemath.h
  5a6204853f559cf5c23ad0cbdbde8d0a  gcc/config/i386/stringop.def
  fcd2b90fc8aa0ee423309f1e928ac5f3  gcc/config/i386/subst.md
! 07c4fc30e106775702033cecafab2ff4  gcc/config/i386/sync.md
  6d2764479e7c7b7a1dfed63be9438478  gcc/config/i386/sysv4.h
  6dc10eff36b3c555147afb6569d74500  gcc/config/i386/t-cet
  5e1cda24cd3b7d11404571c8c71cb94d  gcc/config/i386/t-cygming
*************** ef13120be07c13003daf6ed35e2db4d2  gcc/co
*** 3677,3683 ****
  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
--- 3683,3689 ----
  bd8b132073529509e4eec0c3d8dac773  gcc/config/i386/wbnoinvdintrin.h
  c571a8f09f75ab0a907408a6dd802375  gcc/config/i386/winnt-cxx.c
  1ee05eae42bdbb467aa6243c812ca748  gcc/config/i386/winnt-stubs.c
! 6ecb357c171787bb6534a9bdd2eee478  gcc/config/i386/winnt.c
  2a10c624dc7734e0c224e0fdd7a68c66  gcc/config/i386/wmmintrin.h
  627c3e925a142fb6d2a14368fb637f28  gcc/config/i386/x-cygwin
  bae69273c5e47d61e99558ca73c4fabd  gcc/config/i386/x-darwin
*************** ac6725a95f273de60b9b3463b44c1aad  gcc/co
*** 3906,3912 ****
  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
--- 3912,3918 ----
  bd088aa1b8b747e9c435d336ff7ded95  gcc/config/mips/mips-protos.h
  3613c4c901769d3242c7bcaecbd1127c  gcc/config/mips/mips-ps-3d.md
  f50a957373d54fcdd5924d8ee73debce  gcc/config/mips/mips-tables.opt
! c519602b709d11f1727b979aabee71c5  gcc/config/mips/mips.c
  d7ca6bc4237a57d1093e4b11cad67198  gcc/config/mips/mips.h
  79e0c33334d2d85258cc65b3e2d00a39  gcc/config/mips/mips.md
  0c18b24e94fdbc8d4e16ccd81dac2622  gcc/config/mips/mips.opt
*************** b1dd3bb66ec6a2729fd8f218492bd12f  gcc/co
*** 4074,4080 ****
  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
--- 4080,4086 ----
  c2aabf1e8738380511a66426506fe906  gcc/config/nvptx/nvptx-modes.def
  f69e8296d0faf31ac6e0c63114465e34  gcc/config/nvptx/nvptx-opts.h
  6bc8bb882a5681c91d3230b7025912fa  gcc/config/nvptx/nvptx-protos.h
! 759f0b3b228fc78cd6d628b68dd69fdb  gcc/config/nvptx/nvptx.c
  57339b7de27558e634bb329734f050d2  gcc/config/nvptx/nvptx.h
  391495ed22dce89f4982984d68ac1335  gcc/config/nvptx/nvptx.md
  99e673a4a625e68b02c366b8775cd2ab  gcc/config/nvptx/nvptx.opt
*************** b8ee5c8677ab43e55b9f7e62764c4a04  gcc/co
*** 4121,4127 ****
  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
--- 4127,4133 ----
  600cc6b55002e21d4f050a4ffa931a47  gcc/config/pa/pa-protos.h
  4eed25740d2f252c2127973493e76427  gcc/config/pa/pa.c
  729ac301be06873dad20c162c59219d4  gcc/config/pa/pa.h
! cd7bb163f20674428581348567e76c88  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
*************** f60d94e10e9a0c6a4ddae1f3aae0bbc4  gcc/co
*** 4180,4193 ****
  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
--- 4186,4199 ----
  1d3e84dbcb5e84dea4f3b3d34184af04  gcc/config/riscv/riscv.c
  ce01b3abd3639dab925bc8049f0f34e9  gcc/config/riscv/riscv.h
  c8a3e3e9cfba0a473b34470198d444c5  gcc/config/riscv/riscv.md
! fab8909ad9505fa94301777452b2e4b2  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
! 88d091028dad5704f548cef50bdb36d0  gcc/config/riscv/t-riscv
  7dbd61c5a07b1adefe5429a41008fda5  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  486709f8942421d456e5b94085284446  gcc/config/riscv/withmultilib.h
*************** ad318a17a4307a22eada2a5387cd16ec  gcc/co
*** 4218,4239 ****
  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
--- 4224,4245 ----
  4381332fa92fd885a05151d778b8d2c9  gcc/config/rs6000/8540.md
  47fe2b87a3829fbda02fde06a5c50069  gcc/config/rs6000/a2.md
  f33ab722a2d7283c751e7a708083d57f  gcc/config/rs6000/aix-stdint.h
! fbd21a42c0d3b5f25bda9e10bf0cd98f  gcc/config/rs6000/aix.h
  87c3de3f3baac62cde742ec311e2ea93  gcc/config/rs6000/aix61.h
! 82ef85e358d2598d3ba144da5be2973a  gcc/config/rs6000/aix64.opt
  970bd741336f3b6ad6cfc92047dda24d  gcc/config/rs6000/aix71.h
  3c332f07ff88aa9b8b7a951dfefb7edd  gcc/config/rs6000/aix72.h
! 975f12ffc6142ba7007e18bffb8b74a9  gcc/config/rs6000/altivec.h
  ee08238bb2eff082213c3fc4e1476fed  gcc/config/rs6000/altivec.md
  174cef0139277020d6daf3b4321db0a7  gcc/config/rs6000/amo.h
  7ad82036aad04f9e4b357a24e5c58941  gcc/config/rs6000/biarch64.h
! a9aaa787bd2443098906c961fd8b8977  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
! 9a43f9c48bca6bdc9ac2425d003502c1  gcc/config/rs6000/darwin.h
! 4e86fb38ff9f5f0f8a6bb6e4d03986b2  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
*************** b3cc72b8ae0ab3ef6d91521a5fcec2c1  gcc/co
*** 4249,4255 ****
  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
--- 4255,4261 ----
  adb51c0ede7af39901c908ef90b8ce02  gcc/config/rs6000/eabi.h
  6f4ef6cba2a5a2954d623838b646b8f6  gcc/config/rs6000/eabialtivec.h
  1d32f0357e8ebb371e436642b329216c  gcc/config/rs6000/eabisim.h
! 98a82ea1a705f5657c2c94b15e0fcdce  gcc/config/rs6000/emmintrin.h
  d38e4a0ca30e43063770e42f8b82b318  gcc/config/rs6000/freebsd.h
  7ad43b5e10f2d469477c6bb354643b76  gcc/config/rs6000/freebsd64.h
  39fd75208b3401fd5ec3058c3547e1c3  gcc/config/rs6000/genopt.sh
*************** a5b14520695a7ce5f93998a8fa3eea35  gcc/co
*** 4264,4276 ****
  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
--- 4270,4282 ----
  aab6a02122e8086655ea2092bf5e8277  gcc/config/rs6000/linuxaltivec.h
  28eb56aa72960c68f1ce93a0dcbbb50a  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! 98f09db1ffe97c8473d50fb913fd6ab8  gcc/config/rs6000/mm_malloc.h
! 8e6de36e638d6e0c31a610ea612b77db  gcc/config/rs6000/mma.md
! 903bfc71f26415e8a7cc0fd94e81ac0d  gcc/config/rs6000/mmintrin.h
  61382586f43f8c34149111f3808e03ea  gcc/config/rs6000/mpc.md
  a24c854cbca4a77aa796b28b86a7a75d  gcc/config/rs6000/netbsd.h
  9dddbc6ce32fc9f189af4c45ff4bdc3c  gcc/config/rs6000/option-defaults.h
! 0595687d25ef91484869f761e8f2c9cb  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/co
*** 4278,4306 ****
  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
--- 4284,4312 ----
  3dd3209f341105ff5b3dfc5eaec88b8f  gcc/config/rs6000/power7.md
  7a511293f597b257085ff152392293cf  gcc/config/rs6000/power8.md
  b363744cf555db6f21cf65583a9f1d22  gcc/config/rs6000/power9.md
! 40f7ffdd2608568f7fd7f6409b2cbc3a  gcc/config/rs6000/ppc-asm.h
  60e0334a510e1ca34a137e003ab080c5  gcc/config/rs6000/ppc-auxv.h
  211f86e3790aaa31e29fab4dd00a1963  gcc/config/rs6000/ppu_intrinsics.h
! 7e6fd595a1bb7a2b1d7f28e57371bf76  gcc/config/rs6000/predicates.md
! b06b4c14ef553fb94b2752881acc1e96  gcc/config/rs6000/rs6000-builtin.def
  f6f55a2f1cdc9dc92c82f727c8adc32f  gcc/config/rs6000/rs6000-c.c
! 9d0a1b571c870005758432518a2845c5  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
! aab54ac81dac88e8d89473d3573a122b  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
! f7884f4cd0dd4f9cfc379ac21ac69663  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
! ffe366bf96fd9c4aa5ba72c1168a3c1d  gcc/config/rs6000/rs6000.c
  fd2cd530c3bbd8742e0822bf27d471a6  gcc/config/rs6000/rs6000.h
! 90a382b8e502b89311ca1fc96763da99  gcc/config/rs6000/rs6000.md
  ae694700cb8a354c30bddf5dbacf3a24  gcc/config/rs6000/rs6000.opt
  f783f97dd8ba81866de4caa94379cf5d  gcc/config/rs6000/rs64.md
  d243ba917805636d3fe964e1bf471023  gcc/config/rs6000/rtems.h
*************** f26fbf7a1adb516aabc60b157bff7620  gcc/co
*** 4334,4342 ****
  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
--- 4340,4348 ----
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
  9107271d48c741591ed5e4a92925d84b  gcc/config/rs6000/titan.md
! 2ca41cab19b6389c4c67d9dedf3e7cf9  gcc/config/rs6000/tmmintrin.h
  9376354b2d5ece1437c8903ce64d70ad  gcc/config/rs6000/vec_types.h
! 7071fb4ff78f27f75390163fc4cf4df3  gcc/config/rs6000/vector.md
  69b1644a956e3d3ef91b856c86941ccb  gcc/config/rs6000/vsx.md
  6d50c0c76d5f156088c6f113c2ef3f81  gcc/config/rs6000/vxworks.h
  b6ff8b73a277bd9533ebb88d01316d55  gcc/config/rs6000/vxworksae.h
*************** af875b9bcb1ec1da1f33d5e34df8ca7b  gcc/co
*** 4348,4354 ****
  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
--- 4354,4360 ----
  1aff8cb3714b63b6c3367f552dae743f  gcc/config/rs6000/x-rs6000
  699438376f6e4dc3ef37a1ec63277e85  gcc/config/rs6000/x86intrin.h
  67a9f42301677a09272432835955a27d  gcc/config/rs6000/xcoff.h
! c013b6e168478969d10893c9d6c133fb  gcc/config/rs6000/xmmintrin.h
  673ce4c8c33a932ce1baa7fbc9621388  gcc/config/rtems.h
  f26f246b25c615ef8d0cc7eb8f05403c  gcc/config/rtems.opt
  992fe3bece71f0f5348cf6f4f498f847  gcc/config/rx/constraints.md
*************** e3e94c066797685d8a2622b1c5957f4d  gcc/co
*** 4389,4395 ****
  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
--- 4395,4401 ----
  b0455af5364399ae3ba243b620c905d9  gcc/config/s390/s390-protos.h
  a004804c184ed76916393fe8a1947b8a  gcc/config/s390/s390.c
  0941f9097350fe7d34af5c92f0ecb0e4  gcc/config/s390/s390.h
! f938a4b95c73cf651790b4e15cff273a  gcc/config/s390/s390.md
  db7d06c04b3bf2d126240250a0a51879  gcc/config/s390/s390.opt
  ba0d65505653fe3c086f99808dab58a0  gcc/config/s390/s390intrin.h
  0fa5845393381f5fc691db262b97d863  gcc/config/s390/s390x.h
*************** ba0d65505653fe3c086f99808dab58a0  gcc/co
*** 4399,4405 ****
  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
--- 4405,4411 ----
  e37aabde17c8b561ad3c102d4a1cbf5b  gcc/config/s390/tpf.h
  6fa077116f1cbc5762ff181fc398ed79  gcc/config/s390/tpf.md
  3f2768d9d3982dc1d6d1cfa890c28787  gcc/config/s390/tpf.opt
! 2ce3bbcfaf6d87d103b75b35fb10e552  gcc/config/s390/vecintrin.h
  8b56860d17bb2ce903906c4b5b704037  gcc/config/s390/vector.md
  f58fcaabc56c48c98716508979fa7efd  gcc/config/s390/vx-builtins.md
  19876f77a242921272972ac5b8bd32d0  gcc/config/s390/x-native
*************** cb032b4ade610b7b38e01a8029da043e  gcc/co
*** 4458,4463 ****
--- 4464,4470 ----
  9ab9622e223528d958a728134b55b6f3  gcc/config/sparc/freebsd.h
  4f56c43a4d82e01b567fe7887c23ce9f  gcc/config/sparc/hypersparc.md
  374719978e012e941d60c64f131e76a9  gcc/config/sparc/leon.md
+ 9d495003ccd8d4728e02705a8fafe134  gcc/config/sparc/leon5.md
  97d06ec06d753dcf57a975a67e5244c2  gcc/config/sparc/linux.h
  9571e18a771ed70764487a75d74ebc74  gcc/config/sparc/linux64.h
  1250ee775863cfad6a764a0d319f7b9b  gcc/config/sparc/long-double-switch.opt
*************** f79ae1140c10492ceac088f7f5019e7d  gcc/co
*** 4476,4489 ****
  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
--- 4483,4496 ----
  6f9d286d9e3e1c5a000251634b240853  gcc/config/sparc/sp64-elf.h
  ccae0d54ed31f04853ff923541eea0e5  gcc/config/sparc/sparc-c.c
  a5a9218acfb5d41578555d0441d5cb99  gcc/config/sparc/sparc-d.c
! fc603009a619faa01c2b790df75e63b3  gcc/config/sparc/sparc-modes.def
! e9790562d31de19ef25166f5f8cb69b1  gcc/config/sparc/sparc-opts.h
  6f520a376e0a7395f5c6f882a8e027c8  gcc/config/sparc/sparc-passes.def
  cd0869635ffc187db2e3827d1dd73fb8  gcc/config/sparc/sparc-protos.h
! 4a032bdecf716b5dc2199a932799647d  gcc/config/sparc/sparc.c
! 9d78520dc64c812bfd259a6688446709  gcc/config/sparc/sparc.h
! 29cc662e876c7f700c37d0e163fe5539  gcc/config/sparc/sparc.md
! dc2e1551d2beb89c3ecab8a5b7124bd8  gcc/config/sparc/sparc.opt
  8ed4dc36697fae85bbf65019d71bd589  gcc/config/sparc/sparclet.md
  e52c82a23c5c3b180a0ff5a8b8ad6d00  gcc/config/sparc/supersparc.md
  9a3746b5a3e2e665ee112e40bda33690  gcc/config/sparc/sync.md
*************** bb551d8949231e13c2fc39046fef68fd  gcc/co
*** 4549,4555 ****
  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
--- 4556,4562 ----
  209d1a732de0a286638eed5c793f0da1  gcc/config/tilegx/tilegx.opt
  4694ef81335429ad17d622ad71601731  gcc/config/tilepro/constraints.md
  f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilepro/feedback.h
! 91311b5f8b8de8a47cf601f68f697629  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
*************** e42654dd30c5612779ef93d34c3c29c1  gcc/co
*** 4663,4680 ****
  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
--- 4670,4687 ----
  a23e48474ee8aa13f49b361bd3c98841  gcc/config/xtensa/xtensa.h
  01660331fadee5f3e28f5bfb0cd602fb  gcc/config/xtensa/xtensa.md
  08b3738376c03bf4cee8df572e6705f2  gcc/config/xtensa/xtensa.opt
! a8ab29c421f4557fe550fe426dd6be6c  gcc/configure
! 22f0fa4de59aaf9833ac29e82b0a5a50  gcc/configure.ac
  b87ae58d1c8749424f6bd5aaa5d01093  gcc/context.c
  b2a80d0c51705d2a0d6e75048c697b96  gcc/context.h
  1b4f206d9f1dfe887814858b2628b6ee  gcc/convert.c
  820c5ad95c096f30b56db96ceb9aebd8  gcc/convert.h
! d8243f41c71cd67d366d69853db48b80  gcc/coretypes.h
  cc47dc829b58cf28ea4a0d34724ef655  gcc/coroutine-builtins.def
  ccc965b70117adaa9e520ce66d2cdc1c  gcc/coroutine-passes.cc
! d8b8dbf4da9c1bc99c07c6ea7c400198  gcc/coverage.c
  1929f2519bcd6977e0d213f459d3b40c  gcc/coverage.h
! dff5236c84e19ff01fe01b2d47ad7413  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp
*** 4706,4772 ****
  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
--- 4713,4779 ----
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  6df3c44d0c0dd3bec79bc34db725697a  gcc/cp/Make-lang.in
  fd0465d46d6794ff1574f592b953651b  gcc/cp/NEWS
! d12910a05989c8bde6d3f96115742601  gcc/cp/call.c
  8ff7b45f5a8aee8f834b85eeca6a88f9  gcc/cp/cfns.gperf
  37c2b7bedf298de9dac0cafb46f58d9b  gcc/cp/cfns.h
! 466944e0e572eb3f44a4f9b9fb91be8a  gcc/cp/class.c
  8aaf367382ec0ba58ec54105f81bae4c  gcc/cp/config-lang.in
! ba2eb711d742729700d4cec81f3259a5  gcc/cp/constexpr.c
! 019ae23b54cdc082c0b9d13205f0edef  gcc/cp/constraint.cc
! 44e730c275906ff2db829f5b9994298e  gcc/cp/coroutines.cc
! 4734755e299b745c6e17c73b318ff8e0  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
! daf4cd2f7d9fff3beba4e5f35f7c73b6  gcc/cp/cp-tree.h
  1fdd2540a34a8d3711868857e16b12ea  gcc/cp/cp-ubsan.c
! 4c457ba4298e4c8b0d88685a019ee425  gcc/cp/cvt.c
  eb2e3a9c14c44c0cc5c5dbcc9c82618d  gcc/cp/cxx-pretty-print.c
  b5cc2e7a6254261a168bd34a412a0fc6  gcc/cp/cxx-pretty-print.h
! 930226c25a54545fd53ae10dccf13037  gcc/cp/decl.c
  5c07af228d899d28c4a7a4096ae1ae34  gcc/cp/decl.h
! 2a6334e2cc9a923eaf3312d0f168d207  gcc/cp/decl2.c
  98c98b8f005396a75738d141023feafe  gcc/cp/dump.c
  31839945a2103c24d966396fc5d42f75  gcc/cp/error.c
! 02eb1ec1cd5fd4b24715607e961d1cc7  gcc/cp/except.c
! 261b11524fe961d2434aa9cc367ecdb7  gcc/cp/expr.c
  01b0de4604aab6440ec5ea83f09fb4d6  gcc/cp/friend.c
  acc27a3f2e7fed4b7ba30986e3dbf8e9  gcc/cp/g++spec.c
! 35e393a5d1ec04ca99cca8042af7d4ed  gcc/cp/init.c
! c32ff0c4edb1cd11b2b9d57eed2886b0  gcc/cp/lambda.c
  2395c9f9b982880dfc925c3cbd76a4bc  gcc/cp/lang-specs.h
  8c0a7e69fc667bef06ad7bdf5b6d4a32  gcc/cp/lex.c
  88f9b3b7adcb56a71c281373d1c5643e  gcc/cp/logic.cc
! 3f211834c8fddb825032358405ce0e29  gcc/cp/mangle.c
! a51ae59c8e9c36a935788923a339dd31  gcc/cp/method.c
! 6dfdd88329d50659cd893a7288a0241e  gcc/cp/name-lookup.c
  f09435d1b0c974cfe45f48bfc0669984  gcc/cp/name-lookup.h
  a7154f7d3b54c0184476a88977d4ab3c  gcc/cp/operators.def
  2786790fbafb8faefa78a7b85b81022b  gcc/cp/optimize.c
! 1b987a2c137584ff79dbf6ce9e93ab53  gcc/cp/parser.c
  bb1759eb82ec59c0a317878693eb4f45  gcc/cp/parser.h
! f01c0b9500a5c384a8150ed15f03cf98  gcc/cp/pt.c
  322572fac27749e839caf803dad33025  gcc/cp/ptree.c
  7ff8a27380a1e6717713246bd546b2d3  gcc/cp/rtti.c
! 248c55ec535b81679b9f77b9773863ab  gcc/cp/search.c
! c9603afa7178fa6a1e00b948064864e9  gcc/cp/semantics.c
! 8ebad01cebf90a3255edb82664b6da5d  gcc/cp/tree.c
  cae322bfce187ac1a745d5219629864a  gcc/cp/type-utils.h
! 05e4213ca2fac32ee1bb38b826a86872  gcc/cp/typeck.c
! 188b29c2dbfcb6513d4fd24f3f318c9a  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
! e6f2a13a28bd6c3b79c29f828dbf1a9e  gcc/cprop.c
! 3f3696ca93d11e0760804c479f5d0009  gcc/cse.c
! 664b6e294e2b28b39aeea0b3336fbca3  gcc/cselib.c
  ec27fbd17f014711211a34a157aaaff3  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! fa1b2e5137739614265889d88086c3de  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
*************** a24248ae4062800ab22eb699b5eaab39  gcc/d/
*** 4785,4807 ****
  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
--- 4792,4814 ----
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
  a19568c9e376fa3deab3a175f14443a2  gcc/d/config-lang.in
  cd46a07008703f3011cf3fc599a24da1  gcc/d/d-attribs.cc
! 5fdf99ce1ae4de233e2719c9dfcabe98  gcc/d/d-builtins.cc
! a19a6f711214b48b73a4a6f10c45a053  gcc/d/d-codegen.cc
! fde409ebb102caa1f051bb654f17d131  gcc/d/d-convert.cc
! 7140c135d6faa5ac2b4d4541c7451952  gcc/d/d-diagnostic.cc
! b0892dae217f671746b12323dbfdb22c  gcc/d/d-frontend.cc
  6d4172dbc76a861d1c70b5a3061e128a  gcc/d/d-incpath.cc
! b4146daa98f8b3d7236eb1e3ced7d98b  gcc/d/d-lang.cc
  b09323f8c17afc822f365183b33e439e  gcc/d/d-longdouble.cc
! b1b4a601abe642a38842d18ec9c4a1f3  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
! 2d79161b6cb8614f7217956b845f84ff  gcc/d/d-tree.h
! a641aa8e7ef890aeb513a6a7c0f6d3bb  gcc/d/decl.cc
  bb43b09505bba37d2c084b519c8d89a5  gcc/d/dmd/MERGE
  094ef829e65f40de6ff4b765b3ca0aba  gcc/d/dmd/access.c
  1a1309d17942e7ece838aa8b9019864e  gcc/d/dmd/aggregate.h
*************** e4224ccaecb14d942c71d31bef20d78c  gcc/d/
*** 4818,4837 ****
  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
--- 4825,4844 ----
  71b2987c4c086034392d6cec93c5bc36  gcc/d/dmd/clone.c
  a08115f4884c22aade2c43474e78216e  gcc/d/dmd/compiler.h
  b3601d5b994054853b715fff03bad6ce  gcc/d/dmd/complex_t.h
! 6ede7e31d72981e0f15074c5b8828d00  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
! 2bb61ba407e66eff2580e0d5668d5580  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
! bc1e90d1199f0394df3e8f3eb35c3448  gcc/d/dmd/dinterpret.c
  7deff36a83845e52a8c9847a7cba9170  gcc/d/dmd/dmacro.c
  37ba1a4108dbe079aea76894644b7c16  gcc/d/dmd/dmangle.c
  4d37ecf79a73ea949e07baaa3fc2f9ed  gcc/d/dmd/dmodule.c
*************** f69a19e34a9f63afd02b76eb1b84cc68  gcc/d/
*** 4847,4855 ****
  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
--- 4854,4862 ----
  c6f02113251e440cbb35240ec47dbb6f  gcc/d/dmd/enum.h
  b51bf064e22dde0a02049ba02cfc1c3b  gcc/d/dmd/errors.h
  8966a99836d97acba39cd471926927c6  gcc/d/dmd/escape.c
! 741d3931e021319ef6b4ae7d98c2f56c  gcc/d/dmd/expression.c
! 002d4c5ebc847adb5c25fe1adeb0faf0  gcc/d/dmd/expression.h
! 2d1fdd39912fc7d647cd5519acb4911d  gcc/d/dmd/expressionsem.c
  8ccd6562dee14a44a3b18f83de41c7e6  gcc/d/dmd/func.c
  aa8bdbd09e2a54e6a89ea90aaad8d409  gcc/d/dmd/globals.h
  7dd635952261e678b949533d3d2abdc4  gcc/d/dmd/hdrgen.c
*************** aa27fa9fcab046604292cc23e32920aa  gcc/d/
*** 4875,4881 ****
  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
--- 4882,4888 ----
  3a5e02b34a70c25dca7c038ede27c96f  gcc/d/dmd/mangle.h
  24d743d1eec9c6f5c9f25e00ee87737e  gcc/d/dmd/mars.h
  9ad7be3bd76dfa484f594eff9bca1692  gcc/d/dmd/module.h
! 26ff55e8514bbfeaabdc893f4478e09b  gcc/d/dmd/mtype.c
  eea7558ba165100d50774086716ea78f  gcc/d/dmd/mtype.h
  cb8d9d9bfab84ac59a0b018752f2f899  gcc/d/dmd/nogc.c
  885902ace75746551ea90ae607e0ddf7  gcc/d/dmd/nspace.c
*************** d35dd34358834aa34681039e67814200  gcc/d/
*** 4918,4924 ****
  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
--- 4925,4931 ----
  1e4a863f5ae848d5a900ec7aed69c1f4  gcc/d/dmd/sideeffect.c
  af526917f0d6eb741050933b23b0f07c  gcc/d/dmd/statement.c
  05bb54d47eb310546442020ae1f048fa  gcc/d/dmd/statement.h
! 934bff2b8aed2c5f5ea9801748bc44aa  gcc/d/dmd/statementsem.c
  fc3c63f7b78d3687cbab1e73aae55e32  gcc/d/dmd/staticassert.c
  09ffba9fc16bea5afa1ea9f7651eadf8  gcc/d/dmd/staticassert.h
  4ebaecbeb84a7fba49670de781cbd594  gcc/d/dmd/staticcond.c
*************** b6b97848ff841c2ba786e35a155e7969  gcc/d/
*** 4933,4939 ****
  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
--- 4940,4946 ----
  892df329899d0581aea17c5742a9652a  gcc/d/dmd/utils.c
  a8f7c4f694d68924d68d98d7d2c17d09  gcc/d/dmd/version.h
  ee40ca13e71f17c1810a03367e9f8b1b  gcc/d/dmd/visitor.h
! 955d0cf488664d232687eadf0c28abea  gcc/d/expr.cc
  68181946228b38dfb5d6fccf924382c4  gcc/d/gdc.texi
  a3c0cc319f091942f45eea92a6af41ff  gcc/d/imports.cc
  eba82f3bc8e120da884c4e286247b5ec  gcc/d/intrinsics.cc
*************** a085b5c31a34e6c194c3108b96c1e203  gcc/d/
*** 4945,4951 ****
  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
--- 4952,4958 ----
  4cf8cc279a987b0fda776077fd53061f  gcc/d/runtime.cc
  9c2b70944203746f17b8754ba2109510  gcc/d/runtime.def
  b860ba3324520aff7268d00ff5a3b2f4  gcc/d/toir.cc
! a8d69052162e9ee53fb1390a2354f76f  gcc/d/typeinfo.cc
  833a6b769ba1bb6f9756f95475c95a80  gcc/d/types.cc
  ffe6cb4083340e61aa80419c3ac2f84a  gcc/d/verstr.h
  23255cea1662b0963ce7c3e1710e029a  gcc/data-streamer-in.c
*************** c18771821b3c0277be8874098ef0a496  gcc/do
*** 4994,5031 ****
  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
--- 5001,5038 ----
  0aeda9bf1c0b3e2f6f82916a118096d8  gcc/doc/configterms.texi
  591c43bd3e0acf5e1319e6a54b9797dd  gcc/doc/contrib.texi
  9d45c807a3aa05e4129599f4144c79d3  gcc/doc/contribute.texi
! 4111bb183ce82c3e6121a69a4c3d64f9  gcc/doc/cpp.1
! 1d711bac74d5d50e6dd2205f2e079033  gcc/doc/cpp.info
! b0ec3515657fc0165ae21602af7f2e82  gcc/doc/cpp.texi
  0de35fd948c2d1bfadf0b56403bcd70c  gcc/doc/cppdiropts.texi
  ec4caf3825b9937f10f1dde42b534a68  gcc/doc/cppenv.texi
! 3cfc7301ee64f6a2b78c771bb8cec21d  gcc/doc/cppinternals.info
  c0d6abb8d561540b8519a01789ab20e4  gcc/doc/cppinternals.texi
  1592fa0920a0202b757dece389015e3f  gcc/doc/cppopts.texi
  314fc175d338403fc1a2d890f6f325b7  gcc/doc/cppwarnopts.texi
! 12e8c9f596335b8fd0344243c336004a  gcc/doc/extend.texi
  470b981de977916fd30c8a64c80b7fde  gcc/doc/fragments.texi
  20adbdf5bf9edc8cb6efd4a9cfc1a5c8  gcc/doc/frontends.texi
! a1f6d18b92aa013a748dfb7697fb41e4  gcc/doc/fsf-funding.7
! 73458887fe66018650e5c02a8e57aaa9  gcc/doc/g++.1
! 73458887fe66018650e5c02a8e57aaa9  gcc/doc/gcc.1
! 77d5dfe4e42e3d43a9474c41ba016e58  gcc/doc/gcc.info
  7a4d49e66462ecaddb8c3d35a4be3ce7  gcc/doc/gcc.texi
! 7b13b5ec00f710379a04abd689f39595  gcc/doc/gccinstall.info
! 970d0e5aacac99c5865dd5b32863d7ec  gcc/doc/gccint.info
  4c3bb0ef5f4f8fd8a877cebf249596fa  gcc/doc/gccint.texi
! 856bc88531e4c045e49e38fb2eeff2d8  gcc/doc/gcov-dump.1
  d0a4d191b48a6c48c8e5d1d6673aca45  gcc/doc/gcov-dump.texi
! 6dd8d0cbd743d880a4b8699b317d0098  gcc/doc/gcov-tool.1
  51792fbbdc63c819a9ca77e38c002af9  gcc/doc/gcov-tool.texi
! 183d0b3b54308b9ca887cf46cca38d22  gcc/doc/gcov.1
  7b5042f630659261fc8686377fa6b034  gcc/doc/gcov.texi
  e92265395b7daf7dc7ce05d3ec64a376  gcc/doc/generic.texi
! 5c48a60e6521c6d343fc11df209f54fb  gcc/doc/gfdl.7
! 8bc3aaa17f27f51d62112c604aa5ce9f  gcc/doc/gfortran.1
  af5c4e3c5b6e9491191874ab81bae52b  gcc/doc/gimple.texi
  290370669f02bef1502ada9273e5261f  gcc/doc/gnu.texi
! 45beaa7ba7ed48e5565a2dace7e77123  gcc/doc/gpl.7
  7cdd885d331cff4af22305f97d7c2f90  gcc/doc/gty.texi
  791902062ac528ae5e40ab627fddda4a  gcc/doc/headerdirs.texi
  5965b4c8e9b7704d12a73ce2dd213ed5  gcc/doc/hostconfig.texi
*************** b82b1143f78f373e3c76f6958d830869  gcc/do
*** 5037,5050 ****
  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
--- 5044,5057 ----
  b6389c8331319f90193f11ac084e86e4  gcc/doc/include/gpl_v3.texi
  73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
  67f7627681f57b4da56093b89cbb81a3  gcc/doc/install-old.texi
! 5df442b76396a3197f5ce631ed59f48e  gcc/doc/install.texi
  7a4b82d3eebd4858aa30fe0f4404d548  gcc/doc/install.texi2html
  31edfbf55a9d3df130c88d68f0169c39  gcc/doc/interface.texi
! 58401cb12c3b4a3806b5ca1687a0cc28  gcc/doc/invoke.texi
  3a49345ce16cd33f59d6cf7e0ee815ab  gcc/doc/languages.texi
  268b9397afea988eadd93ce81b1bb9a2  gcc/doc/libgcc.texi
  e02b5aa8f429c0957c133e264c9dc3ec  gcc/doc/loop.texi
! 3eb4004fbad030d7b482189799ab452e  gcc/doc/lto-dump.1
  b99bd8da5b02b02634f7d9a942ffbe71  gcc/doc/lto-dump.texi
  f18a876be44fd2b5c38b7c10dcf2bc94  gcc/doc/lto.texi
  a8f68d3e6eec459c1c1d361c337737a3  gcc/doc/makefile.texi
*************** ad9645d6c4b09dcccdbd6c29369ab018  gcc/do
*** 5061,5070 ****
  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
--- 5068,5077 ----
  e93d1c976693b8f2c62a65d0f0d4fd59  gcc/doc/service.texi
  15b657d5a52b2aa1de21bb9c4499bf9d  gcc/doc/sourcebuild.texi
  83f77099f0e2da567afa1db2d4aa019a  gcc/doc/standards.texi
! 360d5086d0cf6b2e062cde5cbcc5f038  gcc/doc/tm.texi
! f286d51af8d1ebb173423fb380d58bcb  gcc/doc/tm.texi.in
  be339fb0cf01bb799a3f37e28806bcc9  gcc/doc/tree-ssa.texi
! 6dd59eaefd02d8df075d8e6d5bba3918  gcc/doc/trouble.texi
  f10e623abba8dc994d37054d758954c8  gcc/doc/ux.texi
  276e18f1d0320ec1bdba0ddf86ecae5e  gcc/dojump.c
  d65a7bcd57c757755933c045255522cc  gcc/dojump.h
*************** d9946b8965ca229b280652f12b9dab87  gcc/do
*** 5074,5092 ****
  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
--- 5081,5099 ----
  83abd26c71936a6759e8808b71197115  gcc/domwalk.h
  1e9816cb4a810b19ef22718afbeec7c8  gcc/double-int.c
  b0fe848c6de3272f77738d74b1edb83b  gcc/double-int.h
! 3406c79c332e9ddffdfe113def4688db  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
! d44f550077470cd88f48ca1896fb5679  gcc/dwarf2out.c
  56e7493de2306d771426d08c953ba38f  gcc/dwarf2out.h
! d090d07b57dc88ebdd7b95a1051530a1  gcc/early-remat.c
  acd39cd487582156a31695fa0540491a  gcc/edit-context.c
  86a7830502c4192323bdc9712d3866f5  gcc/edit-context.h
! 8a2c8306606fd38333b7067fa4b95c43  gcc/emit-rtl.c
  32636560259bd68a4dcfc268907b98f6  gcc/emit-rtl.h
  1599b8f61bfe954037be2b7318a44122  gcc/errors.c
  be4b862f1488d8a23c64b9b34a3a9449  gcc/errors.h
*************** ecbdc29ba9b602eb5e55c1523296777a  gcc/et
*** 5095,5106 ****
  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
--- 5102,5113 ----
  d408aef16c3bfb7b86cef637feac8745  gcc/et-forest.h
  241dffa213208d61454b129b72b68d26  gcc/except.c
  c6370f22bbfcbcb87187c92f76076171  gcc/except.h
! 646d11e4621d38b93bdd5ec9084a30b9  gcc/exec-tool.in
! 1e7ffcb4c7304e693888f21446a574c9  gcc/explow.c
  8c8476ba0f61914dffce238540c59b95  gcc/explow.h
! add1e4cb369e0520484abd0b715bc767  gcc/expmed.c
  5e0174392e3f3a8cc0a63391e02aa772  gcc/expmed.h
! 4ceca65ed0e7d617a2f7bb8a783da67a  gcc/expr.c
  39274814d6e8332f62ce66e987da6dcd  gcc/expr.h
  a89ff289b70e8fa646431a2b2cd439d3  gcc/fibonacci_heap.c
  9bcdbc3fe605cab6b77a06f781d4a583  gcc/fibonacci_heap.h
*************** c7818ea72561a6c3ef3613f1f94eef57  gcc/fi
*** 5115,5123 ****
  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
--- 5122,5130 ----
  2ba3f19d1d4d27e75495303b9c20747e  gcc/flags.h
  8111a2f80dd9f60a732dad3f26e81e97  gcc/fold-const-call.c
  16906a527f09ac9bf549f3acfa4223cd  gcc/fold-const-call.h
! 7fc5dfef3abeab38d8d3f917a3dd8d73  gcc/fold-const.c
  abc79786bf3632dfb6fbaa4020b7260a  gcc/fold-const.h
! e6cafcaf569c837a520f8f487e0116a7  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** a71efd3e199a80ee07c7f350cc8fcf91  gcc/fo
*** 5140,5149 ****
  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
--- 5147,5156 ----
  5c6f2ebe741a0ada8c3033e2ea5d2ad7  gcc/fortran/Make-lang.in
  5909b9f6e71710f62afe91d5f67898f7  gcc/fortran/arith.c
  ca8b1e108aefbac2b7ac57c153617f6c  gcc/fortran/arith.h
! b05deab2c992671d980cfe3478e519f9  gcc/fortran/array.c
  22a0a106380de68c4cdc48f21e8df1eb  gcc/fortran/bbt.c
! ec3ecfb4fcfde5919a0f4f68e3d2b285  gcc/fortran/check.c
! a8a6bab62f224890f29d51f5f16aefd3  gcc/fortran/class.c
  ff1762e0971ecf2d08fcffa2311224bd  gcc/fortran/config-lang.in
  d0f92e4c6353c809d59a8b3d9f6c1b82  gcc/fortran/constructor.c
  d74f46867c50e9065742294cf7981112  gcc/fortran/constructor.h
*************** d74f46867c50e9065742294cf7981112  gcc/fo
*** 5152,5177 ****
  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
--- 5159,5184 ----
  b36a6c41c7be94c6ecabf570d20ef218  gcc/fortran/cpp.h
  f014f88abd3f67ba65654dfb86f07d39  gcc/fortran/data.c
  4577ffbed1dda4ed381606219c395ead  gcc/fortran/data.h
! 3a93d2749eed9e47bc0d1ecdf1175c46  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
! b54645eec62d2d184469ef591d0e7406  gcc/fortran/expr.c
  d7765a920ed5575a88d4db604b220ae8  gcc/fortran/f95-lang.c
! dbade9a0443babcb6841e422e4bd90ec  gcc/fortran/frontend-passes.c
  4a9175c58f9890ba356a1a7a096d5080  gcc/fortran/gfc-diagnostic.def
  6185d88092feb0bfe9da2dd3a00c4a9b  gcc/fortran/gfc-internals.texi
! 210ea7941b8ac304a8a9dc59d1f21775  gcc/fortran/gfortran.h
! 9475f1be32fdf8423fa1288030b62aae  gcc/fortran/gfortran.info
  ba78f919c059d2c39dea6fd637ec60c4  gcc/fortran/gfortran.texi
  4cc401504b7e658fab348681169c32a4  gcc/fortran/gfortranspec.c
! fdaa35d24d70de3a8ac5f13bf9d76599  gcc/fortran/interface.c
! 829eaa0082269f5b5febfdb18143a3dc  gcc/fortran/intrinsic.c
  ceea3037f74de08ef111da7bb019ed4c  gcc/fortran/intrinsic.h
  9f9aec12ab6a67091b66c4f231a3e1f8  gcc/fortran/intrinsic.texi
  a06453ed65fec3338fa1b2817ff8957b  gcc/fortran/invoke.texi
! fca17b96a19a1afac83ccfb428b5da99  gcc/fortran/io.c
  6d5e915cff913cdb02ba2baa120b8fe8  gcc/fortran/ioparm.def
  2bee38469d4ce1098c8c91e20abe8440  gcc/fortran/iresolve.c
  06cbd27c3b0bbe8982f480c02560715c  gcc/fortran/iso-c-binding.def
*************** a06453ed65fec3338fa1b2817ff8957b  gcc/fo
*** 5179,5216 ****
  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
--- 5186,5223 ----
  4704c3c4e98e7f39a242215740f10a69  gcc/fortran/lang-specs.h
  e283f0937fc450e80999166335b17244  gcc/fortran/lang.opt
  226cf6b14c1286da7bf2193ae58b56d2  gcc/fortran/libgfortran.h
! 76fa60e2c6b43c01900148ad1c2229c8  gcc/fortran/match.c
  828ba0a275b20969ca5988535d6e958a  gcc/fortran/match.h
  be55c16cc142b0c725759a753b87bf54  gcc/fortran/matchexp.c
  a7b0953cc8a68adc1bb8bbae3cfe218d  gcc/fortran/mathbuiltins.def
  6fec7cdea16d5f5e62a6bac40b8979d3  gcc/fortran/misc.c
! fa7960ce4e6f31518d07f43fab0064fb  gcc/fortran/module.c
! 98073c8b0067e3f1cf86cfcbedea3d4b  gcc/fortran/openmp.c
  a846edad604c36aca8373eca299f9003  gcc/fortran/options.c
! 977acb907d69546a8fe4d2f9cf6497a8  gcc/fortran/parse.c
  be3bc61c20fd3fe95f04b104478ae250  gcc/fortran/parse.h
! 0213a860b48912534c8d5b479e6a7ca4  gcc/fortran/primary.c
! 94c458f91306bac2e0b519ed4baea33c  gcc/fortran/resolve.c
  9210d7371a77a15b79b659e8719ab872  gcc/fortran/scanner.c
  679740af5fd1779d09bad19b2a37b9cf  gcc/fortran/scanner.h
! 113545e00223632c0e6f76240f1aee08  gcc/fortran/simplify.c
  c992b80ea1e122025853709b9349485d  gcc/fortran/st.c
  68eda559c17fe42472ac86c38c28a099  gcc/fortran/symbol.c
! 006ae369e32fd80bae953a25b64ef9b1  gcc/fortran/target-memory.c
  2079251ce04664a8bcacf6d0d1b9c63d  gcc/fortran/target-memory.h
! 1c6d1da63a3d9a455d0f808df3710c0f  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
! 32a307a8fca44beb944d31727152aaba  gcc/fortran/trans-decl.c
! c5faf10720af7ecee39bc4460c4ff0aa  gcc/fortran/trans-expr.c
! 7c56cc8a0fe94ecd22b4f344a3edcd52  gcc/fortran/trans-intrinsic.c
  8b2a38b5821ecb86b2d2c64402eab26a  gcc/fortran/trans-io.c
  a74d6a9935c305f1edb58fb8465761de  gcc/fortran/trans-openmp.c
! 67bac98c6f4d0bb710fb422590553f43  gcc/fortran/trans-stmt.c
  5bf228024f266738a2c924e3b4c3c159  gcc/fortran/trans-stmt.h
! b4109643c92ddd2e089c7aab89c6de51  gcc/fortran/trans-types.c
  9c69f1144a81294c83c5dfccf059e4c4  gcc/fortran/trans-types.h
  d64a1b4f0cf5fc8fb67e745e08325f43  gcc/fortran/trans.c
  81530ead86dd639638783c7081dd79d5  gcc/fortran/trans.h
*************** d64a1b4f0cf5fc8fb67e745e08325f43  gcc/fo
*** 5220,5226 ****
  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
--- 5227,5233 ----
  0016a094a47192e17ab43316c6b81e77  gcc/function-abi.cc
  f5575b9b4148e14a06bd15e48a059fe9  gcc/function-abi.h
  1d1c7fefe6627b480bdca65a93572b85  gcc/function-tests.c
! 8d7a3430127b1531b249ae8f38a04f63  gcc/function.c
  471a2138d677294e0d8b0ad39fdac18d  gcc/function.h
  be4b170ee267123479f1e1f21b624f1b  gcc/fwprop.c
  dedbe8a6eb31269c6155407f0628b3dd  gcc/gcc-ar.c
*************** cfff649691185f367fd2b8e73ac7ad99  gcc/gc
*** 5229,5235 ****
  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
--- 5236,5242 ----
  62560119c356b251cca1099cb4c0e36e  gcc/gcc-rich-location.c
  833829dec49e2b78c0ce9e6ff94ed95e  gcc/gcc-rich-location.h
  1e7a8acabfe981225ee07f2ca2588326  gcc/gcc-symtab.h
! 001ba31c288a6eb84d2c513fa9e853d0  gcc/gcc.c
  bd03f9afb8e7458acac40b10fd781d0a  gcc/gcc.h
  bbb1c23e69c2fe3a3d5ad53c86e1ecb6  gcc/gcov-counter.def
  f54685150224625db645d8f0a852916f  gcc/gcov-dump.c
*************** a1e549f76fdae9e7751ece58813a2001  gcc/ge
*** 5264,5270 ****
  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
--- 5271,5277 ----
  512811c4f04c2a6b3ee96bd1050c8254  gcc/genextract.c
  6b1b20df0e1c1d98bbb87eda8feb1aa9  gcc/genflags.c
  d5ba0558db6b0ab6fa6173d1928e95a8  gcc/gengenrtl.c
! a47d7712b14bcc384e3ad4607724c775  gcc/gengtype-lex.c
  790251f979c35416aba2f02f062588a3  gcc/gengtype-lex.l
  50e413eeb1665bf9eb5c8f68ac1b3513  gcc/gengtype-parse.c
  0f39be6bb5abe83175ebce4bd00ad8b8  gcc/gengtype-state.c
*************** e4995e4de577b4b27e3875c087a4e945  gcc/gg
*** 5292,5306 ****
  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
--- 5299,5313 ----
  fef9e50d2114dea9d6dd02b3b69d93f8  gcc/ggc.h
  c47bf3facc266285c6e5bd3e650c492a  gcc/gimple-builder.c
  de56894589d757f1f3f145c4c83b72ff  gcc/gimple-builder.h
! ee8960ac6197303f5d1964624aa92a1f  gcc/gimple-expr.c
  75dcc7cd70023b5f7d5893cd38d98788  gcc/gimple-expr.h
! e357c1deffc66b41d630980cf1be56b2  gcc/gimple-fold.c
  0a76fb5bab9be03fb7841b54cc77fe13  gcc/gimple-fold.h
  288a5e28f5cb5268fc516fcb152423e4  gcc/gimple-iterator.c
  fb4e7f4a72cf6ee4d871410e32f4969e  gcc/gimple-iterator.h
  a7c2e28e37ef8167aff9fe098a4c173b  gcc/gimple-laddress.c
! 8ce4fa8100f8ece51528b1eca5a49cde  gcc/gimple-loop-interchange.cc
! 7fbefc4a1380cd44f42c3a61d5bde17a  gcc/gimple-loop-jam.c
  b9f5a83262367b5f8bba49d409d5764b  gcc/gimple-loop-versioning.cc
  16718adca4a822e2cc7c3ae616e08fed  gcc/gimple-low.c
  ee3c9c60a48a8b0a2788cc604f0c7e26  gcc/gimple-low.h
*************** cfa94a6b4f0e2941647e8a2af20f2cb5  gcc/gi
*** 5310,5326 ****
  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
--- 5317,5333 ----
  8d0ee2122e3ec95b06bab624b0b1c323  gcc/gimple-pretty-print.c
  ac8ca6e9ad16ee58747fca666306d275  gcc/gimple-pretty-print.h
  ed17d1c5e9fc48436a080788ce2b0ef1  gcc/gimple-ssa-backprop.c
! 8098adbee1cdd7298097debca9882232  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
! 52c66d872308f8c14949eb95700ba5cd  gcc/gimple-ssa-store-merging.c
  8960c3cbca38a2eaf05bd32e3ecf4854  gcc/gimple-ssa-strength-reduction.c
  83fd2fdd73077218ec13ec004aef5ab0  gcc/gimple-ssa-warn-alloca.c
! f72a465e49a5175b7273d87fd391f004  gcc/gimple-ssa-warn-restrict.c
  cd32ce95364c22a13f86ddf632be31a0  gcc/gimple-ssa-warn-restrict.h
  8ff75884d02d2da12247c38659c37203  gcc/gimple-ssa.h
  6d3adbf1bdbcfd2a2b66bd506a67fbff  gcc/gimple-streamer-in.c
*************** d4f63d3a8fc90415c3899934879d276f  gcc/gi
*** 5333,5339 ****
  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
--- 5340,5346 ----
  49236c9c5e2a9761277ed11ebc366699  gcc/gimple.h
  0d22d1df93aff237ce1c96b54a6eb509  gcc/gimplify-me.c
  13e150fec65c17a13458b4af15a922ab  gcc/gimplify-me.h
! 528f5d92ce338d59eead0446fb112990  gcc/gimplify.c
  39d4e3996900e0d2d838e0c7dcf99364  gcc/gimplify.h
  1caa0bdf66e19f5a1051d40c48026308  gcc/ginclude/float.h
  62f748511bcda55470e6287312fd2661  gcc/ginclude/iso646.h
*************** a7b6c54cea96cb12874d9565e58bab5a  gcc/gi
*** 5350,5356 ****
  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
--- 5357,5363 ----
  0608636acf1496b7f55fd44f5db0b82b  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
  f68ba128faa37699b34eabd954dec2e7  gcc/glimits.h
! 80bbfa396dc7079b85d255ebec831415  gcc/go/ChangeLog
  7704e902d7eca77c3c54d4b0d74e1280  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
  ba1d1d5398ab441ac25b708319bb4d33  gcc/go/config-lang.in
*************** db2b7cea2edb5acc9de424c6dce22fa0  gcc/go
*** 5376,5382 ****
  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
--- 5383,5389 ----
  ee8753eb1d8ca2fa168f6a71d3991455  gcc/go/gofrontend/escape.h
  5a76e1b0c3bb652ded19fa44e450e24f  gcc/go/gofrontend/export.cc
  b72c14ae63bb87f55620d747d46e54c7  gcc/go/gofrontend/export.h
! 7941bdb73be49be889cf7ee4ebb032f1  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
*************** febdf68cead89eb29ba957c3d6d664ec  gcc/go
*** 5413,5419 ****
  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
--- 5420,5426 ----
  06e709c603027775705da760296923e0  gcc/go/gospec.c
  bfd45c09cf77f5527b4623c7654cb355  gcc/go/lang-specs.h
  c25395d3e2495cf2567b37bbcd071437  gcc/go/lang.opt
! 3fc78c080cbd44e65b5a59d4fe6e3978  gcc/godump.c
  b7e7fa2dc2de04474ef52ebe420b3451  gcc/graph.c
  839b194b2cd5c9a609442a88ad11ac39  gcc/graph.h
  8139dbb5830992482fb067cd9cf0794b  gcc/graphds.c
*************** f61bfa11e5056710d46d3ef576f21438  gcc/hs
*** 5461,5467 ****
  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
--- 5468,5474 ----
  ba4bc2226879e0be934d32f6f2aadeaa  gcc/hw-doloop.h
  909d931869b7d5535696c8f9e6fbc58d  gcc/hwint.c
  53f6c7822d2955059f5474124b89c8d8  gcc/hwint.h
! 468e9ae5cdbbc736482dfec69c96549c  gcc/ifcvt.c
  7cf51303d986638791f93b75b6e05e25  gcc/ifcvt.h
  c7a8101076016714491228c2c888df88  gcc/inchash.c
  1a0d7710c9a7b84ecbb544fedf87876c  gcc/inchash.h
*************** c10958cc3a7b24c385a20752fe3a2e0d  gcc/in
*** 5479,5487 ****
  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
--- 5486,5494 ----
  819569bc34e13c349c3932d6e6da1df2  gcc/intl.c
  bb3281212ea808669439ad4662b1b953  gcc/intl.h
  9091098d66baa63d871f42b506403c89  gcc/ipa-comdats.c
! 4a2cd0714dd002fe024491442bbbe527  gcc/ipa-cp.c
  de4f6e1ed44e7c2c2979237aed35b442  gcc/ipa-devirt.c
! bb4167e5f1881c114cd64b3bad2eeaa4  gcc/ipa-fnsummary.c
  074cb8448c24cdcd2c461a1010d38ba6  gcc/ipa-fnsummary.h
  8a41316f338b5a85f877fd92ef93cccf  gcc/ipa-hsa.c
  53d00c9b7b15544414d17d6417e0cd41  gcc/ipa-icf-gimple.c
*************** bfc25a0b140dcb9010bed1d5cda4ac03  gcc/ip
*** 5492,5516 ****
  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
--- 5499,5523 ----
  548b57d8647aadd1ddfdfe86db803ae0  gcc/ipa-inline-transform.c
  583cb3e30c6bd939aa176db36f0fad67  gcc/ipa-inline.c
  bcd49baed1b788693f2054a0dccd974d  gcc/ipa-inline.h
! ed8330c1a7af8690e589b8713b0381f7  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
! 0a9898dba5d60ac9ef5179f81186fd1f  gcc/ipa-prop.c
! 58b790b36f0d1ef3a799a5014f4ba30a  gcc/ipa-prop.h
! 7af7c417bb739ff28dd735f58891e94e  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
! 2c6cc867d566dd470f041f60e625c3af  gcc/ipa-sra.c
  455cfd66c52224becd8618c34429a359  gcc/ipa-utils.c
  06d9500a201d2a69eb2f99ba5a3525a5  gcc/ipa-utils.h
  07a2becdd98104b287d8d760fcf0f7cd  gcc/ipa-visibility.c
! 98e8832e00f0aa9d1e5319aac879cfa8  gcc/ipa.c
  ba0f8a4827b070b9b7f97d9d09936884  gcc/ira-build.c
  433798122aec602e970402e8b960d598  gcc/ira-color.c
  8d2f4b9c89bc42d97800f26301dcdc10  gcc/ira-conflicts.c
*************** b8e3c890bc1ccade77558f2eba0dce60  gcc/ir
*** 5521,5529 ****
  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
--- 5528,5536 ----
  94db6b40114ccb20995ee760399d65f5  gcc/ira.c
  bcf6b7eea8ae7e6b363a86565178be1f  gcc/ira.h
  7a4e770c6d51b1f35bb2994ca37824aa  gcc/is-a.h
! e12ef1275522c09fceaa51e02d162a93  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! 1ab65eadbc8d42b650bf4bce38d0ac8d  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
  b39429aa4ac3879df6dcedfef177fc8f  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
*************** bdd9ccba76c8819071a037214fc12eda  gcc/ji
*** 5558,5565 ****
  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
--- 5565,5572 ----
  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
! 1b5e51b110666eae02f9cdb2b746748d  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! c0e1ffa5d37d656066daaedf759a3127  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
*************** e2064f0ad41c212d2286a5e1eac3f74e  gcc/ji
*** 5587,5595 ****
  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
--- 5594,5603 ----
  bb35ae34749c3d4b831522b940eb81d6  gcc/jit/jit-builtins.c
  090374dda1f0e505802f1f5cdb547b8b  gcc/jit/jit-builtins.h
  2378e5ac5c7a83208505ca578b7913fc  gcc/jit/jit-common.h
+ 1b75c79801ee8999f5470885283c2668  gcc/jit/jit-dejagnu.h
  ea419635755d7efb6f5fdce54e6b328e  gcc/jit/jit-logging.c
  0371184fca08135a5bd2fd6d522bd2c4  gcc/jit/jit-logging.h
! 1545061a70232b32ccb76e8f9aa8435f  gcc/jit/jit-playback.c
  3fa78ff3a4af23a1f6519b7355ed748c  gcc/jit/jit-playback.h
  408667927cd77b35ea0fc24bb362a8d2  gcc/jit/jit-recording.c
  d8362bbecabbeaa66520015ccc40463b  gcc/jit/jit-recording.h
*************** ce9938eb018513e4d37f0ba3ef363d7f  gcc/ji
*** 5605,5611 ****
  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
--- 5613,5619 ----
  aaaa50e3d4a7c60cc413faccb2d831c6  gcc/jit/notes.txt
  519256d1e6f6073febc27396bc150a7b  gcc/json.cc
  468c660d521ad598c2f63385ef52d9ab  gcc/json.h
! b96834faf2ad7069a2edb77b0f765aa2  gcc/jump.c
  228119d515593cfac00cc0aee8cacee0  gcc/langhooks-def.h
  b147eae329641650f3c48b095f474ac8  gcc/langhooks.c
  c787d9baf51bc557a95ad884fcd45b95  gcc/langhooks.h
*************** ba663f306c0c9dc5e602465aa6d791f4  gcc/li
*** 5618,5638 ****
  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
--- 5626,5646 ----
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
  fa0e89979a1d8c821d2594597ddc309b  gcc/loop-doloop.c
  899e33ea3264342544a1a784e8d2532c  gcc/loop-init.c
! 028b4c116ea87138be3800b6e6663580  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
! 77deb59fa40e538c0cc8d03861ba33d1  gcc/lra-assigns.c
  00884867b71e299135b57055ecf93608  gcc/lra-coalesce.c
! d7b02e690079d9c8c421c59ab089f7b3  gcc/lra-constraints.c
! 1f1cf5531147c3f9b045f092c72972db  gcc/lra-eliminations.c
! d6f8fe1b123ec17be05771aca8313142  gcc/lra-int.h
  131ee484a0c9bc738b870661604ff96c  gcc/lra-lives.c
  c6e8b72465923c832850bc83c9e9c085  gcc/lra-remat.c
  09fce56317682a0920a5b696ef4ca16a  gcc/lra-spills.c
! 1188ea43762dd5a5421f9cc71ed12428  gcc/lra.c
  de3a9e5dafc34e41ce918d46e8051170  gcc/lra.h
  48256086fea956f99a65ee44c8ab26be  gcc/lto-cgraph.c
  3a09f58063306a01ab493833c6f23278  gcc/lto-compress.c
*************** f601534108bd7d15ecfcf5db1692890f  gcc/lt
*** 5644,5652 ****
  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
--- 5652,5660 ----
  61996695ed1a7e1a968d13c6444854eb  gcc/lto-streamer-in.c
  2af05e42cf3672b695a784eebaa19f26  gcc/lto-streamer-out.c
  6322b1521fdaf76be3c90f339ba47a75  gcc/lto-streamer.c
! 138480b5ae8ef56e2e180063755ed01e  gcc/lto-streamer.h
  3bc10d0f98328d53593b7a5c6118b7ca  gcc/lto-wrapper.c
! 9c069eaddec7bf47b82c975f930e2d8a  gcc/lto/ChangeLog
  ff902999e2da9680340e8d0cace7ec16  gcc/lto/Make-lang.in
  6bb73fcbce79fbfce7649ed545fd08e2  gcc/lto/common.c
  12eb383f6e35176f4a54226df1009acf  gcc/lto/common.h
*************** ae1f5f39ba98a3c7758fa9933bb5e230  gcc/lt
*** 5668,5674 ****
  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
--- 5676,5682 ----
  b13745c2d7c8d78a175492fe7e3feb8d  gcc/machmode.def
  b3dde66d1523f50e15e4e0229fcf13f1  gcc/machmode.h
  b05eff1a563e18d9d927004e16b2ce00  gcc/main.c
! a053080c1b8c188948f0f19bfa055995  gcc/match.pd
  1cc67605dff78497d108bb65aec8efb3  gcc/mcf.c
  25a428eb0074bcb4e34a5faa06b0cc4d  gcc/mem-stats-traits.h
  f67514301092d230fdc3a545f4b3bfc9  gcc/mem-stats.h
*************** eccf0b52370f379dfae09512acb66ffb  gcc/me
*** 5678,5705 ****
  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
--- 5686,5713 ----
  eabfaa5f3f130f5eecd38b7e0fabf3bb  gcc/mkconfig.sh
  9000a7c1aad3bfde63573b4ed0ee23cc  gcc/mode-classes.def
  07afcffe769aaf6f4c2700740fb1def3  gcc/mode-switching.c
! 88d37b5a99a5f0472de63b2dc4e32242  gcc/modulo-sched.c
  2e0b84cc43cf21e916fc5727f4b74ff1  gcc/multiple_target.c
! f0286e85afed045fa1460dea51054718  gcc/objc/ChangeLog
  fcd05e1453dc56982727d6b4728d6ca9  gcc/objc/Make-lang.in
  88d6d4c884e7d92ad2d64ce7e15b9e97  gcc/objc/config-lang.in
  ac21dc9666c05c196265804e425f0312  gcc/objc/lang-specs.h
! 86f1d8cb0898af7276de564029954b43  gcc/objc/objc-act.c
  5c8f878c19a21af39fd93737716ca606  gcc/objc/objc-act.h
  47a5deaa30e6b91412d3fa243c6186fc  gcc/objc/objc-encoding.c
  ee24ecdf18b5da5342cb3d8b4499bc9e  gcc/objc/objc-encoding.h
! 0d553487a09eba170656b3022ad4ff7a  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
! 61d013b725cae12a3bea7ce3ca7ea9a2  gcc/objc/objc-next-metadata-tags.h
! 27ff6c2cdb30782c003f382b6fdf3f3e  gcc/objc/objc-next-runtime-abi-01.c
! 5b3fa569a8fd4188428089893f27fe8e  gcc/objc/objc-next-runtime-abi-02.c
  2a89763b1defc1d85553c320a63060db  gcc/objc/objc-runtime-hooks.h
! 95c767443f3ea23a2864aa66efab6760  gcc/objc/objc-runtime-shared-support.c
  9626708ffde2a801337d858ad9f4b9f1  gcc/objc/objc-runtime-shared-support.h
  0996fe056d9bbb9cd033a1c4cc77e561  gcc/objc/objc-tree.def
! 3b66e11e9f9056120decae03d02662d1  gcc/objcp/ChangeLog
  3cbc95bd25fa86ffaff1f83e52772e28  gcc/objcp/Make-lang.in
  c7ddd8c51d7e8c1428875a246dc4cb33  gcc/objcp/config-lang.in
  ded26818173a53d24e4db8138bb737cf  gcc/objcp/lang-specs.h
*************** be872037f2be317642757dff9ee4e7e9  gcc/ob
*** 5707,5719 ****
  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
--- 5715,5727 ----
  4d6c6650decaa2d51b88c66909397347  gcc/objcp/objcp-decl.h
  004a8fa747c0865adad4be841a260d0d  gcc/objcp/objcp-lang.c
  0886e27233c32e6179a7381c27d8b4c2  gcc/omp-builtins.def
! 7ec494cf806ea91ea351a905aa707943  gcc/omp-expand.c
  d5c5e7983604146d429dd7d971026ffc  gcc/omp-expand.h
! 996e3f954aeeb8d7543e5f2fea44df7d  gcc/omp-general.c
  9b5747816823c44340c559fe9034bd42  gcc/omp-general.h
  eec49c45264ffe98078e1790dde1d085  gcc/omp-grid.c
  58dec197c27b0fe6b637589c91ce6570  gcc/omp-grid.h
! bd45d4573e85107519ec5b683388510f  gcc/omp-low.c
  d8bb78f41734f384394b7458c6980f00  gcc/omp-low.h
  c44ad711e41ca3278cc397873a44b2fd  gcc/omp-offload.c
  fc27509534cd1450c6222e58845bcdbc  gcc/omp-offload.h
*************** fdc71225274b5bbd7461c268a4b55ce6  gcc/op
*** 5731,5739 ****
  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
--- 5739,5747 ----
  fa2a542060df3355a0449a17595e4815  gcc/optabs-libfuncs.h
  ce3203c7c65c8263219fbffa1ff0ef86  gcc/optabs-query.c
  1f74c7600f0c443bd2a7cdca35da4876  gcc/optabs-query.h
! 23481dbab0df3d241ff9621eefb0f5c3  gcc/optabs-tree.c
  94e973433ee0ce514bc9f632a4c19f18  gcc/optabs-tree.h
! 96a6beaa95b43c879f010718817d9521  gcc/optabs.c
  a630396c73c1da2c58720ee05affceab  gcc/optabs.def
  223e4d121c4d9d6d042026e30b09fd70  gcc/optabs.h
  a0dde41e8d529a09be349c6cef989ef7  gcc/optc-gen.awk
*************** f9634d3f1151e564d7cb0fc885b12d5e  gcc/pa
*** 5758,5764 ****
  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
--- 5766,5772 ----
  1f2be2b4db63158092aa9a432324b9f4  gcc/plugin.c
  1a2ee442016e04c400c5b1ecfa2b6f7a  gcc/plugin.def
  d57e52d4dd66ce4213264b80d2489b27  gcc/plugin.h
! 05b85e067c3c82a4712a30397cf623b3  gcc/po/ChangeLog
  1c98342dfff1dce80a9f3dd527d40985  gcc/po/EXCLUDES
  df8eb609dbb028d033b7d05185cc0715  gcc/po/be.gmo
  f0d7b1b3080241060878bfbc2536042b  gcc/po/be.po
*************** b00cda2a43bec932dc26a7a62d2433e4  gcc/po
*** 5803,5809 ****
  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
--- 5811,5817 ----
  3e810a4ad7bb49c60f02b4cd9631fb28  gcc/poly-int-types.h
  653045738566582cf810de3860dc9cb8  gcc/poly-int.h
  b63265778fad2e12ae472e77541500e0  gcc/postreload-gcse.c
! cf68dd5d621e98ff7a6600dd831ecae8  gcc/postreload.c
  f2c1800ed41bd812f0023ec9476be06f  gcc/predict.c
  2d7027b865f15345d18016536def0e97  gcc/predict.def
  3ffe5c036e76418548382910f68886ff  gcc/predict.h
*************** f9b0b9ccb8dce0dc6e8bd42ac39df744  gcc/re
*** 5838,5844 ****
  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
--- 5846,5852 ----
  8e54776d694e025778117e5c6cd2b732  gcc/ree.c
  befe5e6a24516f07a0b1a18ea35c02d6  gcc/reg-notes.def
  bb6e216fc486b5cadc4ece706f7f2121  gcc/reg-stack.c
! a4113db63806c0f59f4609855b310ec3  gcc/regcprop.c
  bde5467e48834f6809fe9cb47c41a8ca  gcc/regcprop.h
  1420eec348e2fde96d1e5acc37e1d4b6  gcc/reginfo.c
  8f4fe2c17357e9685afb16fbfadd234d  gcc/regrename.c
*************** bcbdd3b92acf14e4567d6d593f2135c7  gcc/re
*** 5846,5852 ****
  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
--- 5854,5860 ----
  0e8e6cb957a6286f48af42a43766157c  gcc/regs.h
  54bdd1fa2150c00899466f5e44c3be07  gcc/regset.h
  1e9242bc16fa3b3cb4f0ddd56e9ffe81  gcc/regstat.c
! a138831f4304419d97c00e8fdf37c903  gcc/reload.c
  a44890645b9dfcfa05c4af85a2fac907  gcc/reload.h
  dea38c72c4f9b81bd50774c1dee40cb1  gcc/reload1.c
  5d7ea9a101117932e6ac39594b06fc21  gcc/reorg.c
*************** cd83d2a9e863eb3f902732831333489a  gcc/re
*** 5856,5876 ****
  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
--- 5864,5884 ----
  63bf1d95d167ccb1b416c22e60401626  gcc/rtl-error.h
  abb55417521c73d3ddfa65202e62bbdc  gcc/rtl-iter.h
  6c258d748c725574ffe9c742761a8b3e  gcc/rtl-tests.c
! 8968b5027d04e031ac3296efb6d74b09  gcc/rtl.c
  160eb5d0d186585de6b61ba5d972ee7b  gcc/rtl.def
! a472141715ae570344acbc385af3d91d  gcc/rtl.h
! 251d6d241007d286454ff2f490beea36  gcc/rtlanal.c
  942d35a2f884f0f12d2001b6439cddc3  gcc/rtlhash.c
  57e6da5db1b3709e1315094c4bf97280  gcc/rtlhash.h
  c677566b52c69cc4009d23260723bee9  gcc/rtlhooks-def.h
  1462a0e3e247418bf9fefea584d37f6a  gcc/rtlhooks.c
! 68b70fc0aeadc54fbdf7775a15009b72  gcc/rtx-vector-builder.c
! e9a50b2c00f0d8821b4f357433f75ddf  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
! b3b3edd8d449c633bc57a13b92adaf4c  gcc/sanopt.c
  373f74032e8a5f451fed82a6278199be  gcc/sbitmap.c
  483913290dec10f928e898c49a41451a  gcc/sbitmap.h
  557abf726d1b4112b7487455dca2835d  gcc/sched-deps.c
*************** cd47a586f84774287b1ae6039918de93  gcc/se
*** 5893,5902 ****
  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
--- 5901,5910 ----
  ef568131c8d4d7222af07d3763b56e65  gcc/sese.c
  864eb28c47f8c33ba1bf884c029fbcc1  gcc/sese.h
  00fd88b09937f2b769fa2f9272f7ab17  gcc/shortest-paths.h
! 40421fa3e39ae2e93ed6b2df96838739  gcc/shrink-wrap.c
  5e637aae9a69290f9f96753c397c1d88  gcc/shrink-wrap.h
  7badcd0ab93bdcec709d922156555d25  gcc/signop.h
! 3601d083cf8a9ed555f96e380218398c  gcc/simplify-rtx.c
  14fe5d55540c4c40ffc22d287df5df9e  gcc/sort.cc
  1a7797b28152cdee032918d0640d8674  gcc/sparseset.c
  f4db2c7d894531a625d21c115830e0cf  gcc/sparseset.h
*************** f8d497da9f2552791c318e340c05442f  gcc/st
*** 5914,5920 ****
  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
--- 5922,5928 ----
  4c1ba43b39de56389d70edd54dbe93eb  gcc/statistics.h
  69aec0a6256ffea36bec6b009cbee78b  gcc/stmt.c
  92af97d1e25f56f0c912e3cb2deb7f26  gcc/stmt.h
! c6995c0084fde37f5bddf0979102a23a  gcc/stor-layout.c
  1e2af7b36b8fd71912d0bb841be0513c  gcc/stor-layout.h
  27b1078769e011b4a396d9ecb63d9708  gcc/store-motion.c
  cbb758f617ea43fc42398026a1f8180e  gcc/streamer-hooks.c
*************** d6ecdbf40714f0d6f9a354ad491022af  gcc/ta
*** 5932,5943 ****
  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
--- 5940,5951 ----
  cc33296515dbe6d36bf2e748250b71ce  gcc/target-globals.h
  28240c397814bb44a0b9b81c24f5c902  gcc/target-hooks-macros.h
  e2164620d88b7b5e86874b70ea560f64  gcc/target-insns.def
! 7515cebb8fe4bceec82706ab3d5e4061  gcc/target.def
  89a400520f2087866beeb8140416f45d  gcc/target.h
  d4582a9831d4b16fe13326c8c145c4e5  gcc/targhooks.c
  7bbf8e5d152f6a9369b8fad9f737885a  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 4ac36cd7082157fc2a61769c67f655b4  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** d57f0b6d660c8299b95ba02b346d2d76  gcc/te
*** 8709,8727 ****
  30f55184465e5031498ef7eb0d2b75e4  gcc/testsuite/c-c++-common/Wshift-count-negative-2.c
  d425900c0046df4dd9d326f6c8eb2d67  gcc/testsuite/c-c++-common/Wshift-count-overflow-1.c
  7f7dfe9827844964aa5913a0df77bfda  gcc/testsuite/c-c++-common/Wshift-count-overflow-2.c
! b4259718f4cfc2633ca66fce82e19921  gcc/testsuite/c-c++-common/Wshift-negative-value-1.c
! 9c17780b7734fb8edd8d6132d7571dea  gcc/testsuite/c-c++-common/Wshift-negative-value-2.c
! 9cde469967b17467bf200952edf9872c  gcc/testsuite/c-c++-common/Wshift-negative-value-3.c
! 26642fe2d9af413debdae5db59b1f3ff  gcc/testsuite/c-c++-common/Wshift-negative-value-4.c
  4eb245cdd007f951220ef4ce4752393f  gcc/testsuite/c-c++-common/Wshift-negative-value-5.c
  2ec4a0079f61044cd2556d10f9086c01  gcc/testsuite/c-c++-common/Wshift-negative-value-6.c
! 23215ac7f9da39dedf899636af7edacc  gcc/testsuite/c-c++-common/Wshift-overflow-1.c
! 83d4f8080bdfbd062809fe67c5263ebe  gcc/testsuite/c-c++-common/Wshift-overflow-2.c
  9c03a6a952358fcf4ea17c9f5770eb36  gcc/testsuite/c-c++-common/Wshift-overflow-3.c
  ccf9803376f18fed70c0b2b90633ddb4  gcc/testsuite/c-c++-common/Wshift-overflow-4.c
! ba76c2340f7c7f9d54120447cf44b260  gcc/testsuite/c-c++-common/Wshift-overflow-5.c
! f8b8dcb9f64cd4f1158a36e44cdf76b7  gcc/testsuite/c-c++-common/Wshift-overflow-6.c
! 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
--- 8717,8744 ----
  30f55184465e5031498ef7eb0d2b75e4  gcc/testsuite/c-c++-common/Wshift-count-negative-2.c
  d425900c0046df4dd9d326f6c8eb2d67  gcc/testsuite/c-c++-common/Wshift-count-overflow-1.c
  7f7dfe9827844964aa5913a0df77bfda  gcc/testsuite/c-c++-common/Wshift-count-overflow-2.c
! e2c873f32cb250611ac293a0172ee346  gcc/testsuite/c-c++-common/Wshift-negative-value-1.c
! 6fba445c92b9950ed629192d310c29ed  gcc/testsuite/c-c++-common/Wshift-negative-value-10.c
! 78eb4460866048e93bd481aa5500060d  gcc/testsuite/c-c++-common/Wshift-negative-value-2.c
! 0c83b576964ab3c215f3c28cb4359f26  gcc/testsuite/c-c++-common/Wshift-negative-value-3.c
! 722f2c0b564c7e4340515aed7f9269b7  gcc/testsuite/c-c++-common/Wshift-negative-value-4.c
  4eb245cdd007f951220ef4ce4752393f  gcc/testsuite/c-c++-common/Wshift-negative-value-5.c
  2ec4a0079f61044cd2556d10f9086c01  gcc/testsuite/c-c++-common/Wshift-negative-value-6.c
! 44b521dad3ee71efc0d8c21a07ee8c28  gcc/testsuite/c-c++-common/Wshift-negative-value-7.c
! 94692676348c71ef48c996365643e2ff  gcc/testsuite/c-c++-common/Wshift-negative-value-8.c
! 1ea3b563c1990488520fc81142859f02  gcc/testsuite/c-c++-common/Wshift-negative-value-9.c
! 3d7f806b54f140ba9abdd8a91a1729b7  gcc/testsuite/c-c++-common/Wshift-overflow-1.c
! 2bbd07737f36ce91f8f3968f72e2708a  gcc/testsuite/c-c++-common/Wshift-overflow-10.c
! ea144bfe8a7745b09fb88195a3210b6b  gcc/testsuite/c-c++-common/Wshift-overflow-11.c
! b7da970f89748d7c226b2e0c03b1e33a  gcc/testsuite/c-c++-common/Wshift-overflow-12.c
! c3095c3809f4520acbde79af92e6af17  gcc/testsuite/c-c++-common/Wshift-overflow-2.c
  9c03a6a952358fcf4ea17c9f5770eb36  gcc/testsuite/c-c++-common/Wshift-overflow-3.c
  ccf9803376f18fed70c0b2b90633ddb4  gcc/testsuite/c-c++-common/Wshift-overflow-4.c
! 19df8fb7876aad60a36e478ee70c2d1a  gcc/testsuite/c-c++-common/Wshift-overflow-5.c
! 3bc93d6eade41fcab2b83bfa4a5b2588  gcc/testsuite/c-c++-common/Wshift-overflow-6.c
! e68c59b3c604b0f464d1f4c02629a7a5  gcc/testsuite/c-c++-common/Wshift-overflow-7.c
! fc40f165305f408a7e0fc682ac4e4e21  gcc/testsuite/c-c++-common/Wshift-overflow-8.c
! f6687e96d1a359321b94d5babcf73720  gcc/testsuite/c-c++-common/Wshift-overflow-9.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
*************** e1214c78ebce01448d71917e783e66f3  gcc/te
*** 8922,8927 ****
--- 8939,8945 ----
  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
+ 4f93f0d47fecc8e0bc7299754ffe6180  gcc/testsuite/c-c++-common/builtin-convertvector-3.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
*************** ac27af3ea0b119b95109334b03d48ca9  gcc/te
*** 8970,8975 ****
--- 8988,8994 ----
  23d2256fdd9c03d95361e499c9aa5d11  gcc/testsuite/c-c++-common/cpp/openmp-define-1.c
  1ba0ade791f40edbd80fddddb700282b  gcc/testsuite/c-c++-common/cpp/openmp-define-2.c
  88fdfa7ad0dd8169a90963238ee1847e  gcc/testsuite/c-c++-common/cpp/openmp-define-3.c
+ fb93693065e3e66c29a51aa146b3d3fa  gcc/testsuite/c-c++-common/cpp/pr104147.c
  c85025f0def783f70f9bb6a4ea9a23f3  gcc/testsuite/c-c++-common/cpp/pr45457.c
  50c40c5b8912ad75a2e46fd06778339d  gcc/testsuite/c-c++-common/cpp/pr57580.c
  6b93142f33f13f29aa948ea5e779f1a0  gcc/testsuite/c-c++-common/cpp/pr58844-1.c
*************** aa884d944cf2bbf71c7c642a33b7244f  gcc/te
*** 8995,9003 ****
--- 9014,9024 ----
  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
+ 83bc077362cc4ef37199360c8b7fe130  gcc/testsuite/c-c++-common/cpp/va-opt-10.c
  0f93514d0ad79c03edfd672fb354e619  gcc/testsuite/c-c++-common/cpp/va-opt-2.c
  d4400c02e16c9ce8399bebed26d20e37  gcc/testsuite/c-c++-common/cpp/va-opt-3.c
  ffa7f1250b7f00a641ad13c5836e4f01  gcc/testsuite/c-c++-common/cpp/va-opt-4.c
+ 2afcba443f0dcc8170bbf6957a6f9cad  gcc/testsuite/c-c++-common/cpp/va-opt-9.c
  111311014e0b7d3088a84587438910e7  gcc/testsuite/c-c++-common/cpp/va-opt-error.c
  eea6a019e69d78eae4d98554090253c2  gcc/testsuite/c-c++-common/cpp/va-opt-pedantic.c
  170aae082482e5179e2b24f5f07b815a  gcc/testsuite/c-c++-common/cpp/va-opt.c
*************** d99c4bf7d10ae08e76de310ac61ac639  gcc/te
*** 9153,9158 ****
--- 9174,9180 ----
  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
*************** db900e16f622568df37b1e202fd25b9f  gcc/te
*** 9408,9413 ****
--- 9430,9439 ----
  ef86bb29dfbea0543e8ca02ce440c823  gcc/testsuite/c-c++-common/gomp/ordered-2.c
  c8eb196146424dae7866984b548de18b  gcc/testsuite/c-c++-common/gomp/ordered-3.c
  5e682cf26c41baf2449ab35ba5792ab9  gcc/testsuite/c-c++-common/gomp/ordered-4.c
+ 7c7abae5700e726f7de5bd56574429f5  gcc/testsuite/c-c++-common/gomp/pr100450.c
+ 345ac275dfe65e2e8ba683d2c389ebc3  gcc/testsuite/c-c++-common/gomp/pr101535-1.c
+ b3c3fe5a4ecc31231711cb240274d62c  gcc/testsuite/c-c++-common/gomp/pr101535-2.c
+ 5d5843e74a197943e19c270c43a913e1  gcc/testsuite/c-c++-common/gomp/pr102431.c
  e16ef156ad193ef1f3cba60ad16e57ab  gcc/testsuite/c-c++-common/gomp/pr51360.c
  84c977571aeb43c0224137efe7f5b213  gcc/testsuite/c-c++-common/gomp/pr53580.c
  28bfd873981083756a16f70fdb0b86db  gcc/testsuite/c-c++-common/gomp/pr54017.c
*************** a7f92f1077c23eb293a388ad0c9418d7  gcc/te
*** 9544,9549 ****
--- 9570,9580 ----
  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
+ ae2fa528701d8a7118d0446869032faa  gcc/testsuite/c-c++-common/pr100785.c
+ 05e5f34e1a745d2204989ec4f256e3c7  gcc/testsuite/c-c++-common/pr101537.c
+ 3b77bbb422eaff74de51c6cd92512232  gcc/testsuite/c-c++-common/pr103881.c
+ f7797890edb72db96871a3c3582464f4  gcc/testsuite/c-c++-common/pr105186.c
+ d5189fe9f7cb5f4a822563c9d438762d  gcc/testsuite/c-c++-common/pr105998.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
*************** ad0210bfe2c0bf78466fbeb232c7f222  gcc/te
*** 10007,10012 ****
--- 10038,10044 ----
  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
+ 4b4093a47a88d4ed45fadb509277b422  gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-2.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
*************** a0b5d18df0a804f16c6267ecf5a122ca  gcc/te
*** 10084,10089 ****
--- 10116,10122 ----
  ebe1e969e1fcbcccd3267df96d65b76a  gcc/testsuite/c-c++-common/ubsan/pr64289.c
  fed93d1bb6b1957637e7b365b237b897  gcc/testsuite/c-c++-common/ubsan/pr64344-1.c
  306c6efeca8e1593474ff905ab8ffa61  gcc/testsuite/c-c++-common/ubsan/pr64344-2.c
+ 2e2938d0c22b01cf1410cf980af98484  gcc/testsuite/c-c++-common/ubsan/pr64888.c
  b61c8d67fc16a4a400c244d8171acbc1  gcc/testsuite/c-c++-common/ubsan/pr64906.c
  0278447631e1e7661d0dc1c45df16b8a  gcc/testsuite/c-c++-common/ubsan/pr65081.c
  84e6340179dbdb8d0683b92ea0ba82db  gcc/testsuite/c-c++-common/ubsan/pr65367.c
*************** c7c251f16058a4d4f1db8e0df28385ff  gcc/te
*** 10279,10285 ****
  2e2b81268b12d9840736f5f280fdcd82  gcc/testsuite/g++.dg/abi/anon1.C
  d612831779ae34b6217159ef7510dee7  gcc/testsuite/g++.dg/abi/anon2.C
  4024cd0fe696880556f4db4786e81c53  gcc/testsuite/g++.dg/abi/anon3.C
! 0347f2178e5e23ce57e71d0e23c56c10  gcc/testsuite/g++.dg/abi/anon4.C
  b03e050cd2306239cb18c55acf037ffa  gcc/testsuite/g++.dg/abi/anon5.C
  770a1857da6a05380e26eabb7f0ecb92  gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
  cb4ad686f7564a8666256212398d911d  gcc/testsuite/g++.dg/abi/arm_cxa_vec2.C
--- 10312,10318 ----
  2e2b81268b12d9840736f5f280fdcd82  gcc/testsuite/g++.dg/abi/anon1.C
  d612831779ae34b6217159ef7510dee7  gcc/testsuite/g++.dg/abi/anon2.C
  4024cd0fe696880556f4db4786e81c53  gcc/testsuite/g++.dg/abi/anon3.C
! 33fdd2e467a8fd1571a8622c9dd56bcd  gcc/testsuite/g++.dg/abi/anon4.C
  b03e050cd2306239cb18c55acf037ffa  gcc/testsuite/g++.dg/abi/anon5.C
  770a1857da6a05380e26eabb7f0ecb92  gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
  cb4ad686f7564a8666256212398d911d  gcc/testsuite/g++.dg/abi/arm_cxa_vec2.C
*************** afcddf1b30dc19c258215591ad57145a  gcc/te
*** 10368,10373 ****
--- 10401,10407 ----
  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
*************** b12b848862ca9a5a126f8b4e8792dc16  gcc/te
*** 10567,10572 ****
--- 10601,10607 ----
  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
+ b03be3a03970717959df65ccdcbebe88  gcc/testsuite/g++.dg/asan/pr104449.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
  74a04a20e12a8acd0fd7d05742cf8d63  gcc/testsuite/g++.dg/asan/pr62017.C
  505943436d80a41b5e95bf0b67db97cd  gcc/testsuite/g++.dg/asan/pr64937.C
*************** e6954ac1ae67eacbb067ca0a7269df99  gcc/te
*** 10776,10787 ****
  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
--- 10811,10824 ----
  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
! 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
*************** cb637c31f7267e6cb6c02a89a06fecf0  gcc/te
*** 10852,10857 ****
--- 10889,10895 ----
  79b01ce4c0ddc29b29698e41deb18cda  gcc/testsuite/g++.dg/concepts/placeholder4.C
  df6b9790772106cf6b4000ea3f4e6df7  gcc/testsuite/g++.dg/concepts/placeholder5.C
  a3041d3b0ddd1e4e139656fef2568888  gcc/testsuite/g++.dg/concepts/placeholder6.C
+ 91bbc43bd292628bdbb650fc92890934  gcc/testsuite/g++.dg/concepts/pr105061.C
  bff91be12faf541761b92b8a7ac5de0f  gcc/testsuite/g++.dg/concepts/pr65634.C
  e1b13bd2e7e5b547138d71c7e88ff143  gcc/testsuite/g++.dg/concepts/pr65636.C
  c793a07aee900824ca395d9ccff6ee08  gcc/testsuite/g++.dg/concepts/pr65681.C
*************** a647e8fcab9b54f8fc6ba62e8b48ef4a  gcc/te
*** 10973,10978 ****
--- 11011,11017 ----
  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
*************** f41f630eebfc858cbd9471df42c4a56a  gcc/te
*** 11074,11079 ****
--- 11113,11119 ----
  05100d20f9b9853bd56ead602feb1718  gcc/testsuite/g++.dg/coroutines/pr95477.C
  ad31826ccc407ca77f13ccedabe598c9  gcc/testsuite/g++.dg/coroutines/pr95505.C
  d7c4d12326724992c8854e0b38126068  gcc/testsuite/g++.dg/coroutines/pr95518.C
+ 88de21db6a5919870fc423644c307d0f  gcc/testsuite/g++.dg/coroutines/pr95520.C
  c0851b55f1db10d372a842d773d11661  gcc/testsuite/g++.dg/coroutines/pr95591.C
  a49707211a5fe8dc7634517c75f89d56  gcc/testsuite/g++.dg/coroutines/pr95599.C
  8647f401f04a81b704516887be4b28c4  gcc/testsuite/g++.dg/coroutines/pr95616-0-no-exceptions.C
*************** ae3a00e426b12806ada699df6be4f347  gcc/te
*** 11381,11386 ****
--- 11421,11428 ----
  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
+ 3d9ba2b7ecc7fefba84ee62ec62685ca  gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C
+ d5f8995eb967b699d6937c5a92465df7  gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.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
*************** e2071d46036912555df15661828c4105  gcc/te
*** 11390,11401 ****
--- 11432,11445 ----
  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
+ 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
+ 4801ac3f92233a9abd7960d6704f81a5  gcc/testsuite/g++.dg/cpp0x/alias-decl-variadic2.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
*************** c11fb9d024f89aea2e027172cee4bda2  gcc/te
*** 11496,11501 ****
--- 11540,11547 ----
  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
+ eeac975a1b841cef4d5a4c468314ed8c  gcc/testsuite/g++.dg/cpp0x/constexpr-104472.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
*************** f6676b44835c5329c16a5bb57f317adc  gcc/te
*** 11625,11630 ****
--- 11671,11677 ----
  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
  271aba96fb8bf37bed15d4848cc13f01  gcc/testsuite/g++.dg/cpp0x/constexpr-bitfield3.C
*************** e4e15e959aaae288fa7a722d7abb7509  gcc/te
*** 11634,11639 ****
--- 11681,11688 ----
  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
*************** baf44bb3bbcc1b19835fcba0732c07b8  gcc/te
*** 11701,11706 ****
--- 11750,11756 ----
  753e5f64602d5b078b77508da90185f6  gcc/testsuite/g++.dg/cpp0x/constexpr-empty13.C
  2a33a8f9f599ab8ad56bcf27c4f4faa1  gcc/testsuite/g++.dg/cpp0x/constexpr-empty14.C
  39d49ad5520441d592a3a79408382c59  gcc/testsuite/g++.dg/cpp0x/constexpr-empty15.C
+ a275ad66d9fc657917af98f6fe78b474  gcc/testsuite/g++.dg/cpp0x/constexpr-empty16.C
  aef682375c033fe1283502c7f213d6ca  gcc/testsuite/g++.dg/cpp0x/constexpr-empty2.C
  f2be36db1d24de846eca69288f8e004a  gcc/testsuite/g++.dg/cpp0x/constexpr-empty3.C
  933cc130bc4ebc33fb81e8901f604e0a  gcc/testsuite/g++.dg/cpp0x/constexpr-empty4.C
*************** c42ce017f72e0ac9bc977500bc2d096c  gcc/te
*** 11715,11720 ****
--- 11765,11771 ----
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
  19eb610e0af0918f7473197af97c60d4  gcc/testsuite/g++.dg/cpp0x/constexpr-expinst.C
  54953d2c31360e2eeefa3305044bd360  gcc/testsuite/g++.dg/cpp0x/constexpr-explicit-inst.C
+ 98f85ca947a471fd37217a8fc9e771fb  gcc/testsuite/g++.dg/cpp0x/constexpr-fno-elide-ctors1.C
  aa1967267d5d21b22c4d54dfa617fcfc  gcc/testsuite/g++.dg/cpp0x/constexpr-fnptr.C
  928d1a775ac6fb68d34dd89fdd936ada  gcc/testsuite/g++.dg/cpp0x/constexpr-fold1.C
  216c6548cc77db922bab7f78e595ac97  gcc/testsuite/g++.dg/cpp0x/constexpr-fold2.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
--- 11844,11850 ----
  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
*************** ec6bf8354ca1b8834959e856431d6ac4  gcc/te
*** 11913,11918 ****
--- 11964,11970 ----
  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
*************** be032bb4361dd11f064d960f788b56ae  gcc/te
*** 12200,12205 ****
--- 12252,12258 ----
  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
  c2982fdb85366105719171be7bb04eb0  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  bcba4e18395ca9e8f9917788775bc3c1  gcc/testsuite/g++.dg/cpp0x/fntmp-equiv1.C
*************** f8949630a7a02f66d0ceb796b5525cb8  gcc/te
*** 12406,12411 ****
--- 12459,12467 ----
  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
+ 0eb8216638573813eaf1d41d50899505  gcc/testsuite/g++.dg/cpp0x/initlist-new5.C
+ eb8899f6095da627d668fbc099e59316  gcc/testsuite/g++.dg/cpp0x/initlist-new6.C
+ 99344f656bc7edb059f04cde31dcaa17  gcc/testsuite/g++.dg/cpp0x/initlist-nrv1.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
*************** dbabde6c9b65d0b2533bd2602dd6b6c4  gcc/te
*** 12623,12628 ****
--- 12679,12685 ----
  f84ddfe5534d65a28836f3e1f7f92bbe  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-copy.C
  6ae63f2c8f3dcde85465487f60927b71  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctor-neg.C
  8e8636849d06c71cef7fbe0973b2ace5  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ctors.C
+ b7541efb5750181bf83ef0c6c0074ed7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-current-inst1.C
  620c51f35ce9293367e1ae8b3038f83a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-debug.C
  23762f5c7832f1cc2669f9358277141c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype1.C
  3ad56243aecddd505746acfd0489c7b7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype2.C
*************** b4ee4e860077c15b5f446a344ee80eb1  gcc/te
*** 12716,12721 ****
--- 12773,12779 ----
  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
*************** dbb54b67a2672d41d2a9ce040685f064  gcc/te
*** 12887,12892 ****
--- 12945,12953 ----
  0899d3ce9c806d82592b9a4f2847bdf8  gcc/testsuite/g++.dg/cpp0x/noexcept57.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
+ 02e09b143c63de3a81f9191fa6e9404d  gcc/testsuite/g++.dg/cpp0x/noexcept70.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
*************** e754c2eb76d7ab2dff572da57c588a4d  gcc/te
*** 12936,12941 ****
--- 12997,13004 ----
  0b3784303bce9e43936f535a111b1d8f  gcc/testsuite/g++.dg/cpp0x/nsdmi-template19.C
  d83133afa9fe5d533ed8b6cecc90cc44  gcc/testsuite/g++.dg/cpp0x/nsdmi-template2.C
  f900a961724b234dbae2b1dd5e2b9ae6  gcc/testsuite/g++.dg/cpp0x/nsdmi-template20.C
+ 55e1dee2146a8988ec9a59e858dadc99  gcc/testsuite/g++.dg/cpp0x/nsdmi-template21.C
+ 93773e99f41e047cdb20c1fb229d81d2  gcc/testsuite/g++.dg/cpp0x/nsdmi-template21a.C
  a4838f227c782d1dc8cc894a19deb0d1  gcc/testsuite/g++.dg/cpp0x/nsdmi-template3.C
  ecc55c2acf604366d5eab66ebf6a29dd  gcc/testsuite/g++.dg/cpp0x/nsdmi-template4.C
  2df81a05f5de27f3cb083ad4a290512a  gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
*************** cce8d7efe84ba47b6a9a649b7e96db1d  gcc/te
*** 13011,13016 ****
--- 13074,13080 ----
  cd57481c3233939f35a9152176ba0610  gcc/testsuite/g++.dg/cpp0x/nullptr43.C
  3bffe4cc168fde4f27dd432ad19e2f12  gcc/testsuite/g++.dg/cpp0x/nullptr44.C
  afdfafb40dd063d062a20c67e4309ae4  gcc/testsuite/g++.dg/cpp0x/nullptr45.C
+ fd97d08f3976a4a83f1c49415efc3eca  gcc/testsuite/g++.dg/cpp0x/nullptr46.C
  9ac544c85b4718bef7e0acbc03dd004f  gcc/testsuite/g++.dg/cpp0x/overflow1.C
  fb7661df85ad6b415b31574c67fa4ee0  gcc/testsuite/g++.dg/cpp0x/overload-conv-1.C
  5ca00ae02aa7919e0b3d9730fa9f9ac5  gcc/testsuite/g++.dg/cpp0x/overload-conv-2.C
*************** d2a1963e44488193e2d5ae183c548b2d  gcc/te
*** 13026,13031 ****
--- 13090,13097 ----
  ec3fccada021f17376f5255d71d5545b  gcc/testsuite/g++.dg/cpp0x/override4.C
  63a98616cfbc7aecbf849404acae0e55  gcc/testsuite/g++.dg/cpp0x/parse1.C
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
+ 6802ea11c1f5811ef4a3d0490040dcc1  gcc/testsuite/g++.dg/cpp0x/pr102305.C
+ 0f5046ead85037afdaba1b501accc894  gcc/testsuite/g++.dg/cpp0x/pr105256.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
  d65e06a3830e2b511cc25692b94615a1  gcc/testsuite/g++.dg/cpp0x/pr31432.C
*************** f3e3d98fcbe616df26f26eb779c66c1f  gcc/te
*** 13961,13966 ****
--- 14027,14033 ----
  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
+ 6193cad472a1684eae83fead9fc5d0d7  gcc/testsuite/g++.dg/cpp1y/constexpr-104513.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
*************** d8d5c97f0cfc535ec6b3092d8c2ad0a6  gcc/te
*** 14000,14005 ****
--- 14067,14074 ----
  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
  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
*************** fdb8b6b86d13d007f2629fe0e79ef65b  gcc/te
*** 14017,14023 ****
  e6815ab618d6af99025ddeacf6ab0545  gcc/testsuite/g++.dg/cpp1y/constexpr-copy3.C
  4808950072f67f78922c9046e31e486d  gcc/testsuite/g++.dg/cpp1y/constexpr-dr1684.C
  9b6ce1c2202c1ce9ea82fda5f060499b  gcc/testsuite/g++.dg/cpp1y/constexpr-empty1.C
! 9e871814c326197a59b4ae1738313788  gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
  d4fc72d059e047077b1d6033d4c13026  gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
  f1a863bb06163b628459fbc6a355ec3f  gcc/testsuite/g++.dg/cpp1y/constexpr-empty4.C
  995873768089d805df939c03d2be8b1c  gcc/testsuite/g++.dg/cpp1y/constexpr-hana1.C
--- 14086,14092 ----
  e6815ab618d6af99025ddeacf6ab0545  gcc/testsuite/g++.dg/cpp1y/constexpr-copy3.C
  4808950072f67f78922c9046e31e486d  gcc/testsuite/g++.dg/cpp1y/constexpr-dr1684.C
  9b6ce1c2202c1ce9ea82fda5f060499b  gcc/testsuite/g++.dg/cpp1y/constexpr-empty1.C
! b8279a438f13574240482fd43dc100d3  gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
  d4fc72d059e047077b1d6033d4c13026  gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
  f1a863bb06163b628459fbc6a355ec3f  gcc/testsuite/g++.dg/cpp1y/constexpr-empty4.C
  995873768089d805df939c03d2be8b1c  gcc/testsuite/g++.dg/cpp1y/constexpr-hana1.C
*************** c158c48cdc574a61e06922b17254f0d7  gcc/te
*** 14141,14146 ****
--- 14210,14216 ----
  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
*************** fd449c2760b279bd0767e28da8a563bf  gcc/te
*** 14169,14174 ****
--- 14239,14245 ----
  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
*************** d91a981f54ab2a15c0e9427ccb338f24  gcc/te
*** 14184,14189 ****
--- 14255,14261 ----
  714b0ec0672f03bb83435eb7e8946993  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this1a.C
  5d6aac41102fa948ecd5b469abc35503  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this2.C
  5272ec327005dde6e5a2aaffb7102e42  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this3.C
+ 85be199d2e0d4a7142fba0bb5f749ab7  gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C
  06ba6684e3759115ec5098f38667687b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-trailing1.C
  e947551033232c5abe95cce5adfd22aa  gcc/testsuite/g++.dg/cpp1y/lambda-generic-udt.C
  7515a5372d247dd5a94ef0626c25c2ae  gcc/testsuite/g++.dg/cpp1y/lambda-generic-uneval1.C
*************** bedfe39f995dd913a1715072975f6a1c  gcc/te
*** 14250,14255 ****
--- 14322,14328 ----
  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
+ 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
*************** eed72e4e3c9aec24d904cb1baa5f2711  gcc/te
*** 14357,14362 ****
--- 14430,14436 ----
  11abcca649e7c260d96b20dd2bb71bc7  gcc/testsuite/g++.dg/cpp1y/pr85076.C
  e4968a83309cb7b0ed242d3d6971a6a3  gcc/testsuite/g++.dg/cpp1y/pr87322.C
  82895ea6b585468afa3ea096948a4f4d  gcc/testsuite/g++.dg/cpp1y/pr87410.C
+ c25e5ab56f549206e3abcdde00c1515e  gcc/testsuite/g++.dg/cpp1y/pr88872.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
*************** ca10f046e47ea09ba5b87084372f1ce2  gcc/te
*** 14478,14483 ****
--- 14552,14558 ----
  4dbddfffb31fb9d4ab9b40b6ac489d84  gcc/testsuite/g++.dg/cpp1z/aligned-new6.C
  c5e8ac858eac19a1f1f10709e9b49389  gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
  1c005f415746635350d5fd1bf3068b93  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
+ 91a3b7a59ec3f2f070c0cc2e24a851b2  gcc/testsuite/g++.dg/cpp1z/aligned-new9.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
*************** e5c7ffb3df4f8d1853f8366805381932  gcc/te
*** 14556,14569 ****
--- 14631,14647 ----
  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
+ 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
  db812bf22a911000584c903aac50ffd3  gcc/testsuite/g++.dg/cpp1z/constexpr-96862.C
  58f65982ee216b64a2a721ba861c9e63  gcc/testsuite/g++.dg/cpp1z/constexpr-array1.C
+ 70b535b9e8c7e79ff364a6bca9996aa2  gcc/testsuite/g++.dg/cpp1z/constexpr-array2.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
+ 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
*************** bb80552b47c4d46b3400512a6ca45bad  gcc/te
*** 14691,14696 ****
--- 14769,14775 ----
  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
+ 3abc6084e572264410718d38beb290bb  gcc/testsuite/g++.dg/cpp1z/eval-order11.C
  bb194d9ce590c9e5e69935ebac0f25e4  gcc/testsuite/g++.dg/cpp1z/eval-order2.C
  89fdd37f4580457e23eeb34adcf4d4e0  gcc/testsuite/g++.dg/cpp1z/eval-order3.C
  6d8d378fedaf65b4cb89952060799280  gcc/testsuite/g++.dg/cpp1z/eval-order4.C
*************** eb09374f9955af523e3f7767c4ef9b75  gcc/te
*** 14759,14764 ****
--- 14838,14844 ----
  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
*************** db6d80bc5f29d89b66dc0f6ca5cdfd89  gcc/te
*** 14792,14797 ****
--- 14872,14879 ----
  549516884facf6ccae16b7de38b2931d  gcc/testsuite/g++.dg/cpp1z/nodiscard5.C
  e9014cdec66bf94006c681e6825cac7f  gcc/testsuite/g++.dg/cpp1z/nodiscard6.C
  e194031b93147b17a284c4c8d6501ead  gcc/testsuite/g++.dg/cpp1z/nodiscard7.C
+ 47b3a4f8bb1d8252a7359be76bf3eb86  gcc/testsuite/g++.dg/cpp1z/nodiscard8.C
+ d7e96e57c23e0a8205a6c88d99e7a5df  gcc/testsuite/g++.dg/cpp1z/nodiscard9.C
  ccacb58d42aa6d504b3629fce8ef518f  gcc/testsuite/g++.dg/cpp1z/noexcept-type1.C
  8fbb465fc69c13a4894d2eb47d00e941  gcc/testsuite/g++.dg/cpp1z/noexcept-type11.C
  1caccdf4e16515c79981341c1b7a9d86  gcc/testsuite/g++.dg/cpp1z/noexcept-type11a.C
*************** e2d27f023f98f0f6d5bbc4b4af73820d  gcc/te
*** 14808,14813 ****
--- 14890,14897 ----
  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
*************** dc65e28886d5d2ddf2556993e5252efd  gcc/te
*** 14849,14854 ****
--- 14933,14939 ----
  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
*************** e4ab256b90ae140854cd97b00b09ab4e  gcc/te
*** 14911,14917 ****
--- 14996,15007 ----
  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
+ 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
  d91909221a5cbeda4fbefe089cb008d0  gcc/testsuite/g++.dg/cpp2a/comma1.C
  aee795f23186e5e93f06f950260e8a90  gcc/testsuite/g++.dg/cpp2a/comma2.C
  d6c6fbba9ebe083780b2e382feedd3f0  gcc/testsuite/g++.dg/cpp2a/comma3.C
*************** c7b9c33b4c64892adbf5412ad5123053  gcc/te
*** 14935,14940 ****
--- 15025,15031 ----
  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
+ 8b450b687a58857141c45425bdbf8e80  gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.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
*************** bf8af008c314faab5d57ae5358cb2cac  gcc/te
*** 15112,15117 ****
--- 15203,15209 ----
  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
+ af01c600c3ac040f6855ee2ed2bff7bc  gcc/testsuite/g++.dg/cpp2a/concepts-requires30.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
*************** bbfc0967b09bb4b2f1ace77c10c76387  gcc/te
*** 15167,15172 ****
--- 15259,15266 ----
  cf282e3680d2137a27a9a74bced96291  gcc/testsuite/g++.dg/cpp2a/consteval18.C
  b25072b636670ba0bf6636ee75629f7f  gcc/testsuite/g++.dg/cpp2a/consteval19.C
  6053d37c0ed21135f3f081cb54bda42d  gcc/testsuite/g++.dg/cpp2a/consteval2.C
+ 419c55859a9fd338cbd6417cdd3b15d3  gcc/testsuite/g++.dg/cpp2a/consteval26.C
+ 7b94006f015ce630f646bbae9c502103  gcc/testsuite/g++.dg/cpp2a/consteval27.C
  fc387c7b911c42cac7b695c9473df70b  gcc/testsuite/g++.dg/cpp2a/consteval3.C
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
*************** be6031c0bedd5678304d7154f8ea2b35  gcc/te
*** 15177,15182 ****
--- 15271,15277 ----
  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
+ 0e35a64721caa10ace15014c6a57e598  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.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
*************** ee2ec05ccc231153595e8b6481ac0140  gcc/te
*** 15228,15234 ****
--- 15323,15332 ----
  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
+ affc6e3db6b22de78239c415dfdfc947  gcc/testsuite/g++.dg/cpp2a/constexpr-new18.C
+ ab73ad61b3eadcfd65c5bacdfba0e5d6  gcc/testsuite/g++.dg/cpp2a/constexpr-new19.C
  fbb86f233bb9ab7859ddbc542f26808b  gcc/testsuite/g++.dg/cpp2a/constexpr-new2.C
+ 8f15e7c6c4a56e33628394c948bba9aa  gcc/testsuite/g++.dg/cpp2a/constexpr-new22.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
*************** f609675a5974c3dfcbd3c080a928f787  gcc/te
*** 15236,15241 ****
--- 15334,15340 ----
  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
+ e8f7bd0576728e974495935283ad4f39  gcc/testsuite/g++.dg/cpp2a/constexpr-nonlit7.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
*************** d5cf00e36fa4ba1a100d8370416e1bc2  gcc/te
*** 15256,15261 ****
--- 15355,15361 ----
  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
+ b41b1406ccaabb57748ecf4f05c3e13b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual19.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
*************** aad29b064fff817ac1e3a613ef44faf8  gcc/te
*** 15291,15296 ****
--- 15391,15397 ----
  1ca9ed28e32a5aa7ea91f1b6c8ca5c91  gcc/testsuite/g++.dg/cpp2a/desig13.C
  6d38c77badd579c8ce5e225a881fb734  gcc/testsuite/g++.dg/cpp2a/desig14.C
  bc8c268c08fedc23cbbb52f3be804b6b  gcc/testsuite/g++.dg/cpp2a/desig15.C
+ c75fc09bc39f984910adbf5fac4d1df6  gcc/testsuite/g++.dg/cpp2a/desig18.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
*************** bb8d6be95bfb22151d11535f6f528b3d  gcc/te
*** 15347,15352 ****
--- 15448,15454 ----
  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
+ 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
*************** f3183e909b7fd601906b1f284b8514e9  gcc/te
*** 15364,15375 ****
--- 15466,15479 ----
  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
+ 2c7985bcf67e650ec3b394ec88b19e13  gcc/testsuite/g++.dg/cpp2a/lambda-generic9.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
+ 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
  a10b478d00c08a3b0686eea62d1bb5db  gcc/testsuite/g++.dg/cpp2a/lambda-this3.C
*************** f000e2a675b3a60670876a40b578823b  gcc/te
*** 15476,15481 ****
--- 15580,15586 ----
  57c2192944acf328df3f747bc59a3e3d  gcc/testsuite/g++.dg/cpp2a/pr88534.C
  fd07f3346ebca247b445c7db0b17b5b2  gcc/testsuite/g++.dg/cpp2a/pr88537.C
  13ae5aaf7dca0a1630ba951d7eb1285a  gcc/testsuite/g++.dg/cpp2a/pr89913.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
*************** fc875772e280d6860400721ab59c2a23  gcc/te
*** 15590,15595 ****
--- 15695,15701 ----
  8e4abc5980a05aa68b936cca386e4618  gcc/testsuite/g++.dg/cpp2a/volatile2.C
  38a1560b8b9b22be4d576d30a8cef4c3  gcc/testsuite/g++.dg/cpp2a/volatile3.C
  552e3d266c035e0dbeca3c878bc5a2f5  gcc/testsuite/g++.dg/cpp2a/volatile4.C
+ 96dafb009a7feee933cad2b35c2cccf6  gcc/testsuite/g++.dg/cpp2a/volatile5.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
*************** e64fec6e11d681323560675ce433a296  gcc/te
*** 15684,15689 ****
--- 15790,15796 ----
  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
+ b117227269644a100a7a06bf2bc9bf6f  gcc/testsuite/g++.dg/debug/dwarf2/pr101378.C
  7054dc65c88179389afb9e79cad0df38  gcc/testsuite/g++.dg/debug/dwarf2/pr41063.C
  9118e81e091fae9d3d9c8c39a846e724  gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C
  90028c65be83718cb8e154df1b502d99  gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C
*************** af5ab077811439033f9383ef557968f9  gcc/te
*** 16253,16258 ****
--- 16360,16366 ----
  2ac7c8bbdf5a3e29d0fe098818a73c8c  gcc/testsuite/g++.dg/ext/always_inline-4.C
  ffdb526972a39c85890c287c92939515  gcc/testsuite/g++.dg/ext/always_inline-5.C
  ba52b9ac855913bbeb9477d56e50a3d7  gcc/testsuite/g++.dg/ext/anon-struct1.C
+ f8e1155ac1e5e2ac874ef60de1dbe74e  gcc/testsuite/g++.dg/ext/anon-struct10.C
  0e1fc7f945fafc3c224a24b23c1c2a76  gcc/testsuite/g++.dg/ext/anon-struct2.C
  5f70b0d4a3b1e3b8a10d06d54d63f427  gcc/testsuite/g++.dg/ext/anon-struct3.C
  3326283e48652640c3c66982c9b8d0ef  gcc/testsuite/g++.dg/ext/anon-struct4.C
*************** f27482d95969ec072f6dc3a9d18c8b21  gcc/te
*** 16277,16282 ****
--- 16385,16391 ----
  6a6537dca5e2183665f9761920418307  gcc/testsuite/g++.dg/ext/array1.C
  f1a9da555162b7ed9f63dd442d842c1c  gcc/testsuite/g++.dg/ext/array2.C
  d1e93fe1d5f57febc15732f8f13ad24f  gcc/testsuite/g++.dg/ext/array3.C
+ 59a6a5d086a3ae01ea6e51401427f2fb  gcc/testsuite/g++.dg/ext/array4.C
  d377fb4f9ef6d1ed2029c1551ddf7e3b  gcc/testsuite/g++.dg/ext/asm1.C
  82e001dc60a8f36b8affdc7210de5b60  gcc/testsuite/g++.dg/ext/asm10.C
  25fbbf0ac13b6baebc40ebabaedfe317  gcc/testsuite/g++.dg/ext/asm11.C
*************** b2c60991d5b6f21b7202a6d5a7c81412  gcc/te
*** 16619,16625 ****
--- 16728,16736 ----
  17026c219335daa904b63aabf2ba8120  gcc/testsuite/g++.dg/ext/flexary35.C
  da96fc262f063d29280b10e42245318e  gcc/testsuite/g++.dg/ext/flexary36.C
  bdc1e53895229e84f994524314021292  gcc/testsuite/g++.dg/ext/flexary38.C
+ e3abdb563edb7ccc89af09138c07030d  gcc/testsuite/g++.dg/ext/flexary39.C
  7c5aa9e0bd6655b7c3b04f320d67e736  gcc/testsuite/g++.dg/ext/flexary4.C
+ 7b20dd05a975dd9f5eda50838835ac7c  gcc/testsuite/g++.dg/ext/flexary40.C
  55d07993cbe972abdb053af6f481f34e  gcc/testsuite/g++.dg/ext/flexary5.C
  992897ce6ded0ffee198a5cf85775530  gcc/testsuite/g++.dg/ext/flexary6.C
  df64a969f76ad8dba013343925441866  gcc/testsuite/g++.dg/ext/flexary7.C
*************** bb128ce7c4aa022f8046c469bbe3faa3  gcc/te
*** 16927,16932 ****
--- 17038,17044 ----
  3364a5c5f070567fdc2d0df9cd80bd73  gcc/testsuite/g++.dg/ext/utf8-2.C
  33d19c269a9e9108be7e58ebb9f5dba4  gcc/testsuite/g++.dg/ext/va-arg-pack-1.C
  95df36aad68d70ccb06176f4d6386b01  gcc/testsuite/g++.dg/ext/va-arg-pack-2.C
+ a8b70fba535d4caa23d14f33faaaca4d  gcc/testsuite/g++.dg/ext/va-arg-pack-3.C
  5767d28306995682901a8025cc09bcf5  gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C
  3da578ea7fb89ed9d7d870cd2355c8a1  gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C
  be5f35b51bfbfb360923dc0be613c0d6  gcc/testsuite/g++.dg/ext/va-arg1.C
*************** a734cd9ac4c7933b7e53991e05b0aed5  gcc/te
*** 17154,17160 ****
  4d9ae441343c49335159712e6d78736c  gcc/testsuite/g++.dg/gomp/cancel-3.C
  229a4e7a48a56c0cf19c162f2a33f7f1  gcc/testsuite/g++.dg/gomp/clause-1.C
  58ada034a21b7734739e966345d25fac  gcc/testsuite/g++.dg/gomp/clause-2.C
! e183953e6fde368f2c7dba36fc31364f  gcc/testsuite/g++.dg/gomp/clause-3.C
  2f0edfb42c07ca8f104959d595305979  gcc/testsuite/g++.dg/gomp/clause-4.C
  fe6047f5ca7e2eac34792a3acc1193c2  gcc/testsuite/g++.dg/gomp/copyin-1.C
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
--- 17266,17272 ----
  4d9ae441343c49335159712e6d78736c  gcc/testsuite/g++.dg/gomp/cancel-3.C
  229a4e7a48a56c0cf19c162f2a33f7f1  gcc/testsuite/g++.dg/gomp/clause-1.C
  58ada034a21b7734739e966345d25fac  gcc/testsuite/g++.dg/gomp/clause-2.C
! 1f4bc230caef2b86cebd77a5c13b474e  gcc/testsuite/g++.dg/gomp/clause-3.C
  2f0edfb42c07ca8f104959d595305979  gcc/testsuite/g++.dg/gomp/clause-4.C
  fe6047f5ca7e2eac34792a3acc1193c2  gcc/testsuite/g++.dg/gomp/copyin-1.C
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
*************** ad83350cdd58e73fddf0b7bacdf348a8  gcc/te
*** 17238,17243 ****
--- 17350,17357 ----
  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
+ 9950e1331756ada98404843c3491b239  gcc/testsuite/g++.dg/gomp/pr101516.C
+ 3da3560251942b44a47c6e2c267e97f2  gcc/testsuite/g++.dg/gomp/pr102431.C
  539bba6df5330b7a6631eca5665a0899  gcc/testsuite/g++.dg/gomp/pr24849.C
  78ea34fd7a1a2767f61a703271e7070a  gcc/testsuite/g++.dg/gomp/pr25874.C
  93a85a09acfdf011a86ff95fc9184a94  gcc/testsuite/g++.dg/gomp/pr25996.C
*************** d6728c160968c11c85593017e8436bec  gcc/te
*** 17540,17545 ****
--- 17654,17661 ----
  388522e6f12ed4b010648b548c66a1b6  gcc/testsuite/g++.dg/inherit/virtual12.C
  cb86e64ab41b8a5f64a68e42134eb849  gcc/testsuite/g++.dg/inherit/virtual13.C
  5fdfbd638062b0c6b4b3cecc4948fe33  gcc/testsuite/g++.dg/inherit/virtual14.C
+ cb8acabe2a9d5c0a495ca2b035cff652  gcc/testsuite/g++.dg/inherit/virtual15.C
+ 5abfbed5214dcb0c4878c14899667883  gcc/testsuite/g++.dg/inherit/virtual15a.C
  97a2f1a9fc23a8a008f5567cb6bbefa7  gcc/testsuite/g++.dg/inherit/virtual2.C
  88e3f23768b2dfe530d163660b058796  gcc/testsuite/g++.dg/inherit/virtual3.C
  b7f032736331f1ff851d46fe5aef118a  gcc/testsuite/g++.dg/inherit/virtual4.C
*************** e7a4920eaa905e671e74b6482c654721  gcc/te
*** 17624,17629 ****
--- 17740,17746 ----
  4ab5bb9dc38b78d749ba584adefbdc33  gcc/testsuite/g++.dg/init/array8.C
  b1c2a3438d19ab4734ef026ce6aba7fa  gcc/testsuite/g++.dg/init/array9.C
  590b4fffc5e2d0c7af7852413ab82a9e  gcc/testsuite/g++.dg/init/assign1.C
+ c683e74a06917192a3b9ed9e2ec6aa08  gcc/testsuite/g++.dg/init/assign2.C
  3eee77105967418a88d56f0c30243408  gcc/testsuite/g++.dg/init/attrib1.C
  77338e30d92da64b5b8a53b656838268  gcc/testsuite/g++.dg/init/base1.C
  f3383f08918eed93161c080f618e55e8  gcc/testsuite/g++.dg/init/bitfield1.C
*************** ece146914185349992892b6c7e289bb0  gcc/te
*** 17773,17778 ****
--- 17890,17896 ----
  9e9ce794649ccc9a4507b42cb8c4c0d0  gcc/testsuite/g++.dg/init/new8.C
  d9b779b618b81e9ea527baf5e2af4c4e  gcc/testsuite/g++.dg/init/new9.C
  ad6fea2e4a044bf966634965459eed1f  gcc/testsuite/g++.dg/init/no-elide1.C
+ 2524b7f075542480f2a1e27b01b7f04d  gcc/testsuite/g++.dg/init/no-elide2.C
  6e78c514e0d930771bc8bc83b1d03c3f  gcc/testsuite/g++.dg/init/null1.C
  ef95eb29955e54a2310be36a0828b0cb  gcc/testsuite/g++.dg/init/placement1.C
  9c2843f3878e7468a19ecfaa90c8bf5f  gcc/testsuite/g++.dg/init/placement2.C
*************** f58299de078b35494d60ed1ce04894ba  gcc/te
*** 18264,18269 ****
--- 18382,18388 ----
  fd517010ca215fc30ad0d3a32a3ed3f3  gcc/testsuite/g++.dg/lookup/nested2.C
  f73a831dbfcd6430b723ed4198037c98  gcc/testsuite/g++.dg/lookup/new1.C
  7a4d3b1fa46512441a7977635cc69fe9  gcc/testsuite/g++.dg/lookup/new2.C
+ 452e1ff799da032536237dfb649f6d8d  gcc/testsuite/g++.dg/lookup/new3.C
  72c3a9b17a32af0585fa3bf9d370c39d  gcc/testsuite/g++.dg/lookup/ns1.C
  8fad00e146fe0525b4a78080a95a7ca8  gcc/testsuite/g++.dg/lookup/ns2.C
  326caa0ef916da51fec348c662a91f18  gcc/testsuite/g++.dg/lookup/ns3.C
*************** f3edef1ce387276626f5233209353c56  gcc/te
*** 18710,18715 ****
--- 18829,18836 ----
  2d449b278a535f9f851a800e453b07a6  gcc/testsuite/g++.dg/lto/pr93166_0.C
  d92f918a28c68fc934d26fc7ceb822b5  gcc/testsuite/g++.dg/lto/pr96591_0.C
  b8735311421a9557b475c780e1712295  gcc/testsuite/g++.dg/lto/pr96690_0.C
+ 1fa0bf497eddaf27bc8b579ea2b690fc  gcc/testsuite/g++.dg/lto/pr97565_0.C
+ 540253034f25055f8bf0879bf3a5aff5  gcc/testsuite/g++.dg/lto/pr97565_1.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
*************** b879c3972fcf09a0bef4781d973dea10  gcc/te
*** 18755,18760 ****
--- 18876,18882 ----
  6b2e1cf4863e58457238c73c49085813  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.C
+ 3ef0b8f03b8f52cb5e4a7f14d08f9880  gcc/testsuite/g++.dg/opt/const7.C
  8a6577c2e8b91d69c2d55b8ed2488fc8  gcc/testsuite/g++.dg/opt/copysign-1.C
  5c2d124413a2eaf9d343379ef14570a2  gcc/testsuite/g++.dg/opt/covariant1.C
  2b8e568482a37c0e98a0154aa649f58b  gcc/testsuite/g++.dg/opt/crash1.C
*************** e94377182a1dedb230f53db874897364  gcc/te
*** 18852,18857 ****
--- 18974,18980 ----
  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
*************** b16ae5b90244df2461a7c023c7f3c88e  gcc/te
*** 18862,18867 ****
--- 18985,18993 ----
  5778a352c750259fe850421e364893fa  gcc/testsuite/g++.dg/opt/operator1.C
  1b20239db4498d5cce85a900755fb433  gcc/testsuite/g++.dg/opt/placeholder1.C
  cf9e1c6c02a4aee1d10b86325166de66  gcc/testsuite/g++.dg/opt/pmf1.C
+ b7d92853a5faa70c9b8f4e124609991d  gcc/testsuite/g++.dg/opt/pr100148.C
+ b599b75470b905e959a7172363b13d69  gcc/testsuite/g++.dg/opt/pr100254.C
+ 4821bda808ec2c117c297e4f155752e3  gcc/testsuite/g++.dg/opt/pr104681.C
  2896f5b1a96dd9fabb1dbb65cb4c5921  gcc/testsuite/g++.dg/opt/pr13066-1.C
  4f87f86b9f018cae74888e97468b2fe0  gcc/testsuite/g++.dg/opt/pr14029.C
  8fb7e68e9e9b5eb02628e03f5333e645  gcc/testsuite/g++.dg/opt/pr14888.C
*************** bc5371eb8e8dcf79efb0889828991560  gcc/te
*** 19326,19331 ****
--- 19452,19459 ----
  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
*************** e39ffc27c2cc367fb38574d001689277  gcc/te
*** 19380,19385 ****
--- 19508,19514 ----
  da1ba255024d00bac0a97620f4ffaba7  gcc/testsuite/g++.dg/other/operator3.C
  983bbfea996145b298440ca410c9fb19  gcc/testsuite/g++.dg/other/operator4.C
  6be92beab52e0fd0c83b0cabc3f7e83a  gcc/testsuite/g++.dg/other/packed1.C
+ b693bdc6d9288cba68d5f6c6be19b743  gcc/testsuite/g++.dg/other/pr100580.C
  f43f96bf3c378817b959c22aee3466c0  gcc/testsuite/g++.dg/other/pr20366.C
  972110c0d861ecae87ae8ad4d861dd0f  gcc/testsuite/g++.dg/other/pr22003.C
  57901344b69ec7b216bf1128cc5a7242  gcc/testsuite/g++.dg/other/pr22358.C
*************** b71aeb26aa9311659d87b7de1be00dcc  gcc/te
*** 19541,19546 ****
--- 19670,19676 ----
  e549b742987ea4bf15156f2ff8b335da  gcc/testsuite/g++.dg/overload/builtin1.C
  3a79826fd499e94593a88f2c06436f3d  gcc/testsuite/g++.dg/overload/builtin2.C
  a0b8fd80bfd82adaa23c61a98df112fb  gcc/testsuite/g++.dg/overload/builtin3.C
+ 1b69f2219f6792ae40411265e591182d  gcc/testsuite/g++.dg/overload/builtin6.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
*************** e051d5cb1d92744fe18b74552249a54e  gcc/te
*** 20225,20230 ****
--- 20355,20361 ----
  21bdec26dd354f6ec8377f10495a1e22  gcc/testsuite/g++.dg/plugin/show-template-tree-color-no-elide-type.C
  34171c7d3f22062d3826646c0e5f1f9d  gcc/testsuite/g++.dg/plugin/show-template-tree-color.C
  4e74baf6e971213789395d81a85385e0  gcc/testsuite/g++.dg/plugin/show_template_tree_color_plugin.c
+ 2e53d96b8ba6ffa8b9414775da7e87f3  gcc/testsuite/g++.dg/pr100253.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
*************** b28f1aa5479585861779a602aaf7d3f3  gcc/te
*** 20428,20433 ****
--- 20559,20566 ----
  95ea08ceed65b4a6869e1c0f7118b910  gcc/testsuite/g++.dg/pr94314.C
  482706f039139a44488ccf489c439fdd  gcc/testsuite/g++.dg/pr94666.C
  939bc5c1461d182a2a1c2c7b64a2951c  gcc/testsuite/g++.dg/pr97627.C
+ 91468f37685e93374170fa696737486f  gcc/testsuite/g++.dg/pr98032.C
+ 45c7d0b314ede5e6800294c0564f4ad7  gcc/testsuite/g++.dg/pr98136.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
*************** b57591402d64bc0218597be33d025525  gcc/te
*** 20503,20508 ****
--- 20636,20642 ----
  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
+ dea81150700765a4bf726fcbf91fe264  gcc/testsuite/g++.dg/spellcheck-pr104806.C
  bec792904e3254c1f1b123d9654da558  gcc/testsuite/g++.dg/spellcheck-pr77829.C
  8917eaf0965b3d85de7008f1d17dee06  gcc/testsuite/g++.dg/spellcheck-pr78313.C
  c58af17755be032fd83d41b6fc234488  gcc/testsuite/g++.dg/spellcheck-pr78656.C
*************** c7c275427c1f23da1f5270746886e61d  gcc/te
*** 20576,20581 ****
--- 20710,20716 ----
  f1f5a04f41640e7625de6d557491ab7d  gcc/testsuite/g++.dg/template/access28.C
  3d00ae17a8a2fd7c7d604f91e69dd892  gcc/testsuite/g++.dg/template/access29.C
  4568008afd0d9ae5ca44f4521d3e1151  gcc/testsuite/g++.dg/template/access3.C
+ d1ab3a2909d9d576c5dfa94f007a2714  gcc/testsuite/g++.dg/template/access39.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
*************** c31c403acbaa655ae0413e1d4350ae4b  gcc/te
*** 20709,20714 ****
--- 20844,20850 ----
  c28b6679b01f4bbe8403c045289d2aef  gcc/testsuite/g++.dg/template/conv14.C
  d03295ed120e37ef2651d9c57aa0b774  gcc/testsuite/g++.dg/template/conv15.C
  bc45c52058d378ff45879106160f09fc  gcc/testsuite/g++.dg/template/conv16.C
+ bd99141c68d90e04855763e3f2bfa63a  gcc/testsuite/g++.dg/template/conv19.C
  383f6618c1ccaddea23b36ff23d6d35e  gcc/testsuite/g++.dg/template/conv2.C
  be5017725e9889a47d07ba0d3a3464ff  gcc/testsuite/g++.dg/template/conv3.C
  53aab59e272fd22ef1ad191d0f31e01d  gcc/testsuite/g++.dg/template/conv4.C
*************** e149357d205dbd99b9633575f81b34c7  gcc/te
*** 21110,21115 ****
--- 21246,21252 ----
  134eb1fa2dfe0e7e1737c002d17c7781  gcc/testsuite/g++.dg/template/friend66.C
  f8b96612d216a7b190f337247c8e8315  gcc/testsuite/g++.dg/template/friend67.C
  1d4f923241bfe8578940f39c34f80d7c  gcc/testsuite/g++.dg/template/friend7.C
+ 33f91697bdb7e2294d13e7eb88e92b55  gcc/testsuite/g++.dg/template/friend70.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
*************** ffd1465e85fe6778f5e32548bb4d2ad5  gcc/te
*** 21254,21259 ****
--- 21391,21397 ----
  b12c9a151e46871b430564ee47c57714  gcc/testsuite/g++.dg/template/nested4.C
  55bd98cb7f4709362363619cbba3ca30  gcc/testsuite/g++.dg/template/nested5.C
  3d7ff2f50901cdae15e987265ff20ed6  gcc/testsuite/g++.dg/template/nested6.C
+ eb97b845951649a22172514806d1ef72  gcc/testsuite/g++.dg/template/nested7.C
  57b33208329c8d10ea904c3d123076a9  gcc/testsuite/g++.dg/template/new1.C
  dd5106154e8f9fa0866be1a1283b490e  gcc/testsuite/g++.dg/template/new10.C
  8a3716757b496de374cb6d6a4f5b6a64  gcc/testsuite/g++.dg/template/new11.C
*************** c68de3013fc66d5b9ca387b1f0f294ad  gcc/te
*** 21276,21281 ****
--- 21414,21420 ----
  1600f68e67fb6396c6b980337441f30d  gcc/testsuite/g++.dg/template/non-dependent14.C
  dcf7edf4a9b89b8e4db4df23e3c71906  gcc/testsuite/g++.dg/template/non-dependent15.C
  3ce6c8331c1ddbc56b2c89ca07992343  gcc/testsuite/g++.dg/template/non-dependent2.C
+ 3f4aec0e7128a2b9a75631b613288601  gcc/testsuite/g++.dg/template/non-dependent22.C
  9c0fc4f566e5de8ff0339df3c3ef274d  gcc/testsuite/g++.dg/template/non-dependent3.C
  c74bd06e4f01d82b6dffe8568a9f9286  gcc/testsuite/g++.dg/template/non-dependent4.C
  7e000c3eaeb33b0cda5191bb78ee313d  gcc/testsuite/g++.dg/template/non-dependent5.C
*************** c7309345696ac164222361961daab266  gcc/te
*** 21537,21542 ****
--- 21676,21682 ----
  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
*************** ce4f8106ed96ef070bead8ca0df02eea  gcc/te
*** 22048,22053 ****
--- 22188,22196 ----
  fab1470d87fc879a4a285622c057b736  gcc/testsuite/g++.dg/torture/init-list1.C
  4054dd6c177ca7971902e3ac60e34695  gcc/testsuite/g++.dg/torture/ipa-cp-1.C
  37b54578dbb493ce1238308444c1008c  gcc/testsuite/g++.dg/torture/ppc-ldst-array.C
+ 3fd9794b761154c19e5b03ca7b0727a1  gcc/testsuite/g++.dg/torture/pr102505.C
+ 674377855743be77a442d6fe11fc86e1  gcc/testsuite/g++.dg/torture/pr103361.C
+ 55421b614773ff9e900b6ad17ffe7df3  gcc/testsuite/g++.dg/torture/pr105189.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** ebc4dd8d7b9c346d612ab748d0d8bda0  gcc/te
*** 22791,22796 ****
--- 22934,22942 ----
  9a6263b0a0fc24a8d910d2b11d215637  gcc/testsuite/g++.dg/ubsan/null-7.C
  238c69e48fef47908a681867b7f50817  gcc/testsuite/g++.dg/ubsan/null-8.C
  684067ddb47560c655180c085c6980e8  gcc/testsuite/g++.dg/ubsan/object-size-1.C
+ 80dcb1a17f65b63cbfe2e3509439563c  gcc/testsuite/g++.dg/ubsan/pr101210.C
+ ad6c0b4132032f21f64bfdd4836d3313  gcc/testsuite/g++.dg/ubsan/pr105093.C
+ 59f2687e6719ef7d3d19b4de0e99a075  gcc/testsuite/g++.dg/ubsan/pr105729.C
  a654df71119821a4303cc9fe0501191b  gcc/testsuite/g++.dg/ubsan/pr59250.C
  420a6623146bb014dc1310134356d81f  gcc/testsuite/g++.dg/ubsan/pr59306.C
  79755a51c3cbb97ff48bd411272f6b08  gcc/testsuite/g++.dg/ubsan/pr59331.C
*************** f70b05c7c6da2eb1e388cdb09831d355  gcc/te
*** 22985,22990 ****
--- 23131,23137 ----
  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
+ ab97df5ad2431719f3fb0cd4fdf111d8  gcc/testsuite/g++.dg/warn/Warray-bounds-27.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
*************** d10152133e840d3699814c5271083357  gcc/te
*** 23025,23030 ****
--- 23172,23178 ----
  aeadbc7507b32cb0295c0b4fb7b26084  gcc/testsuite/g++.dg/warn/Wconversion2.C
  f7dd0981dd1da24582fb107a2de2d745  gcc/testsuite/g++.dg/warn/Wconversion3.C
  45616b67235f1f39274574bca634f499  gcc/testsuite/g++.dg/warn/Wconversion4.C
+ abded6dbddb20c9ffe5f2e0690cd191b  gcc/testsuite/g++.dg/warn/Wconversion5.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
*************** c9a313a018bffcf8c74feab4d7de24ee  gcc/te
*** 23212,23217 ****
--- 23360,23366 ----
  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
*************** de70d0aa4d300c6c495ac17ceb16bb59  gcc/te
*** 23222,23227 ****
--- 23371,23377 ----
  69360c98179cb5a496a4ec6c59d499f7  gcc/testsuite/g++.dg/warn/Wshadow-9.C
  69732cf06a240f992b1cb5e3b86bab8d  gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-1.C
  a0b4ac370653ea8dfc5a0dc8707ab2fd  gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-2.C
+ b1368cfca8fe6539e11ab40e527ec240  gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-3.C
  df9b1547a2690405cde83653830ec338  gcc/testsuite/g++.dg/warn/Wshadow-local-1.C
  6abfb9ca38d9d4f52fad423dd3f4fc61  gcc/testsuite/g++.dg/warn/Wshadow-local-2.C
  2d0be4b805c5e01751b8213ba1078140  gcc/testsuite/g++.dg/warn/Wshadow-local-3.C
*************** b81dd316dd30881afe998cc16667340f  gcc/te
*** 23392,23397 ****
--- 23542,23548 ----
  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
+ ff8ed0a4ce8ad573aa89f6b015e4a122  gcc/testsuite/g++.dg/warn/Wuseless-cast2.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
*************** f3ce91773bd0b4a3127c481ccd50f20e  gcc/te
*** 26993,26998 ****
--- 27144,27150 ----
  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
+ 93beeb2f54f185bcaa9bbc741e3969f0  gcc/testsuite/g++.target/aarch64/sve/pr99216.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
*************** e64278e516f7ebae5481e326b54f28dd  gcc/te
*** 27004,27009 ****
--- 27156,27162 ----
  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
+ 4c06abe7b8d5bd183704907c3993392c  gcc/testsuite/g++.target/arm/pr102842.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
*************** c2d5d87b3488ab338dcccb9091181331  gcc/te
*** 27051,27056 ****
--- 27204,27211 ----
  cc57ca4fd9c378f13126f05fd23d44f9  gcc/testsuite/g++.target/i386/mvc2.C
  5770edbad8bcf6303a34e5d14d63a98d  gcc/testsuite/g++.target/i386/mvc3.C
  4b58a8b362895e2d3227500db9f7df3f  gcc/testsuite/g++.target/i386/mvc4.C
+ 186a4f48c778c8bfd308076ed5277d77  gcc/testsuite/g++.target/i386/pr102295.C
+ 6d6c399b53fe1c3078aa132a559fe2ab  gcc/testsuite/g++.target/i386/pr102548.C
  1c706f97b6d93c0124dc4a203c98f6d2  gcc/testsuite/g++.target/i386/pr57362.C
  db3c3a9d9f798eff6348f0813dccc376  gcc/testsuite/g++.target/i386/pr57548.C
  e8a006e5050e191010d1a6ecff4873a3  gcc/testsuite/g++.target/i386/pr58372.C
*************** bdb455b2331ad2932c1fc9e92219df39  gcc/te
*** 27084,27089 ****
--- 27239,27245 ----
  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
+ 6d0d9132ecd5c558bd1ec20dcee32d5d  gcc/testsuite/g++.target/i386/vec-tmpl1.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
*************** e1ba72e4820ed6fee0a19c482579539a  gcc/te
*** 27094,27099 ****
--- 27250,27256 ----
  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
+ ec9d88502adf58241b652d1155cafc87  gcc/testsuite/g++.target/powerpc/pr99842.C
  fb915623fe5d0c1208c53c6de33e722a  gcc/testsuite/g++.target/powerpc/undef-bool-3.C
  84541f8edc35b61b62256dbd71b731b8  gcc/testsuite/g++.target/riscv/call-with-empty-struct-float.C
  0224a15f72de72af47e3eeb572c2d4eb  gcc/testsuite/g++.target/riscv/call-with-empty-struct-int.C
*************** cc3d65ef1611bfdbd9239932d1d5a246  gcc/te
*** 27106,27111 ****
--- 27263,27269 ----
  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
  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
*************** e89355b99660c53d3dac89eba0ac8986  gcc/te
*** 28103,28108 ****
--- 28261,28268 ----
  6a87e81aa60353be798e48130f2c4ca2  gcc/testsuite/gcc.c-torture/compile/pmt.c
  048ad13954512f77d283379cc894eaed  gcc/testsuite/gcc.c-torture/compile/poor.c
  5dd01a3a30ba2b97a934273ca5fe3170  gcc/testsuite/gcc.c-torture/compile/pp.c
+ ede20faf9b203e25b39b7032970f58be  gcc/testsuite/gcc.c-torture/compile/pr100305.c
+ 9c461bedf4ba5d689841294e9c5464f6  gcc/testsuite/gcc.c-torture/compile/pr101562.c
  33c7141fcf5b1add3ddd2be0100f1f0d  gcc/testsuite/gcc.c-torture/compile/pr12517.c
  ec16b12ab11c499bf321be18ea59da33  gcc/testsuite/gcc.c-torture/compile/pr12578.c
  86f3d5cf87d24e97aa663b79f2d0ac5d  gcc/testsuite/gcc.c-torture/compile/pr12899.c
*************** b592aab14164964644385997ee799b46  gcc/te
*** 28825,28833 ****
--- 28985,28997 ----
  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
+ 1a9df2c598a332bc3468c9092b1853d5  gcc/testsuite/gcc.c-torture/compile/pr96796.c
+ 35e9b69fa6a8536400fd234999bb050c  gcc/testsuite/gcc.c-torture/compile/pr97141.c
  9877434a52aaa17b1ab89487f9497639  gcc/testsuite/gcc.c-torture/compile/pr97144.c
+ 07cf3fbb05b113cd514ce6703a369179  gcc/testsuite/gcc.c-torture/compile/pr98726.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
  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
*************** ecbbfd4b186a0dd8448d96f39a543fb4  gcc/te
*** 29420,29425 ****
--- 29584,29590 ----
  493547677da2253a099f6a5a237a59b1  gcc/testsuite/gcc.c-torture/execute/20190820-1.c
  8476af17c3a5d7a639fdbdcad1641482  gcc/testsuite/gcc.c-torture/execute/20190901-1.c
  2e368329bfad3d99e406eade7d55032d  gcc/testsuite/gcc.c-torture/execute/20191023-1.c
+ b4ae081235a5dc1e90b1adea7befe6cf  gcc/testsuite/gcc.c-torture/execute/20210505-1.c
  65f01ac7346bd4d47ed9c1ca94ab74ff  gcc/testsuite/gcc.c-torture/execute/900409-1.c
  5aefab4daab0bd29ecf2a389f3c44f40  gcc/testsuite/gcc.c-torture/execute/920202-1.c
  74e2b57e4fb280900b2f9b169dd75b1c  gcc/testsuite/gcc.c-torture/execute/920302-1.c
*************** cf491abd2df5513193c96d9605cc5bc8  gcc/te
*** 29730,29735 ****
--- 29895,29901 ----
  7e81dc4cdd5c62169f611e513538c801  gcc/testsuite/gcc.c-torture/execute/bf-sign-2.c
  57a7c08d79c2c2f2e65b96c5d353aad5  gcc/testsuite/gcc.c-torture/execute/bf64-1.c
  98152a763419b41838c8c9d841ad29a6  gcc/testsuite/gcc.c-torture/execute/bitfld-1.c
+ f07696fa0951cfa132406e3311f1250c  gcc/testsuite/gcc.c-torture/execute/bitfld-10.c
  005d6505de633a2ed0991ac8a94c4b8e  gcc/testsuite/gcc.c-torture/execute/bitfld-2.c
  99a449c3b4f58a78e441a461df3f513f  gcc/testsuite/gcc.c-torture/execute/bitfld-3.c
  f60b71cba62f24c87aeeb52ca18cf75c  gcc/testsuite/gcc.c-torture/execute/bitfld-4.c
*************** e854bc80f793329b6c96d31e3f80a012  gcc/te
*** 30108,30113 ****
--- 30274,30281 ----
  9c9024650c8b4b1672ea993228511949  gcc/testsuite/gcc.c-torture/execute/packed-aligned.c
  12785ab6e086a50cd8ab9f5bdb9a9bc5  gcc/testsuite/gcc.c-torture/execute/pending-4.c
  5ad23d6cafc55e78896b90e3669a14b8  gcc/testsuite/gcc.c-torture/execute/postmod-1.c
+ 6f562291c92a478431678da451525a90  gcc/testsuite/gcc.c-torture/execute/pr103052.c
+ 8f1a8c89149c065ac6e73140793989be  gcc/testsuite/gcc.c-torture/execute/pr104814.c
  7758cb727d75f4fc1c0e483d503de146  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  58dc249612dbc918d7fc4010e94deb8d  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  d9c36fc850771445c5e4b6ce6dae1a12  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** e38ae79f8053ebd6f76a8c00ed1eb4da  gcc/te
*** 30651,30656 ****
--- 30819,30825 ----
  c5d9f6e864aa6ce765a8ec4276629c5f  gcc/testsuite/gcc.c-torture/execute/pr97764.c
  58f14240090be9619912d042ff552198  gcc/testsuite/gcc.c-torture/execute/pr98474.c
  f25dd6049e9c8dd046ca17e8bc55d979  gcc/testsuite/gcc.c-torture/execute/pr98681.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
*************** cc8e118f33fe820b55d7576cd6e8fb7d  gcc/te
*** 31411,31416 ****
--- 31580,31586 ----
  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
+ 5b4c7639060680dc33aa26bde46c220b  gcc/testsuite/gcc.dg/Wstringop-overflow-67.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
*************** f1924cd169cc9af518b51afd9f11da82  gcc/te
*** 31741,31746 ****
--- 31911,31919 ----
  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
+ 62ddd0ab49b2d8a39773ae7568d8aa74  gcc/testsuite/gcc.dg/asan/pr104449.c
+ 3424b712fda248acb67afe3bbb5dbc46  gcc/testsuite/gcc.dg/asan/pr105214.c
+ 695fe49bfb0b0c5cd4e60ba1a0f27cf6  gcc/testsuite/gcc.dg/asan/pr105396.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
  9a45b4bebab3901180dbe2a44efcd070  gcc/testsuite/gcc.dg/asan/pr64170.c
*************** a03c72d9882332482357735b2b82316a  gcc/te
*** 32782,32788 ****
  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
--- 32955,32961 ----
  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
! 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
*************** ee94511375797117140ca777fd1695b1  gcc/te
*** 33496,33502 ****
  704c9a2dca0a451cca6e5855f7f2347f  gcc/testsuite/gcc.dg/darwin-minversion-7.c
  5a8b775f8ce1e0cafb8782fbc39b58e4  gcc/testsuite/gcc.dg/darwin-minversion-8.c
  aa9dfa39c42ef65a88c0a708412fb842  gcc/testsuite/gcc.dg/darwin-minversion-9.c
! e8f6d0185a2daf606cad42ced94090fb  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  b66bb093837bda7692b73c8aa9711e00  gcc/testsuite/gcc.dg/darwin-sections.c
  3cfa6daebed9a12884613012f50433e4  gcc/testsuite/gcc.dg/darwin-segaddr.c
  e3d2d2840d7d23dee7e2cd94e097a114  gcc/testsuite/gcc.dg/darwin-version-1.c
--- 33669,33675 ----
  704c9a2dca0a451cca6e5855f7f2347f  gcc/testsuite/gcc.dg/darwin-minversion-7.c
  5a8b775f8ce1e0cafb8782fbc39b58e4  gcc/testsuite/gcc.dg/darwin-minversion-8.c
  aa9dfa39c42ef65a88c0a708412fb842  gcc/testsuite/gcc.dg/darwin-minversion-9.c
! 9dbaa15e2b1a56ec7afc29c9929eedab  gcc/testsuite/gcc.dg/darwin-minversion-link.c
  b66bb093837bda7692b73c8aa9711e00  gcc/testsuite/gcc.dg/darwin-sections.c
  3cfa6daebed9a12884613012f50433e4  gcc/testsuite/gcc.dg/darwin-segaddr.c
  e3d2d2840d7d23dee7e2cd94e097a114  gcc/testsuite/gcc.dg/darwin-version-1.c
*************** ca27b118a8f01285a381ac42b5dcdcaa  gcc/te
*** 33642,33647 ****
--- 33815,33821 ----
  b3f045b532c693bbfb8cfed8c0609564  gcc/testsuite/gcc.dg/debug/dwarf2/var1.c
  69e64f492a931622722ac6c811569e62  gcc/testsuite/gcc.dg/debug/dwarf2/var2.c
  d11dcc4e37738beb9e8be03ce7630c35  gcc/testsuite/gcc.dg/debug/enum-1.c
+ 3c2a32917edee1c37607a11e5414fbdf  gcc/testsuite/gcc.dg/debug/pr104337.c
  bdf39999a5a7a4c7b1459600dff4ff14  gcc/testsuite/gcc.dg/debug/pr16676.c
  6f8e864ca7f9c38a79c3578b2c75101b  gcc/testsuite/gcc.dg/debug/pr26881.c
  feb6dc1d570a59982f88a912985ff2fa  gcc/testsuite/gcc.dg/debug/pr29558.c
*************** a0ac850750aaa6f8934dd8d86cad48b3  gcc/te
*** 33789,33794 ****
--- 33963,33970 ----
  9d75f75471d15ad9eab797c65fe24337  gcc/testsuite/gcc.dg/dfp/keywords-pedantic.c
  5f9dce48038ce1ba660b96e948792422  gcc/testsuite/gcc.dg/dfp/keywords-reserved.c
  440b3f562b43525babe2c96be973d1be  gcc/testsuite/gcc.dg/dfp/operator-bitwise.c
+ b6f9108cd4878577de83d43be75185ce  gcc/testsuite/gcc.dg/dfp/pr104510.c
+ 440b561ad1d9037d4559c7011d636b7a  gcc/testsuite/gcc.dg/dfp/pr104557.c
  d8629eb8e0c765b5a7daa583cb8eedad  gcc/testsuite/gcc.dg/dfp/pr31344.c
  b59fd600db434af135f39c38e21e2d74  gcc/testsuite/gcc.dg/dfp/pr37435.c
  17353eaf91a4f3959fa168324f86f6f5  gcc/testsuite/gcc.dg/dfp/pr41049.c
*************** e301304e13590c1ce7f775ce00ef95b0  gcc/te
*** 34421,34426 ****
--- 34597,34603 ----
  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
*************** c810b7347465014e305c14700d42a85b  gcc/te
*** 34477,34483 ****
  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
! ffe487f15a2e6e6f4080fe782d3094d4  gcc/testsuite/gcc.dg/gomp/clause-1.c
  69b3c6d02d10bc53d283c974ed1e7ec6  gcc/testsuite/gcc.dg/gomp/clause-2.c
  5ac08c2b4cafd06b9d0ecc5295b58bc9  gcc/testsuite/gcc.dg/gomp/collapse-1.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/gomp/combined-1.c
--- 34654,34660 ----
  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
! 5c863da63bc2a44607b745b56d4373e8  gcc/testsuite/gcc.dg/gomp/clause-1.c
  69b3c6d02d10bc53d283c974ed1e7ec6  gcc/testsuite/gcc.dg/gomp/clause-2.c
  5ac08c2b4cafd06b9d0ecc5295b58bc9  gcc/testsuite/gcc.dg/gomp/collapse-1.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/gomp/combined-1.c
*************** d7769c446568c18d557180c850cf3b4a  gcc/te
*** 34550,34555 ****
--- 34727,34733 ----
  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
+ 0f7ac2e81ae2d400d52c34aa1c0b379a  gcc/testsuite/gcc.dg/gomp/pr100508.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
  597de3ed24e1bc1c650af918589d83c3  gcc/testsuite/gcc.dg/gomp/pr25989.c
  0bd3e8dc860de61dd8e09229c090e1f5  gcc/testsuite/gcc.dg/gomp/pr25990.c
*************** bc96d3d7a369ee1d75a9841b80312226  gcc/te
*** 35052,35057 ****
--- 35230,35236 ----
  4f7560385c9b3bd900cc1de342ed58bc  gcc/testsuite/gcc.dg/guality/param-3.c
  74ce6c60795531920ab0a680e346e657  gcc/testsuite/gcc.dg/guality/param-4.c
  f932e4faa7d538859c699e070447bc01  gcc/testsuite/gcc.dg/guality/param-5.c
+ b0deaf43b4029cf429b4a541937eefd0  gcc/testsuite/gcc.dg/guality/pr101905.c
  91c528fa3ca63dee1e35b7c6d02cd258  gcc/testsuite/gcc.dg/guality/pr25967-1.c
  fa9ed629eec13dc2cd77fec24ea82b3c  gcc/testsuite/gcc.dg/guality/pr25967-2.c
  19bacc1e91869a8697eb548fb674e517  gcc/testsuite/gcc.dg/guality/pr36728-1.c
*************** cabac91cdba3842d40cf8ea00a992973  gcc/te
*** 35078,35084 ****
  ad22498cf8ec23e7130f00c09013af31  gcc/testsuite/gcc.dg/guality/pr45882.c
  f59890b50dc747afab9803faad83af78  gcc/testsuite/gcc.dg/guality/pr48437.c
  0a8f326039eacf3795df083d59d270e1  gcc/testsuite/gcc.dg/guality/pr48466.c
! 8729e084bbf812c07dc80e3002bd7c77  gcc/testsuite/gcc.dg/guality/pr49888.c
  f5d23d5daf139140e3f74b9521e69847  gcc/testsuite/gcc.dg/guality/pr54200.c
  df8d9a90eef54cc78285c05d55378c38  gcc/testsuite/gcc.dg/guality/pr54519-1.c
  eaa0797d9234eb2c7c77adc2b6f86a78  gcc/testsuite/gcc.dg/guality/pr54519-2.c
--- 35257,35263 ----
  ad22498cf8ec23e7130f00c09013af31  gcc/testsuite/gcc.dg/guality/pr45882.c
  f59890b50dc747afab9803faad83af78  gcc/testsuite/gcc.dg/guality/pr48437.c
  0a8f326039eacf3795df083d59d270e1  gcc/testsuite/gcc.dg/guality/pr48466.c
! 67820d262d95458ec0b89cffe57437ec  gcc/testsuite/gcc.dg/guality/pr49888.c
  f5d23d5daf139140e3f74b9521e69847  gcc/testsuite/gcc.dg/guality/pr54200.c
  df8d9a90eef54cc78285c05d55378c38  gcc/testsuite/gcc.dg/guality/pr54519-1.c
  eaa0797d9234eb2c7c77adc2b6f86a78  gcc/testsuite/gcc.dg/guality/pr54519-2.c
*************** b0e6976d3728dfc604f80cfaf17a5150  gcc/te
*** 35400,35405 ****
--- 35579,35589 ----
  bbdc28908094ef1ce181532afaf1b2dc  gcc/testsuite/gcc.dg/ipa/ipcp-ii-1.c
  69364376b4034b0e22099f8f23273a79  gcc/testsuite/gcc.dg/ipa/ipcp-self-recursion-1.c
  80f4453150e9ddcd8976703b7c6ee1f6  gcc/testsuite/gcc.dg/ipa/noclone-1.c
+ 5c69058d29f4a7ea7e25487222d82209  gcc/testsuite/gcc.dg/ipa/pr101066.c
+ 303b00685d04afefddddce7106c02b2d  gcc/testsuite/gcc.dg/ipa/pr102714.c
+ 07a283c50d826e50a31e66247a684841  gcc/testsuite/gcc.dg/ipa/pr103083-1.c
+ e738f44ee66719b5f944fb952895f40e  gcc/testsuite/gcc.dg/ipa/pr103083-2.c
+ d6d366e61e9493a8fc9ad14a2e6f9ba4  gcc/testsuite/gcc.dg/ipa/pr105739.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
  6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
*************** b9cc7cb6d7d65f984ee0a8985b8e0e6e  gcc/te
*** 35723,35728 ****
--- 35907,35916 ----
  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
+ b277b193b2a7ff104d28fbf8e50407e8  gcc/testsuite/gcc.dg/lto/pr101868_0.c
+ ca741859e8754c149e68fc40892d50b1  gcc/testsuite/gcc.dg/lto/pr101868_1.c
+ e4aec3391bc7aed1a5d886edeb277407  gcc/testsuite/gcc.dg/lto/pr101868_2.c
+ 02d829cec4d5ff9723124841f79edca9  gcc/testsuite/gcc.dg/lto/pr101868_3.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
  c5f48897247dfaec60df4e32beffcd8e  gcc/testsuite/gcc.dg/lto/pr27898_1.c
  2ad724786bc4b555a7f31e8b3bf164b6  gcc/testsuite/gcc.dg/lto/pr28706_0.c
*************** c309c8ae6654d9b080cc8e4c515fe8cd  gcc/te
*** 35837,35842 ****
--- 36025,36031 ----
  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
*************** f5883b8a2323e7318237e3750e037d52  gcc/te
*** 36338,36345 ****
--- 36527,36567 ----
  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
+ 2ed4c7917cf2d830a0bb5f0d9d65e592  gcc/testsuite/gcc.dg/pr100225.c
+ eefdc14893bfe7e4dd2a89202733fa86  gcc/testsuite/gcc.dg/pr100509.c
+ 395736a8e0816a51c506968c1ca01f5d  gcc/testsuite/gcc.dg/pr100563.c
+ f44c2488d00a079c87fd11d26d428796  gcc/testsuite/gcc.dg/pr100788.c
+ 5e25293a3107689203988f78c03ea859  gcc/testsuite/gcc.dg/pr100791.c
+ b20e922d857d70fc849642b04d8aef50  gcc/testsuite/gcc.dg/pr101062.c
+ f7653fb72f02585ca98c4cb008a53e32  gcc/testsuite/gcc.dg/pr101171.c
+ 2eebdeb5aef44432de1498de14cbf4e6  gcc/testsuite/gcc.dg/pr101266.c
+ 70303171ed7f5b2cba05e6b98daad2ab  gcc/testsuite/gcc.dg/pr101384.c
+ 9437d2977418eec9749f3a9d06040a59  gcc/testsuite/gcc.dg/pr102140.c
+ afb36cfd0415d59db229d4058c30853f  gcc/testsuite/gcc.dg/pr102224.c
+ 91844853e35a7b41b30a3460cc946f81  gcc/testsuite/gcc.dg/pr102478.c
+ d2b6c61457f02b40823ad6f31b29f47c  gcc/testsuite/gcc.dg/pr102798.c
+ 403235552bc51decc6aaf0f2f60e8721  gcc/testsuite/gcc.dg/pr103248.c
+ 5cf580820aedc778e4de76262078142d  gcc/testsuite/gcc.dg/pr103587.c
+ 220dde695d4a28e6fb719f38a397ed0e  gcc/testsuite/gcc.dg/pr103837.c
+ a4874d44c0ba05d6340ed06bc5958e53  gcc/testsuite/gcc.dg/pr103860.c
  8226e377d45ef0ffeb7badfb04740ab9  gcc/testsuite/gcc.dg/pr10392-1.c
+ 274592903ac1b8bb26cb04aaeb7bceb4  gcc/testsuite/gcc.dg/pr104263.c
+ c055fb27d1a723e98ef6bd9290551487  gcc/testsuite/gcc.dg/pr104511.c
+ 1198a55fbf04ab73754710d047131b2b  gcc/testsuite/gcc.dg/pr104544.c
+ c04efe12f2d4a15f1ea2cae1889ba4cf  gcc/testsuite/gcc.dg/pr104675-1.c
+ c5ab940cf751b86591b1f61af3cfdade  gcc/testsuite/gcc.dg/pr104675-2.c
+ 3134bf3d7e786de762b2b02ad55f4dcd  gcc/testsuite/gcc.dg/pr104675-3.c
  d8ac6e8cccf7bcb1070140ae44ef117a  gcc/testsuite/gcc.dg/pr10474.c
+ 2968ba86ec9be073192c7975ec531fb3  gcc/testsuite/gcc.dg/pr104786.c
+ 8c0ed1baab74c7b05d89e60fb2786609  gcc/testsuite/gcc.dg/pr104910.c
+ f8d1a8342ac7db3ad1336ab098edd372  gcc/testsuite/gcc.dg/pr105094.c
+ 194a2dad6f902fdbaa5355dc3fa0ebe6  gcc/testsuite/gcc.dg/pr105140.c
+ 25a6db2efb48684f6cb2974051effc2a  gcc/testsuite/gcc.dg/pr105173.c
+ b01f707de15442a63cdb3e32148021fd  gcc/testsuite/gcc.dg/pr105211.c
+ 62b3efd9b859c1e2a74f5d3cfa969d33  gcc/testsuite/gcc.dg/pr105226.c
+ 795e155542cd4d6c44666b3712a89f73  gcc/testsuite/gcc.dg/pr105250.c
+ cc6ac8d68c79338a580a123141221e8b  gcc/testsuite/gcc.dg/pr105257.c
+ df5c854ae6b61ad7980dc609c12732b5  gcc/testsuite/gcc.dg/pr105333.c
  860f163dcd0b252ea3f85323bc959a7d  gcc/testsuite/gcc.dg/pr11459-1.c
  e164a736918661d669864e3645da290c  gcc/testsuite/gcc.dg/pr11492.c
  3b83403729a3686d25552352bf0c4577  gcc/testsuite/gcc.dg/pr11864-1.c
*************** a45d8a7ea58bf6c772c8fa0d9d6f1ca5  gcc/te
*** 37696,37702 ****
  a777a206da2c1bfe3ba53d32fb8b2e9c  gcc/testsuite/gcc.dg/pr78138.c
  427e79810052c59fa2a8c9b43fbdfa29  gcc/testsuite/gcc.dg/pr78148.c
  38c8c806f957a135e11b0daa90cc9de6  gcc/testsuite/gcc.dg/pr78185.c
! 5bb4c02b2f251c26191de89ac03e564b  gcc/testsuite/gcc.dg/pr78213.c
  aa86169902d2471ece373c0dddd5232b  gcc/testsuite/gcc.dg/pr78241.c
  7bfaca350ee545dbe10363c435dfa736  gcc/testsuite/gcc.dg/pr78333.c
  21d56f799d53b50dacd02048a1b73756  gcc/testsuite/gcc.dg/pr78384.c
--- 37918,37924 ----
  a777a206da2c1bfe3ba53d32fb8b2e9c  gcc/testsuite/gcc.dg/pr78138.c
  427e79810052c59fa2a8c9b43fbdfa29  gcc/testsuite/gcc.dg/pr78148.c
  38c8c806f957a135e11b0daa90cc9de6  gcc/testsuite/gcc.dg/pr78185.c
! aecacbb64d3497c484426d338ffae43d  gcc/testsuite/gcc.dg/pr78213.c
  aa86169902d2471ece373c0dddd5232b  gcc/testsuite/gcc.dg/pr78241.c
  7bfaca350ee545dbe10363c435dfa736  gcc/testsuite/gcc.dg/pr78333.c
  21d56f799d53b50dacd02048a1b73756  gcc/testsuite/gcc.dg/pr78384.c
*************** da28f19c06ff7662e7a7546ec852e25c  gcc/te
*** 38096,38102 ****
  b3a812009694e752663ca04925320324  gcc/testsuite/gcc.dg/pr91181.c
  196c4342cb2568a603593ef3a72ee31d  gcc/testsuite/gcc.dg/pr91195.c
  127ca7d7d9652887fc59a33f4f13e4e0  gcc/testsuite/gcc.dg/pr91269.c
! 19862a29cf16f806e49e432992a94327  gcc/testsuite/gcc.dg/pr91441.c
  af691f7944d0d62cede654cf7924bf61  gcc/testsuite/gcc.dg/pr91570.c
  33e7e05ba9936ecabdb9d59e8e4ff241  gcc/testsuite/gcc.dg/pr91720.c
  0ce66608741e42c8178cb8a54ad1933c  gcc/testsuite/gcc.dg/pr91734.c
--- 38318,38324 ----
  b3a812009694e752663ca04925320324  gcc/testsuite/gcc.dg/pr91181.c
  196c4342cb2568a603593ef3a72ee31d  gcc/testsuite/gcc.dg/pr91195.c
  127ca7d7d9652887fc59a33f4f13e4e0  gcc/testsuite/gcc.dg/pr91269.c
! 4a2bd43cd7fd8e7268a408628f8e2afa  gcc/testsuite/gcc.dg/pr91441.c
  af691f7944d0d62cede654cf7924bf61  gcc/testsuite/gcc.dg/pr91570.c
  33e7e05ba9936ecabdb9d59e8e4ff241  gcc/testsuite/gcc.dg/pr91720.c
  0ce66608741e42c8178cb8a54ad1933c  gcc/testsuite/gcc.dg/pr91734.c
*************** c72df927b15d18de0d1c05eef46be3ba  gcc/te
*** 38184,38189 ****
--- 38406,38412 ----
  4a231f2fae7b7510cf7b3374a29735db  gcc/testsuite/gcc.dg/pr94842.c
  3d72c356497bfbeaacb889491ca6f756  gcc/testsuite/gcc.dg/pr94873.c
  903a1bb951735666f689961e0bf5ab2a  gcc/testsuite/gcc.dg/pr94968.c
+ 86ccf70ae09c24fad23aa9df39072a82  gcc/testsuite/gcc.dg/pr95115.c
  1feb85be5d60e05ef1bda1b1214cd644  gcc/testsuite/gcc.dg/pr95118.c
  6b3d2610ef6b920618884db6c8135b74  gcc/testsuite/gcc.dg/pr95133.c
  130d9acc88fc75c668740cf769b79052  gcc/testsuite/gcc.dg/pr95141.c
*************** d6b62b5a89d45f0f06171c8b01716c4e  gcc/te
*** 38192,38199 ****
  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
  a802b5e0d50cb86641c238e173ecd7ec  gcc/testsuite/gcc.dg/pr96377-1.c
--- 38415,38422 ----
  aeb304797b8e2c6d1005832c4cef054a  gcc/testsuite/gcc.dg/pr95694.c
  563c3da44149a53b80a4845909b6be8a  gcc/testsuite/gcc.dg/pr95713.c
  1baa42b74e7a27e173aa760865ce25dd  gcc/testsuite/gcc.dg/pr95857.c
! 8860bd1282dc5af39ed43d3ab3c675fc  gcc/testsuite/gcc.dg/pr96260.c
! bea42aee96625a2eb14f74da27bfb773  gcc/testsuite/gcc.dg/pr96307.c
  0335046a3e339e020569e9abf2dfd119  gcc/testsuite/gcc.dg/pr96335.c
  b0c24e576cdfbf580f93fa792c734044  gcc/testsuite/gcc.dg/pr96370.c
  a802b5e0d50cb86641c238e173ecd7ec  gcc/testsuite/gcc.dg/pr96377-1.c
*************** b5fa0cd5917ab8447128f90c9aa66d86  gcc/te
*** 38210,38215 ****
--- 38433,38439 ----
  30f53d499facb7677def27401106f489  gcc/testsuite/gcc.dg/pr97534.c
  8de28fbb1fc8308939d75b5aa08ac83a  gcc/testsuite/gcc.dg/pr97539.c
  7cc410466db1f834697611a61399f7ba  gcc/testsuite/gcc.dg/pr97897.c
+ dd83a8b867ef8c886adacb097f55bc6b  gcc/testsuite/gcc.dg/pr97953.c
  ec1830becced622760bda688ca2bb126  gcc/testsuite/gcc.dg/pr9814-1.c
  0ffdbfe76fd130e510ec19ac27307b9d  gcc/testsuite/gcc.dg/pr98255.c
  358377419a8fc398557c8e69170ddbc9  gcc/testsuite/gcc.dg/pr98287.c
*************** ec1830becced622760bda688ca2bb126  gcc/te
*** 38217,38222 ****
--- 38441,38448 ----
  6f1182e067a6b12f97acf69996773c2e  gcc/testsuite/gcc.dg/pr98766.c
  2eea8fc255e64207bc4e80b2eb33a6f0  gcc/testsuite/gcc.dg/pr99136.c
  915d115cd30c8f24c98345c9a7a5593c  gcc/testsuite/gcc.dg/pr99224.c
+ 110164c4d9d3f245273a057dc1b1b2e8  gcc/testsuite/gcc.dg/pr99830.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
*************** a22c0db258dd69508b2ceb6070cac172  gcc/te
*** 38511,38516 ****
--- 38737,38743 ----
  9c8f50b89f148a9e2b73e3fa23c04b60  gcc/testsuite/gcc.dg/split-8.c
  70c0f8d6fc8dfd96b3356185306477b4  gcc/testsuite/gcc.dg/sso-1.c
  9821ad4cb043e8bea1647783db517677  gcc/testsuite/gcc.dg/sso-10.c
+ ae63ef59d4955da47b8b32d066fbadb0  gcc/testsuite/gcc.dg/sso-16.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
*************** b151f401ebe15ffdbefdb4db4f4ccae9  gcc/te
*** 38971,38976 ****
--- 39198,39204 ----
  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
  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
*************** c291ca9e80ea000b6dc33f0d7f7d34e9  gcc/te
*** 39140,39147 ****
  f8e2abd75769f3a4ef8ad7b9914390be  gcc/testsuite/gcc.dg/torture/fp-int-convert-long-double.c
  9ef87b27cfee504086000e94ac29f50a  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-1.c
  5169357e3279d3d6cdbbba3f5f56ae06  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-2.c
! fd8e4b5780f61cf3b05303134b29baff  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c
! 3ce2c239552d01bdeca3fb45312a4cc2  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c
  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
--- 39368,39375 ----
  f8e2abd75769f3a4ef8ad7b9914390be  gcc/testsuite/gcc.dg/torture/fp-int-convert-long-double.c
  9ef87b27cfee504086000e94ac29f50a  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-1.c
  5169357e3279d3d6cdbbba3f5f56ae06  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-2.c
! 1693262ce9bbff75614cabd11769c3bb  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c
! 4c8473474ab81348950cc8917d5cfdba  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c
  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
*************** d07ecd707fac97fa40042e04a59d4b1e  gcc/te
*** 39174,39179 ****
--- 39402,39425 ----
  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
+ 9d2f1adc508f8626c3bd56448501eb00  gcc/testsuite/gcc.dg/torture/pr100492.c
+ 6335c9430427e1e94a7a58bb8b0b5255  gcc/testsuite/gcc.dg/torture/pr100566.c
+ 5f5809ecbd695f122244007bc7702241  gcc/testsuite/gcc.dg/torture/pr100672.c
+ ddd13a0e9f6c82227fa9db9ba858a6ea  gcc/testsuite/gcc.dg/torture/pr100786.c
+ 8b17a9d424e890ccb3124ad5ef70f837  gcc/testsuite/gcc.dg/torture/pr100923.c
+ de1ad14692100748f699bc7db768a51d  gcc/testsuite/gcc.dg/torture/pr100934.c
+ cbce37eea923f47befb962cd2af5ac3a  gcc/testsuite/gcc.dg/torture/pr101009.c
+ 26df74aa3790822d5269438121e02a5d  gcc/testsuite/gcc.dg/torture/pr101105.c
+ ad6242e66d3dccabe71dd1502730f6d6  gcc/testsuite/gcc.dg/torture/pr101173.c
+ 556a928be1d2de2f0390088de1d6e46f  gcc/testsuite/gcc.dg/torture/pr101394.c
+ 9f1dcdf5769944ea067a3a74f74fa4f9  gcc/testsuite/gcc.dg/torture/pr102762.c
+ 98aa192f1dd77816cc201b3a0ee72edb  gcc/testsuite/gcc.dg/torture/pr103181.c
+ 190d413f3b81d5e1b395090ae83703be  gcc/testsuite/gcc.dg/torture/pr103237.c
+ 66fcee07a56c19209cb4aaa0d4aaaded  gcc/testsuite/gcc.dg/torture/pr103596.c
+ 187b7ab38abc20e5b403f44030455c53  gcc/testsuite/gcc.dg/torture/pr104402.c
+ ca1b8736d16b2cdaabaec84f87fa4d15  gcc/testsuite/gcc.dg/torture/pr105163.c
+ a88279579fa471a64faeb41da64a9eb4  gcc/testsuite/gcc.dg/torture/pr105198.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
*************** a5d39ec2048b8f4f3145b829fa56bec1  gcc/te
*** 40149,40161 ****
--- 40395,40412 ----
  0b01dca702634f65529254117d74cdc9  gcc/testsuite/gcc.dg/torture/pr96130.c
  6904165f78a3e3bd6c3a2d614bbf3240  gcc/testsuite/gcc.dg/torture/pr96133.c
  a2224137d9db6e254b70f0985eaa812f  gcc/testsuite/gcc.dg/torture/pr96349.c
+ 62030ce11318324c6a00eed2b2eebee1  gcc/testsuite/gcc.dg/torture/pr96513.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
+ e04ec27dc5469da4d5b29038bf9a9865  gcc/testsuite/gcc.dg/torture/pr98601.c
  199fada7702df9f4b8545d7dcb3c7cb7  gcc/testsuite/gcc.dg/torture/pr98640.c
  26d769ec578c3e810f69bed767d169de  gcc/testsuite/gcc.dg/torture/pr98758.c
+ 4d7897f67f77d46b2917c68e493089ba  gcc/testsuite/gcc.dg/torture/pr98786.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
+ 42cad3ed6f197e1283a3767a1f0ae8d6  gcc/testsuite/gcc.dg/torture/pr99954.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
*************** ffc8d6d378e80da23cc2300fd9f2d529  gcc/te
*** 40225,40230 ****
--- 40476,40482 ----
  d5967747961c3c0e43380a4aee91e5dd  gcc/testsuite/gcc.dg/torture/stackalign/vararg-1.c
  43fcb5d2985d6b4e94c4aebf0392dbd4  gcc/testsuite/gcc.dg/torture/stackalign/vararg-2.c
  3de9668ba2bd89837c3f7c15e1e3d7e2  gcc/testsuite/gcc.dg/torture/stackalign/vararg-3.c
+ 9ff09cb739592baf30552acd2b24f79f  gcc/testsuite/gcc.dg/torture/tls/pr104777.c
  ed0fa1d073845fed5b0352c474ef8b77  gcc/testsuite/gcc.dg/torture/tls/run-gd.c
  df7b12dbf9d331f62fd4d971bf2212d0  gcc/testsuite/gcc.dg/torture/tls/run-ie.c
  85eac160403c7fbaad14f07a01f0b507  gcc/testsuite/gcc.dg/torture/tls/run-ld.c
*************** b785e1a2b2d1f8899bb42aef2aebb7a8  gcc/te
*** 40949,40954 ****
--- 41201,41207 ----
  68ea1e33b73e2699fe3e0888ae6721b1  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-13.c
  fe84a4129539ca0baa6a9d7402d4d376  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-14.c
  b1188ae63556e140acddb61c169ee3c5  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-15.c
+ 5d4cdc6bd818734c048b194c28a11deb  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-16.c
  b12d1ab254d179b32ea5f184c4240c23  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1b.c
  195d9617ba34c560d8e9caab1c13ad0e  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-2.c
  4f2173acb80928f0b6a87daf5033149e  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-3.c
*************** db4f86a4f8ff0fc9653954f4e21c1f3f  gcc/te
*** 41012,41017 ****
--- 41265,41272 ----
  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
+ 54f39b48fa6b3cbd7593e9bc52d33a21  gcc/testsuite/gcc.dg/tree-ssa/pr100278.c
+ d5dace55f72aa8ccb51636dff79f5ccc  gcc/testsuite/gcc.dg/tree-ssa/pr101824.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
*************** c75fd65ee6a8f250fc885fc554c2b9d6  gcc/te
*** 41865,41870 ****
--- 42120,42126 ----
  8a83bffa449a2f7e2bc20676eccd36b5  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-86.c
  bab030e723ebb78dbecdf8eb91fd51f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-87.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
*************** d122ac18b4a3ae4813e46562ff41d564  gcc/te
*** 42667,42672 ****
--- 42923,42929 ----
  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
+ 6893aed7299a121a69eb5b9deac04ae4  gcc/testsuite/gcc.dg/vect/pr102046.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
*************** bf82071ea86307b407ab979b320a2a98  gcc/te
*** 45188,45194 ****
--- 45445,45453 ----
  c5ac198fcc683ea88b36ff21fc73e2c5  gcc/testsuite/gcc.target/aarch64/pr97638.c
  9de38bfb1ed2fd966b262da7bfb1767a  gcc/testsuite/gcc.target/aarch64/pr97701.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
+ 5e9a238ae88bfc957497e635ed104144  gcc/testsuite/gcc.target/aarch64/pr99988.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
*************** cd84e485b3fa7a0d50f2ee5113eca33d  gcc/te
*** 47591,47596 ****
--- 47850,47856 ----
  111a35b5bdbe877086a99d29b13dc65b  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94700.c
  dd9873ff910539b000561a51ccc3a52f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr96146.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
*************** f247489d5a83c25a52bba3f69ccf6256  gcc/te
*** 48197,48202 ****
--- 48457,48463 ----
  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
  766aab18648676b9173822adb5606607  gcc/testsuite/gcc.target/aarch64/sve/pr88834.c
*************** cade04c34d59dcc18fe0606f0bd12dda  gcc/te
*** 48209,48218 ****
--- 48470,48486 ----
  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
+ 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
  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
+ 3700e9317b864fda88d513b134b71a26  gcc/testsuite/gcc.target/aarch64/sve/pr98726.c
  7f7269cfe880136a54291a5c33b07d00  gcc/testsuite/gcc.target/aarch64/sve/pr98791.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
  be3bc45b321c4b84deacc9d04819a288  gcc/testsuite/gcc.target/aarch64/sve/recip_1.c
*************** b360e0ac1da1500645df64fce4fab7dd  gcc/te
*** 49374,49383 ****
--- 49642,49654 ----
  d807c78d9b80a1f49bc50cb0cae86706  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_2.c
  c1ccdcf1821a2a9f689561bfc74f48dc  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
  b4127affc5c8c177d402c917c2b81097  gcc/testsuite/gcc.target/aarch64/symbol-range.c
+ d707fbbaf0d37436be7ea3b6ac3b81d7  gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c
  c210c6b6344e5119de7869315aefba48  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
  322a3d828a7a9ead661b7d17a7aeceea  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.x
+ 2687cc48cb064e67e3949a43386961bf  gcc/testsuite/gcc.target/aarch64/sync-op-acquire-ool.c
  002f159c83e5462862ec82620c2630ae  gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c
  1e1c36a3eb9a0bd45a0e250e1d2b1ce5  gcc/testsuite/gcc.target/aarch64/sync-op-acquire.x
+ 14c3e5537db0cba1ee1aa29279f1d44a  gcc/testsuite/gcc.target/aarch64/sync-op-full-ool.c
  34216778cb9e5a4611eb55ae4ccfaf4b  gcc/testsuite/gcc.target/aarch64/sync-op-full.c
  17abd80a4e460d31237f3ece87c85558  gcc/testsuite/gcc.target/aarch64/sync-op-full.x
  f87f898044cd78f2ebf530577d3cf7bb  gcc/testsuite/gcc.target/aarch64/sync-op-release.c
*************** c850677a06284224d4f4c40ffd5e4d78  gcc/te
*** 49394,49401 ****
  639032a9f80bce937ccbcf962600a338  gcc/testsuite/gcc.target/aarch64/target_attr_17.c
  c58ba3dda55aafe8c837f58d3ba9dc9d  gcc/testsuite/gcc.target/aarch64/target_attr_18.c
  93145ff3e03510c58daa08e45866f6ba  gcc/testsuite/gcc.target/aarch64/target_attr_2.c
! bda8eed00f321b4cfe8fffd7a2a549d1  gcc/testsuite/gcc.target/aarch64/target_attr_20.c
! 9ea0cd1c37488478ebbda0afaf90eb5a  gcc/testsuite/gcc.target/aarch64/target_attr_21.c
  a4a6eccdba213faef4196f8ebe4152a3  gcc/testsuite/gcc.target/aarch64/target_attr_3.c
  c17cb964233b0aa7dd1ec0085d5a8fe2  gcc/testsuite/gcc.target/aarch64/target_attr_4.c
  77ed3e7c559e6c7bb67620fa37d32e76  gcc/testsuite/gcc.target/aarch64/target_attr_5.c
--- 49665,49672 ----
  639032a9f80bce937ccbcf962600a338  gcc/testsuite/gcc.target/aarch64/target_attr_17.c
  c58ba3dda55aafe8c837f58d3ba9dc9d  gcc/testsuite/gcc.target/aarch64/target_attr_18.c
  93145ff3e03510c58daa08e45866f6ba  gcc/testsuite/gcc.target/aarch64/target_attr_2.c
! 8b44261d4e827e2d0e48c50c109f35b5  gcc/testsuite/gcc.target/aarch64/target_attr_20.c
! 6fc49b0d1c0f511ac3f21e291184cb00  gcc/testsuite/gcc.target/aarch64/target_attr_21.c
  a4a6eccdba213faef4196f8ebe4152a3  gcc/testsuite/gcc.target/aarch64/target_attr_3.c
  c17cb964233b0aa7dd1ec0085d5a8fe2  gcc/testsuite/gcc.target/aarch64/target_attr_4.c
  77ed3e7c559e6c7bb67620fa37d32e76  gcc/testsuite/gcc.target/aarch64/target_attr_5.c
*************** a9f54382c872d8300abd0751aaf2baa7  gcc/te
*** 49633,49638 ****
--- 49904,49910 ----
  582df4fc7c8b439347d0ffcf02953017  gcc/testsuite/gcc.target/alpha/cix-2.c
  c4eec60b3306ebc857f91dd9f92ff8fe  gcc/testsuite/gcc.target/alpha/max-1.c
  868d557785ef579297eaa8d96b97b3fc  gcc/testsuite/gcc.target/alpha/max-2.c
+ cda436a64900819743f9c85f6ef0caae  gcc/testsuite/gcc.target/alpha/pr105209.c
  dc5943b1dd495250e6dc8076b32c902c  gcc/testsuite/gcc.target/alpha/pr19518.c
  f8467590e67b2b5f4718d571a9ba60c0  gcc/testsuite/gcc.target/alpha/pr22093.c
  b36471f8edbf2a11ce23359823ecc10b  gcc/testsuite/gcc.target/alpha/pr24178.c
*************** eee783c37d90eef12bf5d89dd9e9f34c  gcc/te
*** 49907,49912 ****
--- 50179,50185 ----
  1089abf6533526d82e14c2c80d726483  gcc/testsuite/gcc.target/arm/acle/mrc2.c
  e66b3819f1cc1c13b66c38b83972f3a2  gcc/testsuite/gcc.target/arm/acle/mrrc.c
  5280b32decaf5622a9f85f834e828bdf  gcc/testsuite/gcc.target/arm/acle/mrrc2.c
+ 86c499d24586512163846019c7506633  gcc/testsuite/gcc.target/arm/acle/pr100856.c
  c351089daa0fb41b19888a703d2c10c8  gcc/testsuite/gcc.target/arm/acle/sat_no_smlatb.c
  8654b6f7bf64a1d8f8ffa2f9bcf1431a  gcc/testsuite/gcc.target/arm/acle/saturation.c
  aba97f9977e18f8c2b8fd7ce559b513f  gcc/testsuite/gcc.target/arm/acle/simd32.c
*************** cf7c684a14b2daa8b876c512e3599582  gcc/te
*** 50004,50012 ****
  d5f4f823ea6fb9bc4c6e9ccba5acdb91  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail.c
  c462d71e23fb07062a21f54c54d09271  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail2.c
  503e1413bdd5662d2c58a37bf84814b7  gcc/testsuite/gcc.target/arm/attr-neon-fp16.c
! e45d18a6bd453ee0583a14f1ec577ca6  gcc/testsuite/gcc.target/arm/attr-neon.c
! 0ffb1bd2df426c7f4e30d62c784338b3  gcc/testsuite/gcc.target/arm/attr-neon2.c
! d6e6da3a36344077e01b8966604337d8  gcc/testsuite/gcc.target/arm/attr-neon3.c
  2fc3bc36f2a6337c4305bded55708046  gcc/testsuite/gcc.target/arm/attr-unaligned-load-ice.c
  ba6a1a17734115428b72a71a491695fb  gcc/testsuite/gcc.target/arm/attr_arm-err.c
  8ab2ce7d24547f03640f6087eb2b9be4  gcc/testsuite/gcc.target/arm/attr_arm.c
--- 50277,50285 ----
  d5f4f823ea6fb9bc4c6e9ccba5acdb91  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail.c
  c462d71e23fb07062a21f54c54d09271  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail2.c
  503e1413bdd5662d2c58a37bf84814b7  gcc/testsuite/gcc.target/arm/attr-neon-fp16.c
! 4a4bc58114ce671d72a5c4665876477b  gcc/testsuite/gcc.target/arm/attr-neon.c
! f23d0119800a017079c65170401ab2c1  gcc/testsuite/gcc.target/arm/attr-neon2.c
! 4bbb4aad24c231d5708eee737823fd9b  gcc/testsuite/gcc.target/arm/attr-neon3.c
  2fc3bc36f2a6337c4305bded55708046  gcc/testsuite/gcc.target/arm/attr-unaligned-load-ice.c
  ba6a1a17734115428b72a71a491695fb  gcc/testsuite/gcc.target/arm/attr_arm-err.c
  8ab2ce7d24547f03640f6087eb2b9be4  gcc/testsuite/gcc.target/arm/attr_arm.c
*************** ebdb15be89bef0e9c175a92e85f05897  gcc/te
*** 50088,50095 ****
  ef7ca529c8bfa7604b48cdb713711215  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  f76ced2a530d80991ba85c2e39dd5dd4  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
  da139a3f1e88bf3b7034931f46a04110  gcc/testsuite/gcc.target/arm/cmse/cmse-17.c
! df01e6fd13521f4e7fa6a6592cc5cdbf  gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
  d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  ce1fe2059d8e263b0f3d889cb1392892  gcc/testsuite/gcc.target/arm/cmse/cmse-5.x
--- 50361,50369 ----
  ef7ca529c8bfa7604b48cdb713711215  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  f76ced2a530d80991ba85c2e39dd5dd4  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
  da139a3f1e88bf3b7034931f46a04110  gcc/testsuite/gcc.target/arm/cmse/cmse-17.c
! a0cc973b6770567d9ae9d0d7e19290d3  gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
  d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
+ 9309eaae0e11dbd8092b4249a3023775  gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  ce1fe2059d8e263b0f3d889cb1392892  gcc/testsuite/gcc.target/arm/cmse/cmse-5.x
*************** cc493670dd81332714420ec2e51f11f1  gcc/te
*** 50113,50128 ****
--- 50387,50410 ----
  e9afe97825e8d8a0ad0f1d1ee3eba768  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/hard/cmse-7.c
  ff736441775234283ea7c6b9f1742b98  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/hard/cmse-8.c
  6815b34847bb8c1d4aaf45cc5344b7b6  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13.c
+ db19589d0c4e84247117453be17a73ce  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c
  b1a9cf3bbbd541dee53394308dbecae2  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-5.c
  6265d3dbb6378f6c5f9f2c8a431b93db  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7.c
+ f48c6bc5f8199665d88044989256a6da  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c
  c42fcbcdb666110e68869e154ab77224  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8.c
+ 3aab495c2f4a1431d76eac0d78dfa603  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c
  103278679c354a109f1d358eddb30859  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-5.c
  162060f488114726d1b43a3eedb8496a  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7.c
+ 5dc87c9817f7467ef3df83c11e8e53d0  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c
  09db0263f84eba86f3cc3bb4b054f575  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8.c
+ 02d3d6d6d2419da3eaddb692c3889bf1  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c
  866f1d66352909acbf56cea6bc9ad83c  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13.c
+ 6f2a81b28babe75e93ec80bef4a27d7f  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c
  128f22a56da604008370c39435f4c275  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-5.c
  b67dc35cb041e665b0436a8b3c1dbbf9  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7.c
+ 627b693e4e8a053229d1b802e1cbed82  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c
  3ecfaa9db2870273dd05cd02a2bd597b  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8.c
+ df829d6ec7fb9540fcbd66368f0fb17b  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
  539f0378e45653ff2109841bd4bccc87  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-1.c
  895e0fb552647a0516559c1bf30963e5  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/union-2.c
  ab4a6ad246ee43f02f3290436cb16703  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/bitfield-4.c
*************** cb1f8a28400b5e5ea5ea510c8a09258b  gcc/te
*** 50153,50158 ****
--- 50435,50442 ----
  7c237776495bc9451d7b94ec36068f56  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/softfp/cmse-8.c
  cb60008d5e98eeaf45a18dec48047164  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-1.c
  bfdbc743afa8415599bab6c48cb26d64  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-2.c
+ 8cd1e54844f2fab111ede15dfc983556  gcc/testsuite/gcc.target/arm/cmse/pr100333.c
+ c7feddd41b8ab7d0bcc61e9ba67a259a  gcc/testsuite/gcc.target/arm/cmse/pr99725.c
  29329b40a9bee292da1ddd2d9e8381b7  gcc/testsuite/gcc.target/arm/cmse/struct-1.c
  018f6e1e401b9f8f53cb13da1c5fcef7  gcc/testsuite/gcc.target/arm/cmse/union-1.x
  4b49e4c79c02f37ae492dd2e76ef29e7  gcc/testsuite/gcc.target/arm/cmse/union-2.x
*************** d38897569ba0b5112694e6e1fe6662b5  gcc/te
*** 50167,50175 ****
  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
--- 50451,50459 ----
  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
! 16bc1bcd5be07e9c50246af4c9c55723  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c
! 78816c4b8cd7d874f11fa54bf67c6390  gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c
! 3861c314865ebd17821082bfd56eb777  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
*************** c6b1f31177a60b170040e0eddc1787ba  gcc/te
*** 50347,50361 ****
  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
  f846a99fa37aa6932ef3fa1100fa2e84  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c
  a23662cdce162388aafacd6bd5ae8401  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c
  4b3d64afb38db51bd5eac30322143dd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c
! 8e61c2102e6545692dba243a0a09a1f8  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu1.c
! 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
--- 50631,50645 ----
  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
! 6f2cc4d740725519a80d708d9190b5d6  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
  f846a99fa37aa6932ef3fa1100fa2e84  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_fpu1.c
  a23662cdce162388aafacd6bd5ae8401  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_fpu2.c
  4b3d64afb38db51bd5eac30322143dd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fp_vaddq_n.c
! 132717e92c239271ccfc4f567a61fd56  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu1.c
! 7831959c4528e6a37429d37461c09bd6  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
*************** c879488b4e9c56c955efe3d925ec2ca5  gcc/te
*** 50453,50458 ****
--- 50737,50743 ----
  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
+ cfb4125c4550d5cf153bac3dcd2886ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.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
*************** b64036d0e4652c89049f943a11bc896d  gcc/te
*** 51424,51433 ****
  06fd44259c15a9ecf1df5b8265ae45b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c
  49102b3b7196fa2c571c40fe8791ae8f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c
  3deda27797695493a9e567062c139857  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c
! ff4de3b6c0f13fa3859f2187ec0d5b5a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c
! f2c0451fbc0e1f59c801082c4fd2f2f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c
! da4612a540a4502a2023ae0df8d1c7f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c
! b086b8fd4df50799af737b21c7b69c1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c
  b4cf7f2a1489458e36dfd4518713560f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c
  eec0c5413aaf58c513f78c16695ba8f8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c
  0770112509a3a62968093ae926528aef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c
--- 51709,51718 ----
  06fd44259c15a9ecf1df5b8265ae45b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrbq_z_u8.c
  49102b3b7196fa2c571c40fe8791ae8f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c
  3deda27797695493a9e567062c139857  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c
! 78fe9b6d29835717f2993e76bf4de6be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c
! 874577ef1aa8bc6ca4a416c531dcb322  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c
! d40af626a080e6b45941068f503a11a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c
! b19e1e2343857eb82e04cae9cc29b25e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c
  b4cf7f2a1489458e36dfd4518713560f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_s64.c
  eec0c5413aaf58c513f78c16695ba8f8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_z_u64.c
  0770112509a3a62968093ae926528aef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_offset_s64.c
*************** bc23d7c97ce5cd4d925d2584ba26e8d9  gcc/te
*** 52900,52907 ****
  4f4647fda4b51e236989d04766be3f50  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c
  23988252db151973cc6a8a718310f805  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c
  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
--- 53185,53192 ----
  4f4647fda4b51e236989d04766be3f50  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c
  23988252db151973cc6a8a718310f805  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c
  1b1caac6115bffedba10607ae46ecb1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c
! dd8187345c556677b24a6d6363dd2cf5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c
! 140114add4d912efe3ae58837e07a2e9  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
*************** ef7228203e3de2362184e00a8c156132  gcc/te
*** 53121,53127 ****
  038b3bb27d1430e5bcaacffe8348eb14  gcc/testsuite/gcc.target/arm/pr69180.c
  51f46e9158ad549a6f9079f849c4c10d  gcc/testsuite/gcc.target/arm/pr69187.c
  b1f1919dcfa1287f837de2b937769050  gcc/testsuite/gcc.target/arm/pr69194.c
! ea51ac3985ec65a675e98d7486d1c3fc  gcc/testsuite/gcc.target/arm/pr69245.c
  ecd06975766e392b211a369c6a9a3273  gcc/testsuite/gcc.target/arm/pr69307.c
  e5aafcaef63ec87ca861c2c3df04f753  gcc/testsuite/gcc.target/arm/pr69614.c
  32fee62df6d98765a5508d0d96c9eb65  gcc/testsuite/gcc.target/arm/pr69904.c
--- 53406,53412 ----
  038b3bb27d1430e5bcaacffe8348eb14  gcc/testsuite/gcc.target/arm/pr69180.c
  51f46e9158ad549a6f9079f849c4c10d  gcc/testsuite/gcc.target/arm/pr69187.c
  b1f1919dcfa1287f837de2b937769050  gcc/testsuite/gcc.target/arm/pr69194.c
! 05e46560368a7df97a4f31249ffebcc7  gcc/testsuite/gcc.target/arm/pr69245.c
  ecd06975766e392b211a369c6a9a3273  gcc/testsuite/gcc.target/arm/pr69307.c
  e5aafcaef63ec87ca861c2c3df04f753  gcc/testsuite/gcc.target/arm/pr69614.c
  32fee62df6d98765a5508d0d96c9eb65  gcc/testsuite/gcc.target/arm/pr69904.c
*************** eb13a55564e5e8fb2982994c3b17a08c  gcc/te
*** 53169,53175 ****
--- 53454,53463 ----
  a4dddc54737b0b03cf2909b16a50f905  gcc/testsuite/gcc.target/arm/pr91603.c
  b9de14b057556565fd0ad59ac1cd4e7e  gcc/testsuite/gcc.target/arm/pr91684.c
  e176eff84ec1966606dbac1ac50fc431  gcc/testsuite/gcc.target/arm/pr91816.c
+ d82900f431e8901b0c85c6ec6602768b  gcc/testsuite/gcc.target/arm/pr95646.c
  fe5e1dadd9ea1e8cccb81773046e8da9  gcc/testsuite/gcc.target/arm/pr97528.c
+ 5a0206dfb3c3b92c728997ed8090982f  gcc/testsuite/gcc.target/arm/pr97969.c
+ ec5230c6f63b4a45740b6ae0d8e7b39c  gcc/testsuite/gcc.target/arm/pr99977.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
*************** d1fa915a7ba92f09b7cb8676f62a0974  gcc/te
*** 53177,53184 ****
  69a76bf30e898a884452a47f57250f63  gcc/testsuite/gcc.target/arm/pragma_attribute.c
  71ad4b41bc5bd0250d3207f161968628  gcc/testsuite/gcc.target/arm/pragma_cde.c
  9116a1dcd409b76a55fc08b4255c9d50  gcc/testsuite/gcc.target/arm/pragma_cpp_fma.c
! c9e6771b67edbcdcd59fc69d96f76bd0  gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c
! 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
--- 53465,53472 ----
  69a76bf30e898a884452a47f57250f63  gcc/testsuite/gcc.target/arm/pragma_attribute.c
  71ad4b41bc5bd0250d3207f161968628  gcc/testsuite/gcc.target/arm/pragma_cde.c
  9116a1dcd409b76a55fc08b4255c9d50  gcc/testsuite/gcc.target/arm/pragma_cpp_fma.c
! 90392e1b8e06b6f5c00c86ecf249fd69  gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c
! a13d496741ee33ca9436673eb16995cf  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
*************** f5710388bf6592fabf21f6aa05044790  gcc/te
*** 54333,54338 ****
--- 54621,54627 ----
  3391c9dd1dd0dbbac597a660fd5fb010  gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c
  b4097136b326678c552cf24792f79fe8  gcc/testsuite/gcc.target/i386/avx-mul-1.c
  46322bf9b32fe645dd973a6bc8e8b128  gcc/testsuite/gcc.target/i386/avx-os-support.h
+ 649073dcb552cc5ef8392806cbe23d1c  gcc/testsuite/gcc.target/i386/avx-pr102224.c
  62aa13560c827f799be1941a2e6da500  gcc/testsuite/gcc.target/i386/avx-pr51581-1.c
  c437ae63e2540199d8c765547fc407d6  gcc/testsuite/gcc.target/i386/avx-pr51581-2.c
  b6e744a5c521873cc8be2dbb5f25790d  gcc/testsuite/gcc.target/i386/avx-pr57233.c
*************** c0dd86eaa0095c2b38908928d5034cf3  gcc/te
*** 55999,56004 ****
--- 56288,56295 ----
  d787a0a2840b56339d3621983623b18d  gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-5.c
  d35963959d5b010c3b26b967f48d3608  gcc/testsuite/gcc.target/i386/avx512f-or-si-zmm-6.c
  17acbefd47a510ed96d83a23e3e4b8c3  gcc/testsuite/gcc.target/i386/avx512f-os-support.h
+ 7371abf8df649ac78965cd397d5f5a42  gcc/testsuite/gcc.target/i386/avx512f-pr101471.c
+ 9bceffe4e050aeec5dfd5c8013709ffe  gcc/testsuite/gcc.target/i386/avx512f-pr101472.c
  88877c518076ecdec1dba128743ad627  gcc/testsuite/gcc.target/i386/avx512f-pr57233.c
  0272e0fc54cb34ee03db4b0027dbec3d  gcc/testsuite/gcc.target/i386/avx512f-pr63594-1.c
  381f53de01f1e9893e6903d9fac40b87  gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c
*************** c0ef55ca688d812ce21255d44fb1a7d9  gcc/te
*** 56899,56904 ****
--- 57190,57196 ----
  c1fc8c403bea321e9edbec8f46fe2fd8  gcc/testsuite/gcc.target/i386/avx512vl-or-si-ymm-1.c
  5eaf41121795442d2f0736d687d1f1e5  gcc/testsuite/gcc.target/i386/avx512vl-pack-1.c
  994c768ea6f011cb5852de30a104bd2e  gcc/testsuite/gcc.target/i386/avx512vl-pack-2.c
+ 94073157c7c18d465b0898342cfaf127  gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c
  1ce70da2226efd6f3d5d92c101fb79d9  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-1.c
  e3cc31b3308cdb56423451f2cd8c2a00  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-2.c
  7cff0350d919ed5edc42e841b11e38f2  gcc/testsuite/gcc.target/i386/avx512vl-pr82370.c
*************** f91cf99532e69c383485f6be3f62eb99  gcc/te
*** 58391,58396 ****
--- 58683,58705 ----
  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
+ f6d11dafd312969f2c744769fa5060e7  gcc/testsuite/gcc.target/i386/pr100182.c
+ 3c07d29535c0112e7c384c8908011917  gcc/testsuite/gcc.target/i386/pr100342.c
+ f8c6587e64861b8f769159de826acd76  gcc/testsuite/gcc.target/i386/pr101175.c
+ 4f610ba3f94dc4f52aa642107694f970  gcc/testsuite/gcc.target/i386/pr102498.c
+ 34eb3ca8ee784a5cb3c2145b1609e105  gcc/testsuite/gcc.target/i386/pr102761.c
+ bcf207e15c0d5b9e3168e3c570bc4999  gcc/testsuite/gcc.target/i386/pr103205.c
+ 5fbee8826b1f4da8d9dd6a2f09f18e0e  gcc/testsuite/gcc.target/i386/pr103908.c
+ 9db2b13a34fc86475d27728a925461c5  gcc/testsuite/gcc.target/i386/pr104446.c
+ 9afbd8cbff177a7e555fe32de7558c2e  gcc/testsuite/gcc.target/i386/pr104451.c
+ f34a56063b53daa2722dd66e280f5aab  gcc/testsuite/gcc.target/i386/pr104453.c
+ 30d7b1638a5f604ac4353737e0db1816  gcc/testsuite/gcc.target/i386/pr104458.c
+ a92681d4c2c5095462e23684946fe9fd  gcc/testsuite/gcc.target/i386/pr104469.c
+ 6f32caf69432ac867dd42051bcfa22a8  gcc/testsuite/gcc.target/i386/pr104502.c
+ 21083ed0382a1c184689d3a9ee1bc7ee  gcc/testsuite/gcc.target/i386/pr104637.c
+ a64b8516e04de39ddebcd66dc046d450  gcc/testsuite/gcc.target/i386/pr104971.c
+ 3de9ba59994fd09bad053a28eecbc68d  gcc/testsuite/gcc.target/i386/pr105123.c
+ afe42f2264a7583bee62a6e718faeef5  gcc/testsuite/gcc.target/i386/pr105970.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
*************** f353395bccf918949658ea5606b5bc6e  gcc/te
*** 59270,59277 ****
  2969e0a99ac5696cdf2b676f9bebb301  gcc/testsuite/gcc.target/i386/pr70955.c
  b041f793f29c8dbb81f30cc6cff59540  gcc/testsuite/gcc.target/i386/pr71016.c
  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
--- 59579,59584 ----
*************** f8ecf4adafb31200f6cb5f02f878203e  gcc/te
*** 59872,59878 ****
--- 60179,60189 ----
  3e550210eceaa9555180fcdc5434cf50  gcc/testsuite/gcc.target/i386/pr98086.c
  f05a11a90b720489273566f54bf45421  gcc/testsuite/gcc.target/i386/pr98100.c
  598c4bf58ece3ffbf0f20347f12676e0  gcc/testsuite/gcc.target/i386/pr98522.c
+ 83f00d9b70c99bee3a1b1df878dac4cd  gcc/testsuite/gcc.target/i386/pr98694.c
+ 5c90090d1d1e1b7415543965fbde2289  gcc/testsuite/gcc.target/i386/pr99726.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
  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
*************** cc8a162617784a2e883a5e726d28ebde  gcc/te
*** 59989,59995 ****
  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
--- 60300,60306 ----
  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
! 55f72111e4889f618479fe3acfa53018  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
*************** c54f25d14eb461caec02d191c2115a57  gcc/te
*** 62569,62577 ****
  1256ac93816d8a1e4a1b5590e2a84582  gcc/testsuite/gcc.target/powerpc/mma-builtin-1.c
  3d37afc338716bb9ee2ca06fed6f0f05  gcc/testsuite/gcc.target/powerpc/mma-builtin-2.c
  9dd372b54a73f5146abf4b2c46c340e4  gcc/testsuite/gcc.target/powerpc/mma-builtin-3.c
! 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
--- 62880,62890 ----
  1256ac93816d8a1e4a1b5590e2a84582  gcc/testsuite/gcc.target/powerpc/mma-builtin-1.c
  3d37afc338716bb9ee2ca06fed6f0f05  gcc/testsuite/gcc.target/powerpc/mma-builtin-2.c
  9dd372b54a73f5146abf4b2c46c340e4  gcc/testsuite/gcc.target/powerpc/mma-builtin-3.c
! f4cbe6fbc7caba42b9286ef3ca8f8454  gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c
! b94b02f54e2566541edbead974161cd8  gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c
! 3a2dd608a7572f3e1bda6e3d3a145109  gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c
! 2f3b0bbee570abb68e2bf91b3f4ef43d  gcc/testsuite/gcc.target/powerpc/mma-builtin-7.c
! 7ff80abf6e1bf3a4c80a83f649959643  gcc/testsuite/gcc.target/powerpc/mma-builtin-8.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
*************** e644ef57e549ba6b46da5cb2d302203f  gcc/te
*** 62768,62773 ****
--- 63081,63100 ----
  8d1bb8d348bbbd1468a4518fcfc930da  gcc/testsuite/gcc.target/powerpc/ppc64-double-1.c
  322275a6e18c464401bb8e7d050b7539  gcc/testsuite/gcc.target/powerpc/ppc64-toc.c
  a64bd4e47397af3253bc9e8dc2c56780  gcc/testsuite/gcc.target/powerpc/ppu-intrinsics.c
+ 5ccf50d6af741aec776b2d54411331d5  gcc/testsuite/gcc.target/powerpc/pr100777.c
+ 93530f0352e114499a2243d7a2a63830  gcc/testsuite/gcc.target/powerpc/pr101129.c
+ c5b190f8976eee8b644b3fa33d5ebbb2  gcc/testsuite/gcc.target/powerpc/pr101849.c
+ fef209ac364aa52b3c1bab51422d611c  gcc/testsuite/gcc.target/powerpc/pr101985-1.c
+ bbe41009113780dbcd6527cbec5f943c  gcc/testsuite/gcc.target/powerpc/pr101985-2.c
+ 5392663d9c3769a2d83b13aed765c6eb  gcc/testsuite/gcc.target/powerpc/pr102059-4.c
+ a192830e09e3a3d8478a89f2b2add0ff  gcc/testsuite/gcc.target/powerpc/pr102347.c
+ 0726fc47d5d46d095efa95b874637be7  gcc/testsuite/gcc.target/powerpc/pr102976.c
+ 20a7942f4601125d17110951f0d9d799  gcc/testsuite/gcc.target/powerpc/pr103627-1.c
+ 75bf709f259ebd7bb4ea3bb9e4c7a6e3  gcc/testsuite/gcc.target/powerpc/pr103627-2.c
+ 173204ae2ee9c78ee24b407929800cd8  gcc/testsuite/gcc.target/powerpc/pr103627-3.c
+ b7339ab4137e4c5175deca053bb790c8  gcc/testsuite/gcc.target/powerpc/pr104208-1.c
+ 7dff0a95f65947b541c04da0c7b307a5  gcc/testsuite/gcc.target/powerpc/pr104208-2.c
+ 76860a5a20e1c892c05c24cdc70fe3c2  gcc/testsuite/gcc.target/powerpc/pr104253.c
  c2f6d6cf82ef4931619d09e10a0a72aa  gcc/testsuite/gcc.target/powerpc/pr16155.c
  396ae287e72ecdda51bb3157818030a9  gcc/testsuite/gcc.target/powerpc/pr16286.c
  198d8a69d2887e8fadcb050d90e21aa6  gcc/testsuite/gcc.target/powerpc/pr16458-1.c
*************** b393d3f2f044e6fd8f631b7ab2551943  gcc/te
*** 63005,63012 ****
  d86d5375cd27e7c265ce5093d761b62e  gcc/testsuite/gcc.target/powerpc/pr87033.c
  5979805bab3b13abc55882e86f2cf535  gcc/testsuite/gcc.target/powerpc/pr87466.c
  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
--- 63332,63339 ----
  d86d5375cd27e7c265ce5093d761b62e  gcc/testsuite/gcc.target/powerpc/pr87033.c
  5979805bab3b13abc55882e86f2cf535  gcc/testsuite/gcc.target/powerpc/pr87466.c
  ac8ec30b46cfe96eba5cd34342878789  gcc/testsuite/gcc.target/powerpc/pr87496-1.c
! 991fc66b041e0aa2c8b134376d9dacdf  gcc/testsuite/gcc.target/powerpc/pr87496-2.c
! f18720cbdd0b8efcbfe7252a88d19901  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
*************** fc375fa4611e61db9f6772989772cd97  gcc/te
*** 63053,63059 ****
--- 63380,63388 ----
  acacca4b5662f17d21391b583487172e  gcc/testsuite/gcc.target/powerpc/pr96506.c
  713c433c1e5c80361a865ab817cd27b1  gcc/testsuite/gcc.target/powerpc/pr96530.c
  54d85fa08f775bccdcae07e834cb4364  gcc/testsuite/gcc.target/powerpc/pr96808.c
+ 167d500d972820e3c619cedabfbf86da  gcc/testsuite/gcc.target/powerpc/pr97142.c
  213beaa984952c5e9c8741ff42bef29f  gcc/testsuite/gcc.target/powerpc/pr97360.c
+ e2ddd4e82dd7a142609183f7be1ecb7d  gcc/testsuite/gcc.target/powerpc/pr98952.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
*************** f69ed9814aa0739480a17cf1070d4373  gcc/te
*** 63853,63858 ****
--- 64182,64188 ----
  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
  a800b0b2c0a7c1b33ad7379a050995d6  gcc/testsuite/gcc.target/riscv/predef-2.c
*************** f657a587777cadd240d90267c42183a8  gcc/te
*** 63917,63922 ****
--- 64247,64253 ----
  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
+ 1dabce41016ae8d4d1de9989a3307a73  gcc/testsuite/gcc.target/s390/20211119.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
*************** dfee7fa2ec55ccfb935c28226ca15fe3  gcc/te
*** 64081,64086 ****
--- 64412,64418 ----
  d5b2bba665576dc0538f9d0bd2142e62  gcc/testsuite/gcc.target/s390/nomemloopunroll-1.c
  eb96a92710915622b3f65dba4a30955d  gcc/testsuite/gcc.target/s390/oscbreak-1.c
  25c3bd00fd3d097e42ac8cfc215fd0c4  gcc/testsuite/gcc.target/s390/pfpo.c
+ 182ebf3677a29bf9b1dbb033505f78dd  gcc/testsuite/gcc.target/s390/pr104775.c
  765307a040de72f2f4376b7068d68018  gcc/testsuite/gcc.target/s390/pr20927.c
  85f31fb9b4b15529205376d3f6fa385c  gcc/testsuite/gcc.target/s390/pr24624.c
  7adacbd67601dc0845e556e5632cd718  gcc/testsuite/gcc.target/s390/pr27661.c
*************** a67458660c2ef2010f128fdaa4faaa86  gcc/te
*** 64612,64617 ****
--- 64944,64951 ----
  e470b0a0d1a056b60c3915a6dfcfd4ae  gcc/testsuite/gcc.target/sparc/20170228-1.c
  bf95d536cbad4db92f264aa740abbbbc  gcc/testsuite/gcc.target/sparc/20181129-1.c
  3b3205cedf38a33c506ea5c4414d489f  gcc/testsuite/gcc.target/sparc/20181129-2.c
+ 3f593e1ef43ebce309fa2b2033f8be77  gcc/testsuite/gcc.target/sparc/20210917-1.c
+ 0c6705acc2a655d06368478b465dca00  gcc/testsuite/gcc.target/sparc/20220510-1.c
  44373c57181608413fc07f3ec0e2ad6e  gcc/testsuite/gcc.target/sparc/align.c
  667a877a2fb02d919c4eaaea6fbccbad  gcc/testsuite/gcc.target/sparc/array.c
  941bd8aa096c3c20415035d9d17cca6e  gcc/testsuite/gcc.target/sparc/attr-aligned.c
*************** b09307dc50aad69d9ba101705dce41f4  gcc/te
*** 65130,65135 ****
--- 65464,65470 ----
  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
+ ba3ec121536606fdf9d34aff37b9da35  gcc/testsuite/gdc.dg/Wpadded.d
  fdb23cd57d2863bab04b6b83f3a39268  gcc/testsuite/gdc.dg/asan/asan.exp
  10180752a9d53fac31ca576e678cdd06  gcc/testsuite/gdc.dg/asan/gdc272.d
  2f281da37d8cea486197a86b1f276c02  gcc/testsuite/gdc.dg/asm1.d
*************** aeec8ff75316a52def72f86d4bc1708c  gcc/te
*** 65164,65169 ****
--- 65499,65513 ----
  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
+ 1ae8edb9b2cd9747efb9868621aec4e8  gcc/testsuite/gdc.dg/pr100882a.d
+ 7d27bb4ae013be8b6cb21a42a730353d  gcc/testsuite/gdc.dg/pr100882b.d
+ 167004b1d3ea4a1c36668f029fbe4290  gcc/testsuite/gdc.dg/pr100882c.d
+ c0f2db1fcb83cbb41fda8295889368ff  gcc/testsuite/gdc.dg/pr100882d.d
+ 16bbee694aa77823539b7b517bad4c50  gcc/testsuite/gdc.dg/pr100967.d
+ 740e20f8b4aa9d31c7412fbd3b58d4fb  gcc/testsuite/gdc.dg/pr101127a.d
+ 1913e638608dc57b978438a45ade3c4f  gcc/testsuite/gdc.dg/pr101127b.d
+ 874906b0c6afe60dafbbc739053ac4eb  gcc/testsuite/gdc.dg/pr101490.d
+ 13e2f7b1a821d0fa1089525b3df15479  gcc/testsuite/gdc.dg/pr101640.d
  d32aa8ed5ea10931be4ddb5bb9e863d8  gcc/testsuite/gdc.dg/pr89017.d
  53fa8db94d4ca3fc9ba83769733dc0e7  gcc/testsuite/gdc.dg/pr89041.d
  6c316b13f71ea31fcada56b58a41ebd1  gcc/testsuite/gdc.dg/pr89042a.d
*************** b62ff9f99e07b6dbb56f221a56f0b7ab  gcc/te
*** 65193,65202 ****
--- 65537,65548 ----
  eb911ca49c3c33021dd97064b0459923  gcc/testsuite/gdc.dg/pr96301a.d
  6f5ae39580efa1de2679c8912e82e1b8  gcc/testsuite/gdc.dg/pr96301b.d
  7880bdba7c166bb0d5af9d5a4530b438  gcc/testsuite/gdc.dg/pr96301c.d
+ 91aeadb49207b8ef8bedd4c016c1b443  gcc/testsuite/gdc.dg/pr96435.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
+ cbe01bd2f79e7ab3310ed946deebeec0  gcc/testsuite/gdc.dg/pr98457.d
  9119d0ec3d943f148ead051e9149fcd0  gcc/testsuite/gdc.dg/runnable.d
  7039ea5d3f34502d4ad2ebf20bbd078e  gcc/testsuite/gdc.dg/runnable2.d
  f8ff25c8358ba138bb7e92bed57a1406  gcc/testsuite/gdc.dg/simd.d
*************** f8ff25c8358ba138bb7e92bed57a1406  gcc/te
*** 65205,65211 ****
  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
  c830eb21b0dd96c9b8d314d8bbdf13b3  gcc/testsuite/gdc.test/compilable/alignment.d
  013ddc04571e4401d097e303967ae442  gcc/testsuite/gdc.test/compilable/art4769.d
--- 65551,65557 ----
  310f79be9999b0b9e22f7cfbfe79f71d  gcc/testsuite/gdc.test/README.gcc
  ab3d1adc569f350b1ab3f64a690fa774  gcc/testsuite/gdc.test/compilable/99bottles.d
  7e650360bd1bc425bba2aa151bb9ee13  gcc/testsuite/gdc.test/compilable/a3682.d
! fe92e980839f07bf95701e96735f857b  gcc/testsuite/gdc.test/compilable/aggr_alignment.d
  beddbf81ccc1e52ee7fa201b22781d91  gcc/testsuite/gdc.test/compilable/aliasdecl.d
  c830eb21b0dd96c9b8d314d8bbdf13b3  gcc/testsuite/gdc.test/compilable/alignment.d
  013ddc04571e4401d097e303967ae442  gcc/testsuite/gdc.test/compilable/art4769.d
*************** ef649aba680526d48bc3e69760b621f2  gcc/te
*** 65223,65234 ****
  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
  91312b385ab5eae660ff874edde30f1b  gcc/testsuite/gdc.test/compilable/b6400.d
  225f324f4744b9f862b07708e1d60547  gcc/testsuite/gdc.test/compilable/b9490.d
! 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
--- 65569,65581 ----
  1a88a6c51e44c3714508bdee2b346151  gcc/testsuite/gdc.test/compilable/b16967.d
  8982f69fd14c58a5dba7832efe5675f8  gcc/testsuite/gdc.test/compilable/b16976.d
  57d4e74913d1d58f85619152627c9d6d  gcc/testsuite/gdc.test/compilable/b17111.d
+ 985cbf872a2f9249c9e9c78338b0f501  gcc/testsuite/gdc.test/compilable/b19002.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
  91312b385ab5eae660ff874edde30f1b  gcc/testsuite/gdc.test/compilable/b6400.d
  225f324f4744b9f862b07708e1d60547  gcc/testsuite/gdc.test/compilable/b9490.d
! 05bd563df07dd7a5cae7c595d94d80de  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
*************** afe402733aa720a2cd8e8cc8e693949d  gcc/te
*** 65338,65343 ****
--- 65685,65691 ----
  96b3d751c92c490a3213da0030540e86  gcc/testsuite/gdc.test/compilable/extra-files/imp12624.d
  038135fba76af92f75037b2c58ae885d  gcc/testsuite/gdc.test/compilable/extra-files/imp9057.d
  8568ce2d1753427d734d5733834e6693  gcc/testsuite/gdc.test/compilable/extra-files/imp9057_2.d
+ 84bebd871a01f556191f22e1fa9eace9  gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d
  fbb312d5cafb03938994c428c2ed63d8  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37/datetime/common.d
  5bd3017f1c6fbad18d3e45497e31951c  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37/datetime/package.d
  40b72cf24dc3d22d4d5ef70f6c1f8ec8  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37/test17629/common.di
*************** e1b2201bb7bef13edd5b1dd62a016069  gcc/te
*** 65544,65551 ****
--- 65892,65901 ----
  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
+ 06030303622e394ed8c4697f73259c9e  gcc/testsuite/gdc.test/compilable/interpret5.d
  c6aab91c4e15d19895112c1cb7a06bdf  gcc/testsuite/gdc.test/compilable/json.d
  7407813737455f3fdad5c5a54a3a726d  gcc/testsuite/gdc.test/compilable/line.d
+ 0b7708bb7ff6eae9428be2b56c06e0fd  gcc/testsuite/gdc.test/compilable/minimal3.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
*************** bb9e006cebe601f91fae1b967d929f57  gcc/te
*** 65562,65568 ****
  acaf18bcac4ac998c5f58d4184525590  gcc/testsuite/gdc.test/compilable/riia_ctor.d
  36a6e36ee88f5104ea461e25c99691b8  gcc/testsuite/gdc.test/compilable/scope.d
  fd1eeff8f6c846eeb29e20921f5da298  gcc/testsuite/gdc.test/compilable/shared_destructor.d
! 38a1165ee7817f15153ca8634a2f0863  gcc/testsuite/gdc.test/compilable/staticforeach.d
  96eaa13ac0afae6fd923558368cfb953  gcc/testsuite/gdc.test/compilable/sw_transition_complex.d
  7d0b68e315fb44e6b9b125818d03e7fc  gcc/testsuite/gdc.test/compilable/sw_transition_field.d
  420fee37216b517612bf9e0d3862dea6  gcc/testsuite/gdc.test/compilable/sw_transition_tls.d
--- 65912,65918 ----
  acaf18bcac4ac998c5f58d4184525590  gcc/testsuite/gdc.test/compilable/riia_ctor.d
  36a6e36ee88f5104ea461e25c99691b8  gcc/testsuite/gdc.test/compilable/scope.d
  fd1eeff8f6c846eeb29e20921f5da298  gcc/testsuite/gdc.test/compilable/shared_destructor.d
! 8a056a04be09d165b07030591bd120ef  gcc/testsuite/gdc.test/compilable/staticforeach.d
  96eaa13ac0afae6fd923558368cfb953  gcc/testsuite/gdc.test/compilable/sw_transition_complex.d
  7d0b68e315fb44e6b9b125818d03e7fc  gcc/testsuite/gdc.test/compilable/sw_transition_field.d
  420fee37216b517612bf9e0d3862dea6  gcc/testsuite/gdc.test/compilable/sw_transition_tls.d
*************** bd3b792f2e9fae4293f32a0195335936  gcc/te
*** 65705,65710 ****
--- 66055,66063 ----
  486de3c5e0f7578f63bb5307aa28bab2  gcc/testsuite/gdc.test/compilable/test21299b.d
  f7ebbab88f0a4f86e71b06e130f593ee  gcc/testsuite/gdc.test/compilable/test21299c.d
  effd503ab143f07a377f69a6abd2e2ab  gcc/testsuite/gdc.test/compilable/test21299d.d
+ 0f65bb2b07e0bc8dcb7e5d89eaf5b3f7  gcc/testsuite/gdc.test/compilable/test21742.d
+ f8ec0845cd2590e50d27071453701fb7  gcc/testsuite/gdc.test/compilable/test22006.d
+ 01b0e8acc140f229c41fe59a55df5574  gcc/testsuite/gdc.test/compilable/test22133.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
*************** e39d851e2d6df0fb0a228237d9973bdc  gcc/te
*** 65833,65838 ****
--- 66186,66192 ----
  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
+ e309e5ed61e9e05b734a04331138794f  gcc/testsuite/gdc.test/fail_compilation/b12504.d
  cadd7253a279f5f74bd2c2088d510cde  gcc/testsuite/gdc.test/fail_compilation/b15875.d
  7ea1134efd7ddebf95db3eff5f8333d7  gcc/testsuite/gdc.test/fail_compilation/b17285.d
  51a73ecc50fe699c938601ae63a650f0  gcc/testsuite/gdc.test/fail_compilation/b19691.d
*************** f28f753c50d24ae45fd4aacf60d88ef4  gcc/te
*** 65947,65953 ****
  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
--- 66301,66307 ----
  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
! ca21748c3c8002f58049b5f03aa8eb8b  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
*************** e434633765cd0c939e270836040c991a  gcc/te
*** 66085,66091 ****
  15faea3078336662daa9d318f2493869  gcc/testsuite/gdc.test/fail_compilation/fail11591b.d
  418bcca9bf1e37cc8dbe037cdd4b3463  gcc/testsuite/gdc.test/fail_compilation/fail116.d
  acba3cd566c498acc0a4cc9dea839064  gcc/testsuite/gdc.test/fail_compilation/fail11653.d
! 36d6f5e634bc3889b0e414296904643c  gcc/testsuite/gdc.test/fail_compilation/fail117.d
  77e91dafc0efcec54d5a5c03d461963a  gcc/testsuite/gdc.test/fail_compilation/fail11717.d
  f4a6ef5aafe2a4002635a6e4959d92fc  gcc/testsuite/gdc.test/fail_compilation/fail11720.d
  a691b7855ffa66fe0d4d016977d36507  gcc/testsuite/gdc.test/fail_compilation/fail11746.d
--- 66439,66445 ----
  15faea3078336662daa9d318f2493869  gcc/testsuite/gdc.test/fail_compilation/fail11591b.d
  418bcca9bf1e37cc8dbe037cdd4b3463  gcc/testsuite/gdc.test/fail_compilation/fail116.d
  acba3cd566c498acc0a4cc9dea839064  gcc/testsuite/gdc.test/fail_compilation/fail11653.d
! 579d106852d5aefc9ca94fb20e364bef  gcc/testsuite/gdc.test/fail_compilation/fail117.d
  77e91dafc0efcec54d5a5c03d461963a  gcc/testsuite/gdc.test/fail_compilation/fail11717.d
  f4a6ef5aafe2a4002635a6e4959d92fc  gcc/testsuite/gdc.test/fail_compilation/fail11720.d
  a691b7855ffa66fe0d4d016977d36507  gcc/testsuite/gdc.test/fail_compilation/fail11746.d
*************** fb44509087d96cafd81f6b3914fa210d  gcc/te
*** 66264,66270 ****
--- 66618,66627 ----
  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
+ 24f4c3c3fa945ca54c802bc7b4fc9976  gcc/testsuite/gdc.test/fail_compilation/fail22006.d
  cbf4cc7e1f96260b11e9acc29bd9dc12  gcc/testsuite/gdc.test/fail_compilation/fail221.d
+ 0bb50b641805b9fc2f72587a6693c9dc  gcc/testsuite/gdc.test/fail_compilation/fail22133.d
+ 905e47894d7c0d03a0db65423e4e8848  gcc/testsuite/gdc.test/fail_compilation/fail22144.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
*************** ca8c7594c80997a194fd7b1c7a8f83e4  gcc/te
*** 66279,66286 ****
  be2aed2168f2bd58171a55c63547ad22  gcc/testsuite/gdc.test/fail_compilation/fail236.d
  d08fd87f7e32a14ee102500b0f9531f1  gcc/testsuite/gdc.test/fail_compilation/fail2361.d
  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
--- 66636,66643 ----
  be2aed2168f2bd58171a55c63547ad22  gcc/testsuite/gdc.test/fail_compilation/fail236.d
  d08fd87f7e32a14ee102500b0f9531f1  gcc/testsuite/gdc.test/fail_compilation/fail2361.d
  70717553d9d07c6f6efed75e909e1cbc  gcc/testsuite/gdc.test/fail_compilation/fail237.d
! 60acf6a84c5f6335c16c712c2781edf7  gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d
! 79189a0d0858112c09a8435c5306fa31  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
*************** cffce24c02803efae2a3ccc969cdf4f6  gcc/te
*** 66498,66511 ****
  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
--- 66855,66868 ----
  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
! a0982e24c691ef64752d4fc792f9a78b  gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
! 5ba17d6b3c57ac3cded922340de60d98  gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
! 659bad81c1b14cef227af0d1921a175b  gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
! e0456fd32812ef7ee4a89c422fbb390a  gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
! 87188b49fab83f6fd522d3ee3a123340  gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
! 78659d17d48e11fb69ff7a9913460d16  gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
! 71cf4df7a6b13271d3d6f342458eb722  gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
! a3f58cf6956b9c3abc935a11b09ebf15  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
*************** e60fc009c6fa0e6353822f7650fc524e  gcc/te
*** 66564,66570 ****
  54db7d18f58aba432d47f6a801da2392  gcc/testsuite/gdc.test/fail_compilation/fail97.d
  77704d558eb48472bb54bce5a62c0796  gcc/testsuite/gdc.test/fail_compilation/fail9710.d
  791ce9351af21b77b654e675cb845628  gcc/testsuite/gdc.test/fail_compilation/fail9735.d
! 15c87114541c124a5a979c6ad13ec326  gcc/testsuite/gdc.test/fail_compilation/fail9766.d
  1eeed95072caeba8be3889c2b93439f1  gcc/testsuite/gdc.test/fail_compilation/fail9773.d
  abc82347eaa25458a588e16c9a1500af  gcc/testsuite/gdc.test/fail_compilation/fail9790.d
  ba9fce21801162f260b3ae82c57b2b2d  gcc/testsuite/gdc.test/fail_compilation/fail98.d
--- 66921,66927 ----
  54db7d18f58aba432d47f6a801da2392  gcc/testsuite/gdc.test/fail_compilation/fail97.d
  77704d558eb48472bb54bce5a62c0796  gcc/testsuite/gdc.test/fail_compilation/fail9710.d
  791ce9351af21b77b654e675cb845628  gcc/testsuite/gdc.test/fail_compilation/fail9735.d
! 76d276afce2d8fac06f34565a1958c89  gcc/testsuite/gdc.test/fail_compilation/fail9766.d
  1eeed95072caeba8be3889c2b93439f1  gcc/testsuite/gdc.test/fail_compilation/fail9773.d
  abc82347eaa25458a588e16c9a1500af  gcc/testsuite/gdc.test/fail_compilation/fail9790.d
  ba9fce21801162f260b3ae82c57b2b2d  gcc/testsuite/gdc.test/fail_compilation/fail98.d
*************** fe4c1de33e271d84bfbb7ed29d95614c  gcc/te
*** 66759,66765 ****
  5a251eea5223535f2e71d45dc066aaa9  gcc/testsuite/gdc.test/fail_compilation/ice9284.d
  5c1b7a696de91f0fac6d8de5c8e96d1d  gcc/testsuite/gdc.test/fail_compilation/ice9291.d
  eb958bf96f73f43ebebbbf3f30975aec  gcc/testsuite/gdc.test/fail_compilation/ice9338.d
! 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
--- 67116,67122 ----
  5a251eea5223535f2e71d45dc066aaa9  gcc/testsuite/gdc.test/fail_compilation/ice9284.d
  5c1b7a696de91f0fac6d8de5c8e96d1d  gcc/testsuite/gdc.test/fail_compilation/ice9291.d
  eb958bf96f73f43ebebbbf3f30975aec  gcc/testsuite/gdc.test/fail_compilation/ice9338.d
! af5221c169864139df80561cf6490347  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
*************** acb6680b2a94bc2215e473ce3156efd2  gcc/te
*** 66973,66978 ****
--- 67330,67337 ----
  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
+ 38df04b25892319b1dd1980583e5b621  gcc/testsuite/gdc.test/fail_compilation/test21927.d
+ bcc6ccdea767e7f980449fdbbf3dd174  gcc/testsuite/gdc.test/fail_compilation/test21939.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
*************** e610c44a50486d89cefb12161b0f892e  gcc/te
*** 67525,67530 ****
--- 67884,67890 ----
  329e9e80c60ab998e37a9ac1bd8c51d6  gcc/testsuite/gfortran.dg/PR37039.f90
  e81a681901aa58d870e549b414327a20  gcc/testsuite/gfortran.dg/PR40660.f90
  264e3819dac395c8ef1f19270db55463  gcc/testsuite/gfortran.dg/PR49268.f90
+ cf9357967669d1b743e4aad7ef5ee3c1  gcc/testsuite/gfortran.dg/PR82376.f90
  583d04568695255545c22fd212ce5940  gcc/testsuite/gfortran.dg/PR90350.f90
  5dc95d72848e7d5b3c56ed9e2b800fb3  gcc/testsuite/gfortran.dg/Wall.f90
  d4b81cf21855418328fc275b64177b54  gcc/testsuite/gfortran.dg/Wno-all.f90
*************** fbf6eb41453bed2d7b01d6d3ecd3b075  gcc/te
*** 67642,67647 ****
--- 68002,68008 ----
  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
*************** dbfad5e8b5cf874428e1b4374f3f75e1  gcc/te
*** 67802,67807 ****
--- 68163,68169 ----
  3735cba3a47ed06a22c4e38fe041b8d7  gcc/testsuite/gfortran.dg/argument_checking_22.f90
  cb8920b39d43f8d36d7c87cd6ce3188a  gcc/testsuite/gfortran.dg/argument_checking_23.f90
  4696d0b0990f3672f510ad45684ab381  gcc/testsuite/gfortran.dg/argument_checking_24.f90
+ e96279b8586c27726b6d13e5aef5f5ce  gcc/testsuite/gfortran.dg/argument_checking_25.f90
  9420e2390509236501a51aceaffd8fec  gcc/testsuite/gfortran.dg/argument_checking_3.f90
  ca22fc708f8e1b6425943105c693f41e  gcc/testsuite/gfortran.dg/argument_checking_4.f90
  6ef91b131477d21bf8c75369daea1d04  gcc/testsuite/gfortran.dg/argument_checking_5.f90
*************** c8e89c3bb1a8878396e32769b9a78d05  gcc/te
*** 67874,67879 ****
--- 68236,68242 ----
  1ce7c326ac35602dfab388e47338c640  gcc/testsuite/gfortran.dg/array_constructor_51.f90
  74902cf57199c682dc3775323dd67fe3  gcc/testsuite/gfortran.dg/array_constructor_52.f90
  2cd50431749fd2782a60804098abc805  gcc/testsuite/gfortran.dg/array_constructor_53.f90
+ 0f86c84a8fd0787aab2aa7e4dd6ac377  gcc/testsuite/gfortran.dg/array_constructor_54.f90
  3c35c0aa8a8229010e90452ed87d7792  gcc/testsuite/gfortran.dg/array_constructor_6.f90
  d3bb011093e16f988efba6816262fb16  gcc/testsuite/gfortran.dg/array_constructor_7.f90
  ae5f56f53be9d3bbc6c562e48080a252  gcc/testsuite/gfortran.dg/array_constructor_8.f90
*************** ca5ed9b7a4b086d732df1a505d87813b  gcc/te
*** 67951,67956 ****
--- 68314,68321 ----
  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
+ 3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan_associate_58.f90
+ e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan_associate_59.f90
  28bbca8fc062ad301c676d4eb94d000d  gcc/testsuite/gfortran.dg/assign-debug.f90
  7ad5faf60f3a1cebebfbb2c9e52516d7  gcc/testsuite/gfortran.dg/assign.f90
  4fd44d78ecb3264e1dd3d6bbb0ca8ea6  gcc/testsuite/gfortran.dg/assign_1.f90
*************** c73b6100086b4db74c5f70aa2b7a9af6  gcc/te
*** 68017,68022 ****
--- 68382,68391 ----
  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
+ 65dc8227452a184626d85e599ab1382d  gcc/testsuite/gfortran.dg/associate_58.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 ****
--- 68404,68410 ----
  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
*************** ff9c91471b4ce5ab6577afccb4c338c3  gcc/te
*** 68325,68330 ****
--- 68695,68701 ----
  f163a929162b84c921c534094a61ee6d  gcc/testsuite/gfortran.dg/bound_simplification_4.f90
  8da00332161b12f533a48f6f4b133c93  gcc/testsuite/gfortran.dg/bound_simplification_5.f90
  89ef43a5db63dead844540416ec15fe0  gcc/testsuite/gfortran.dg/bound_simplification_6.f90
+ e0f32fc19dadb57e546c6f6e72bab8aa  gcc/testsuite/gfortran.dg/bound_simplification_7.f90
  0c37f25c0a329b1f8023a969afa947bc  gcc/testsuite/gfortran.dg/bounds_check_1.f90
  224affc6eb571605f5b1d1c7af58536c  gcc/testsuite/gfortran.dg/bounds_check_10.f90
  cded3f5f45f16c3f0117b2deb934a3be  gcc/testsuite/gfortran.dg/bounds_check_11.f90
*************** f77d86492e84d13e004ea59f1da3d69d  gcc/te
*** 68339,68344 ****
--- 68710,68716 ----
  b890668874e1bc07a00cd706581c6fd1  gcc/testsuite/gfortran.dg/bounds_check_2.f
  66c33189a3444b13a4ae1439933ebc8b  gcc/testsuite/gfortran.dg/bounds_check_20.f90
  7577ff710a256393f1fb5c102e69baa4  gcc/testsuite/gfortran.dg/bounds_check_21.f90
+ c255cbccd21b3a2d3ab21d32d680086e  gcc/testsuite/gfortran.dg/bounds_check_23.f90
  1ff91e96da26ef6e7839e53e2b71499d  gcc/testsuite/gfortran.dg/bounds_check_3.f90
  a9119407c225c716d99c309178d77952  gcc/testsuite/gfortran.dg/bounds_check_4.f90
  167a95fa41d2abf20f66591e1389d059  gcc/testsuite/gfortran.dg/bounds_check_5.f90
*************** bffd58c6eb392174540e5effb5007d27  gcc/te
*** 68769,68774 ****
--- 69141,69148 ----
  dbc20d52e3c86639db916ad3c6392de8  gcc/testsuite/gfortran.dg/class_dummy_3.f03
  3c084c9f366d687c0a674b8d42c2ea01  gcc/testsuite/gfortran.dg/class_dummy_4.f03
  198585d6f5262127fa1756b228e70921  gcc/testsuite/gfortran.dg/class_dummy_5.f90
+ 89120e26e4ec5fd1d963a1d03f515cb6  gcc/testsuite/gfortran.dg/class_dummy_6.f90
+ b0d798ee6d75aec23f3be5fd748a1cc6  gcc/testsuite/gfortran.dg/class_dummy_7.f90
  2f2b6b89c03eb0121abcd60df79d27ee  gcc/testsuite/gfortran.dg/class_is_1.f90
  84f9ccdf2ee8c8cfe397a0c82a7730af  gcc/testsuite/gfortran.dg/class_nameclash.f90
  9602d01ce3a47f3e2255aba5f234d1ae  gcc/testsuite/gfortran.dg/class_optional_1.f90
*************** f4aec2f0ed199113d979b69a74d8afa5  gcc/te
*** 68810,68815 ****
--- 69184,69190 ----
  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
*************** b67430669a5503a2b6f70e534e303644  gcc/te
*** 68894,68899 ****
--- 69269,69275 ----
  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
*************** ea87431a0369f9e7268297efe801335a  gcc/te
*** 69248,69253 ****
--- 69624,69630 ----
  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
+ c72afcd1bf036ac396f29c7e70a4f3bd  gcc/testsuite/gfortran.dg/dec_math_5.f90
  9f5739a83e88bd4a8b6a45ff713e1e4f  gcc/testsuite/gfortran.dg/dec_parameter_1.f
  5d6d04868c5d0b68526b644166397060  gcc/testsuite/gfortran.dg/dec_parameter_2.f90
  fda7b33d4e9546e000649a147e272b6b  gcc/testsuite/gfortran.dg/dec_parameter_3.f90
*************** ad86654ff26be55d6f8c03aa15c45da9  gcc/te
*** 69290,69295 ****
--- 69667,69673 ----
  f955c03c941b0c9e430dd0aa042c978f  gcc/testsuite/gfortran.dg/dec_union_1.f90
  54fa8897424354fe36b1147275b1b014  gcc/testsuite/gfortran.dg/dec_union_10.f90
  5211d9ae6a702f4330743f9f87e83568  gcc/testsuite/gfortran.dg/dec_union_11.f90
+ 436b819785ec03fd97943e5f6729ee25  gcc/testsuite/gfortran.dg/dec_union_12.f90
  6c8431ff3b4a3278ce13b373701985a8  gcc/testsuite/gfortran.dg/dec_union_2.f90
  85cd1980dadce1ec2db721b54e8725bf  gcc/testsuite/gfortran.dg/dec_union_3.f90
  a4db5df7b9375240006aa16fab80e2c0  gcc/testsuite/gfortran.dg/dec_union_4.f90
*************** f405c538ee221b34e2094a843f78c12a  gcc/te
*** 69341,69346 ****
--- 69719,69725 ----
  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
*************** e5f02b68e5aa2fee50c3ff70ad3d8f97  gcc/te
*** 69460,69466 ****
  026bd8fa710214d25691eae8c1dbcdfd  gcc/testsuite/gfortran.dg/derived_comp_array_ref_6.f90
  0bee796fdb071ab50d5faf5c678fefa5  gcc/testsuite/gfortran.dg/derived_comp_array_ref_7.f90
  3ac6e6c4ed41e85971024e19ad69e6a1  gcc/testsuite/gfortran.dg/derived_comp_array_ref_8.f90
! 3cb6f5885bbdd2d68c73753351eee1b3  gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
  36d65cd99e01688bd380279fd0c74558  gcc/testsuite/gfortran.dg/derived_constructor_char_2.f90
  3c2f8f5e24883308b8a24313e9e5df89  gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90
  f024936b2bb3be33b204bc283db65a94  gcc/testsuite/gfortran.dg/derived_constructor_comps_1.f90
--- 69839,69845 ----
  026bd8fa710214d25691eae8c1dbcdfd  gcc/testsuite/gfortran.dg/derived_comp_array_ref_6.f90
  0bee796fdb071ab50d5faf5c678fefa5  gcc/testsuite/gfortran.dg/derived_comp_array_ref_7.f90
  3ac6e6c4ed41e85971024e19ad69e6a1  gcc/testsuite/gfortran.dg/derived_comp_array_ref_8.f90
! 568b11dc7307172904079506d19d6593  gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
  36d65cd99e01688bd380279fd0c74558  gcc/testsuite/gfortran.dg/derived_constructor_char_2.f90
  3c2f8f5e24883308b8a24313e9e5df89  gcc/testsuite/gfortran.dg/derived_constructor_char_3.f90
  f024936b2bb3be33b204bc283db65a94  gcc/testsuite/gfortran.dg/derived_constructor_comps_1.f90
*************** cb44893d94f03877d3d146a8c1da8bd8  gcc/te
*** 69469,69474 ****
--- 69848,69854 ----
  1985d33efa2fb91552f8a4d90653edd7  gcc/testsuite/gfortran.dg/derived_constructor_comps_4.f90
  b90644647498c9ab9c17c0d5ea8d1b82  gcc/testsuite/gfortran.dg/derived_constructor_comps_5.f90
  b2ca02520bfaffc03c538a5319e61893  gcc/testsuite/gfortran.dg/derived_constructor_comps_6.f90
+ a4520e3938bf347c0b9e1003348fd3b6  gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90
  cff987fa6f89201aa37245231d20c023  gcc/testsuite/gfortran.dg/derived_external_function_1.f90
  e08a65ae23ffa55d956b33c09e1c4cb8  gcc/testsuite/gfortran.dg/derived_function_interface_1.f90
  fdf6add00f0bd7ce436abe942eb65cf3  gcc/testsuite/gfortran.dg/derived_init_1.f90
*************** cdbdebe9161bcc4a79df17d5f5732b28  gcc/te
*** 69522,69527 ****
--- 69902,69908 ----
  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
+ b439dee45498b38c2c1c8750cf86c793  gcc/testsuite/gfortran.dg/do_check_19.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
*************** da4a7c798f0408437da738727e347788  gcc/te
*** 69649,69654 ****
--- 70030,70036 ----
  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
*************** f9b7a86e792764d97f0b5939361c929d  gcc/te
*** 69751,69756 ****
--- 70133,70139 ----
  01f5663dbbe448ffcae13215519a2976  gcc/testsuite/gfortran.dg/eoshift_6.f90
  adae9a19ec811bbf55918625d353631f  gcc/testsuite/gfortran.dg/eoshift_7.f90
  66a20460746717880ff13c94688798f8  gcc/testsuite/gfortran.dg/eoshift_8.f90
+ f68f16bc720811c1bd9729ac85be7f58  gcc/testsuite/gfortran.dg/eoshift_9.f90
  d23c3cf960da52cea7987d80d427ca33  gcc/testsuite/gfortran.dg/eoshift_bounds_1.f90
  498461068b03a38305d4fb9508177f88  gcc/testsuite/gfortran.dg/eoshift_large_1.f90
  ab70a97d276544b94e7ac094c3d3e859  gcc/testsuite/gfortran.dg/equiv_1.f90
*************** c31057abbc67dd1afb06b5b8b376c2dc  gcc/te
*** 69962,69967 ****
--- 70345,70351 ----
  aa83a10582b82026c0f1fd503885f217  gcc/testsuite/gfortran.dg/fmt_missing_period_3.f
  eedec4631f954cd9b6e777e72d5b3a82  gcc/testsuite/gfortran.dg/fmt_nonchar_1.f90
  20f752890ee33c6d8b403a1a2483e5a4  gcc/testsuite/gfortran.dg/fmt_nonchar_2.f90
+ bd467bed8a3379220c5d40be824a24ce  gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90
  d3d37d254644cdaff95d2388a5b7c0c5  gcc/testsuite/gfortran.dg/fmt_p_1.f90
  982630e8e12fd9d9ef6044fd455a1556  gcc/testsuite/gfortran.dg/fmt_pf.f90
  f4c40499fd82d7b0c80894e2cd0778b0  gcc/testsuite/gfortran.dg/fmt_read.f90
*************** c6b23e36c3423a3454fb19b0ec6f0e01  gcc/te
*** 70520,70525 ****
--- 70904,70910 ----
  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
+ 643b8993be7253510e6b0f841407426c  gcc/testsuite/gfortran.dg/gomp/map-5.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
*************** d19c8b732b5cf70aa6edcc4165fe30b3  gcc/te
*** 70840,70845 ****
--- 71225,71232 ----
  26f7d10e3401a2366b42da4a4f97bd15  gcc/testsuite/gfortran.dg/ieee/rounding_1.f90
  e8ea43c66fd6d11794019ae65955f295  gcc/testsuite/gfortran.dg/ieee/underflow_1.f90
  124ba3e9f6c8b5f20acc161515766cff  gcc/testsuite/gfortran.dg/illegal_boz_arg_1.f90
+ 4a93b827c3cbecf80132e133c9ffea76  gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90
+ b8ee27c210d03cbdecd63b4186ae10dc  gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90
  ca72e2369ff19137157ceaaa2012b721  gcc/testsuite/gfortran.dg/illegal_char.f90
  d827b941652feab002a335b27a4dd9f2  gcc/testsuite/gfortran.dg/imag_1.f
  eaad0ac26fe911d75f0d0769ade8436c  gcc/testsuite/gfortran.dg/impl_do_var_data.f90
*************** b75cb93f87f099ad715aceb9cb7b1bf2  gcc/te
*** 70876,70881 ****
--- 71263,71269 ----
  9042c8fc68be853afcc846869e788bd5  gcc/testsuite/gfortran.dg/implied_do_io_4.f90
  156dc7e9c954310ba5c74c0fbcaa4f42  gcc/testsuite/gfortran.dg/implied_do_io_5.f90
  1f7a9307002a1f0f2a5f8eb76998dcda  gcc/testsuite/gfortran.dg/implied_do_io_6.f90
+ 2b548a8a46da28ac4ce23e2509a886fc  gcc/testsuite/gfortran.dg/implied_do_io_7.f90
  a8761a2aaffb7680e80dcad5eceada12  gcc/testsuite/gfortran.dg/implied_shape_1.f08
  f9528d7042bf84bf037d6e2b109272ec  gcc/testsuite/gfortran.dg/implied_shape_2.f90
  1b2b68c816459c1a9395771e9851de87  gcc/testsuite/gfortran.dg/implied_shape_3.f08
*************** dee6ff6cec856fe1f42312c1d4fd4807  gcc/te
*** 70990,70995 ****
--- 71378,71384 ----
  e5a418513e079e50ea576e021cf5ad8e  gcc/testsuite/gfortran.dg/inline_matmul_22.f90
  1545bc137f7bcb397e7986a3324b63be  gcc/testsuite/gfortran.dg/inline_matmul_23.f90
  89a35f94060b171becdc54771a02040b  gcc/testsuite/gfortran.dg/inline_matmul_24.f90
+ d5dddad98efc37928795b446cb8d6501  gcc/testsuite/gfortran.dg/inline_matmul_25.f90
  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
*************** ba93579108c80828d584884c6d1a3d2a  gcc/te
*** 71057,71062 ****
--- 71446,71452 ----
  7fb312ab28cce81b97498d8f3f4e4685  gcc/testsuite/gfortran.dg/intent_out_11.f90
  844229c9eb8a37075774f7aa5ffaec68  gcc/testsuite/gfortran.dg/intent_out_12.f90
  eaa197e83969427d3078aff95445bee7  gcc/testsuite/gfortran.dg/intent_out_13.f90
+ 43d0dd409d7c93807035f978a18ed5c5  gcc/testsuite/gfortran.dg/intent_out_14.f90
  633b564832f11b231ba2e100650127bb  gcc/testsuite/gfortran.dg/intent_out_2.f90
  88fc721c29050bdf0a2d0d7c4e316336  gcc/testsuite/gfortran.dg/intent_out_3.f90
  a4fb1377a7e3fd7d6f3a448f1c020623  gcc/testsuite/gfortran.dg/intent_out_4.f90
*************** f8c7e022d2cfc56df6b55d414dce657a  gcc/te
*** 71198,71203 ****
--- 71588,71594 ----
  02e405fa02b5f4208a935814170c08d1  gcc/testsuite/gfortran.dg/intrinsic_pack_3.f90
  46c6f0a832541ad6ca2cbb32c01ab20d  gcc/testsuite/gfortran.dg/intrinsic_pack_4.f90
  68e85a91fdebd8186e987268b78d2812  gcc/testsuite/gfortran.dg/intrinsic_pack_5.f90
+ 7a9982798705db4f1e587901e180224f  gcc/testsuite/gfortran.dg/intrinsic_pack_6.f90
  709c1a0557c6130d855211d157dc235b  gcc/testsuite/gfortran.dg/intrinsic_param_1.f90
  83483a96e8562d98a9a895352987cf66  gcc/testsuite/gfortran.dg/intrinsic_product_1.f90
  66b3fac50616e3319e3fd00fcd93d9be  gcc/testsuite/gfortran.dg/intrinsic_shadow_1.f03
*************** b0771aa8a26d9687e9c6aa4f179d533d  gcc/te
*** 71651,71657 ****
  8d2c9767bfa9b064e0efaf0685019480  gcc/testsuite/gfortran.dg/move_alloc_5.f90
  0912ae78a386198aad205729d12d008b  gcc/testsuite/gfortran.dg/move_alloc_6.f90
  0c726588b85b64cfb855301e343930a8  gcc/testsuite/gfortran.dg/move_alloc_7.f90
! 71254f3390003edda7e2c46eb3990787  gcc/testsuite/gfortran.dg/move_alloc_8.f90
  4f9cc1fa8df27c10af708433794537e6  gcc/testsuite/gfortran.dg/move_alloc_9.f90
  340ebc9d35f808d2fff378f796de48ab  gcc/testsuite/gfortran.dg/multiple_allocation_1.f90
  6b63ce8de65e063edbff7748ee8ead42  gcc/testsuite/gfortran.dg/multiple_allocation_2.f90
--- 72042,72048 ----
  8d2c9767bfa9b064e0efaf0685019480  gcc/testsuite/gfortran.dg/move_alloc_5.f90
  0912ae78a386198aad205729d12d008b  gcc/testsuite/gfortran.dg/move_alloc_6.f90
  0c726588b85b64cfb855301e343930a8  gcc/testsuite/gfortran.dg/move_alloc_7.f90
! fb0f12b8bc0ac949db7d4b0ddefe80be  gcc/testsuite/gfortran.dg/move_alloc_8.f90
  4f9cc1fa8df27c10af708433794537e6  gcc/testsuite/gfortran.dg/move_alloc_9.f90
  340ebc9d35f808d2fff378f796de48ab  gcc/testsuite/gfortran.dg/multiple_allocation_1.f90
  6b63ce8de65e063edbff7748ee8ead42  gcc/testsuite/gfortran.dg/multiple_allocation_2.f90
*************** d14391d3ef215e7090f2482b1fb51242  gcc/te
*** 71910,71915 ****
--- 72301,72307 ----
  967b958bce8187f291f4a772e4548afe  gcc/testsuite/gfortran.dg/overload_1.f90
  97e6af3887a4b07dce47c09a1d987e61  gcc/testsuite/gfortran.dg/overload_2.f90
  bea7aebc5e916cdafeb1ba5550fca119  gcc/testsuite/gfortran.dg/overload_3.f90
+ 239885761f5919c3b068bc250b0548c2  gcc/testsuite/gfortran.dg/overload_4.f90
  ce01df6835a25865cf1b057eedd850d3  gcc/testsuite/gfortran.dg/overwrite_1.f
  0513597d3f649ecf246ba3da77d0e486  gcc/testsuite/gfortran.dg/pack_assign_1.f90
  804957c95450f8f92e8046cdde8da1fe  gcc/testsuite/gfortran.dg/pack_bounds_1.f90
*************** efbb6ce3288a6ccfd0b8e00a0b638ffd  gcc/te
*** 71934,71939 ****
--- 72326,72332 ----
  8b0b6b89a6f9358c1b8def3660850c03  gcc/testsuite/gfortran.dg/parameter_array_init_5.f90
  d46e6ca33ad0c6569ce38b09a28782f5  gcc/testsuite/gfortran.dg/parameter_array_init_6.f90
  61cf2ad0a3d886ac7684b6999c179389  gcc/testsuite/gfortran.dg/parameter_array_init_7.f90
+ 2705006561c3a2451da51763e83871c3  gcc/testsuite/gfortran.dg/parameter_array_init_8.f90
  32c99065e26b34dfb314fdea08f82fe4  gcc/testsuite/gfortran.dg/parameter_array_ref_1.f90
  302ab3504a83b13e3ec7d1096f84ae36  gcc/testsuite/gfortran.dg/parameter_array_ref_2.f90
  23dcadce604501908a5e668b385325f3  gcc/testsuite/gfortran.dg/parameter_array_section_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
--- 72368,72380 ----
  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
*************** ae06d6761f5e36e2c2e46067aa089b8e  gcc/te
*** 72054,72059 ****
--- 72448,72454 ----
  e459085c84d8d965d44b2c8d69d7d0f3  gcc/testsuite/gfortran.dg/pointer_intent_6.f90
  32cd4c061b4a40c2cc07c876ae54d223  gcc/testsuite/gfortran.dg/pointer_intent_7.f90
  d0b24aa5ebe04c5c89cd3403f4acfda9  gcc/testsuite/gfortran.dg/pointer_intent_8.f90
+ 04a2e00b668250959b8328b3402a4407  gcc/testsuite/gfortran.dg/pointer_intent_9.f90
  4cb0e95eb0d20ee0fcc1725ab11d6144  gcc/testsuite/gfortran.dg/pointer_remapping_1.f90
  cb90f303a1add40fdcfa44f9441d6094  gcc/testsuite/gfortran.dg/pointer_remapping_10.f90
  6b175e97afb4595e4ac40a6f738d0650  gcc/testsuite/gfortran.dg/pointer_remapping_2.f03
*************** c893cc6bcb01079435bb1e32e1ab471e  gcc/te
*** 72080,72085 ****
--- 72475,72506 ----
  a3ab8fbef738997039cfd45f350461a3  gcc/testsuite/gfortran.dg/power_6.f90
  77eca811eac1f80edb0f33c68ac0c4d3  gcc/testsuite/gfortran.dg/power_7.f90
  457d6bb30d331f4d3250628bdae53dc3  gcc/testsuite/gfortran.dg/power_8.f90
+ e13b5dd50c332ea865cb6fabb5f79f29  gcc/testsuite/gfortran.dg/pr100154.f90
+ fc0ae38e4fdc2d7761aba57181c97b51  gcc/testsuite/gfortran.dg/pr100551.f90
+ 17f130e627232745d6279696b6984514  gcc/testsuite/gfortran.dg/pr100949.f90
+ 00eaff2aeb07d3b9bbb1b67083921aaf  gcc/testsuite/gfortran.dg/pr101158.f90
+ 515f43ee1c3a7f37818b2b4bd6abedd7  gcc/testsuite/gfortran.dg/pr101327.f90
+ 215e51d0e3da3316aa6f9d992ac2c7d7  gcc/testsuite/gfortran.dg/pr101329.f90
+ afe21b866be9162c6b654dc6771e6ead  gcc/testsuite/gfortran.dg/pr101514.f90
+ 07e5cf776d8ec123397377da02e784fb  gcc/testsuite/gfortran.dg/pr101536.f90
+ 43d1631cdea391ffd9bdb8fc395a7ae5  gcc/testsuite/gfortran.dg/pr101762.f90
+ 75ccec9005d1d4a2d9ed0cea1bf10434  gcc/testsuite/gfortran.dg/pr102332.f90
+ 1dd53d463caf1e16e47d0fe9cbf2309f  gcc/testsuite/gfortran.dg/pr102366.f90
+ fc5031b16be6a0dc4152f151793f4acb  gcc/testsuite/gfortran.dg/pr102458.f90
+ cbd40bc334c217d37c198b1f27373810  gcc/testsuite/gfortran.dg/pr102458b.f90
+ 09759ba73ae30c3a54be532d97b7f526  gcc/testsuite/gfortran.dg/pr102520.f90
+ c081e1f510a2d68ec176356111dab188  gcc/testsuite/gfortran.dg/pr102685.f90
+ d99cea26823109c0bb853b42df152999  gcc/testsuite/gfortran.dg/pr102715.f90
+ f28998ba16e7a78633a9de3d5eaf0667  gcc/testsuite/gfortran.dg/pr102816.f90
+ cc6ac3aa934c104c85fad8e43ae6985d  gcc/testsuite/gfortran.dg/pr102817.f90
+ 87fa8e20851e07d06d4d5991b6fc240d  gcc/testsuite/gfortran.dg/pr102860.f90
+ a082b0c5fdbc266f00ae264494538e49  gcc/testsuite/gfortran.dg/pr103505.f90
+ dc7a57f897711dfb7a3fba377198c10c  gcc/testsuite/gfortran.dg/pr103588.f90
+ a27b232d198fc2463c04af17903b1b4c  gcc/testsuite/gfortran.dg/pr103606.f90
+ ea7b00fcccc1df091b8087b16e502d92  gcc/testsuite/gfortran.dg/pr103607.f90
+ 448c7638e7741c015d95260e6491d8fa  gcc/testsuite/gfortran.dg/pr103692.f90
+ 7a5b7a18d621b5e1b9d04b73e259ddd4  gcc/testsuite/gfortran.dg/pr104849.f90
+ 22283af469347d85bd1fe4dae42939a3  gcc/testsuite/gfortran.dg/pr105230.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** d598feb4dba76cbaf492a9ee6686e19a  gcc/te
*** 72330,72335 ****
--- 72751,72757 ----
  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
*************** c37cf579044bfef981cfa2ddcb25a453  gcc/te
*** 72369,72374 ****
--- 72791,72797 ----
  0bfa6e741c486d27fbd1d68e80ab467d  gcc/testsuite/gfortran.dg/pr67616.f90
  f7b255646efb403e4fd6d6c4c721b6c6  gcc/testsuite/gfortran.dg/pr67802.f90
  9cfe60384f2e4f1cbec4ea41ea7e4e44  gcc/testsuite/gfortran.dg/pr67803.f90
+ 63f85252504511c380cbe33f58073c38  gcc/testsuite/gfortran.dg/pr67804.f90
  41e85145304080db4dd22c98def9ee20  gcc/testsuite/gfortran.dg/pr67805.f90
  d67c65ab4e579ec1a9ed16fa540e87f1  gcc/testsuite/gfortran.dg/pr67805_2.f90
  a11d2cdadd8d3e42bccb3afdcfe01f97  gcc/testsuite/gfortran.dg/pr67884.f90
*************** a11d2cdadd8d3e42bccb3afdcfe01f97  gcc/te
*** 72376,72389 ****
  60853550b35c1efdadb2d417aa6eec8b  gcc/testsuite/gfortran.dg/pr67900.f90
  658762833e1eac5a3f3f05e0147153f1  gcc/testsuite/gfortran.dg/pr67939.f90
  954cb84b6364f949ad2e6702e8a469d0  gcc/testsuite/gfortran.dg/pr67987.f90
! 9c7060d377f62548d71c01d004b6256d  gcc/testsuite/gfortran.dg/pr68019.f90
  ba9c0a45b4114d6c3d80129312c3731c  gcc/testsuite/gfortran.dg/pr68053.f90
  6d8a1b66ddd71f72cd6f8b2f956d1e1a  gcc/testsuite/gfortran.dg/pr68054.f90
  0aa9836d6fb22c69b7e76e9f495f4762  gcc/testsuite/gfortran.dg/pr68055.f90
  f15d85cfec6e3cdd76e6667f5c30ef44  gcc/testsuite/gfortran.dg/pr68078.f90
  8b70141743602a92904051fd2d8d35fe  gcc/testsuite/gfortran.dg/pr68146.f
  72204a8f7a7d531531023b6f9efc86ff  gcc/testsuite/gfortran.dg/pr68151.f90
! ee9456d99483e48af158f154c01b835c  gcc/testsuite/gfortran.dg/pr68153.f90
  763b223410c19c6e68bea4f15ed3fef6  gcc/testsuite/gfortran.dg/pr68154.f90
  c0ada255b8d4b02a2bf3f62ec3fd9223  gcc/testsuite/gfortran.dg/pr68224.f90
  4239cbc5229572dbb1b8db5b9e534c59  gcc/testsuite/gfortran.dg/pr68227.f90
--- 72799,72812 ----
  60853550b35c1efdadb2d417aa6eec8b  gcc/testsuite/gfortran.dg/pr67900.f90
  658762833e1eac5a3f3f05e0147153f1  gcc/testsuite/gfortran.dg/pr67939.f90
  954cb84b6364f949ad2e6702e8a469d0  gcc/testsuite/gfortran.dg/pr67987.f90
! 047ea7e5f868eab9ff2e8c9f478332a4  gcc/testsuite/gfortran.dg/pr68019.f90
  ba9c0a45b4114d6c3d80129312c3731c  gcc/testsuite/gfortran.dg/pr68053.f90
  6d8a1b66ddd71f72cd6f8b2f956d1e1a  gcc/testsuite/gfortran.dg/pr68054.f90
  0aa9836d6fb22c69b7e76e9f495f4762  gcc/testsuite/gfortran.dg/pr68055.f90
  f15d85cfec6e3cdd76e6667f5c30ef44  gcc/testsuite/gfortran.dg/pr68078.f90
  8b70141743602a92904051fd2d8d35fe  gcc/testsuite/gfortran.dg/pr68146.f
  72204a8f7a7d531531023b6f9efc86ff  gcc/testsuite/gfortran.dg/pr68151.f90
! 919a27f3a4cfbc08b7e864601ba56e0f  gcc/testsuite/gfortran.dg/pr68153.f90
  763b223410c19c6e68bea4f15ed3fef6  gcc/testsuite/gfortran.dg/pr68154.f90
  c0ada255b8d4b02a2bf3f62ec3fd9223  gcc/testsuite/gfortran.dg/pr68224.f90
  4239cbc5229572dbb1b8db5b9e534c59  gcc/testsuite/gfortran.dg/pr68227.f90
*************** aa6073708fcde459f6b44a5e294fd6b0  gcc/te
*** 72426,72432 ****
  858edd0f297501435fdd3e07e065201c  gcc/testsuite/gfortran.dg/pr70754.f90
  ba437378350349e006ee9be8afd0020e  gcc/testsuite/gfortran.dg/pr70853.f90
  386c85829c4e2571e0db7949c25f5113  gcc/testsuite/gfortran.dg/pr70870_1.f90
! 0e424f05f2fdeb786b877ace2617112d  gcc/testsuite/gfortran.dg/pr70931.f90
  768e159c79aa0aa1e1ae6e13122ed1b2  gcc/testsuite/gfortran.dg/pr70937.f90
  a16162b0759105febc1efc1311184688  gcc/testsuite/gfortran.dg/pr71047.f08
  2adcf4116aa4365895bb3d287e182ddd  gcc/testsuite/gfortran.dg/pr71067_1.f90
--- 72849,72855 ----
  858edd0f297501435fdd3e07e065201c  gcc/testsuite/gfortran.dg/pr70754.f90
  ba437378350349e006ee9be8afd0020e  gcc/testsuite/gfortran.dg/pr70853.f90
  386c85829c4e2571e0db7949c25f5113  gcc/testsuite/gfortran.dg/pr70870_1.f90
! 8772cb0c6f3bc092b7d4ae134b437b94  gcc/testsuite/gfortran.dg/pr70931.f90
  768e159c79aa0aa1e1ae6e13122ed1b2  gcc/testsuite/gfortran.dg/pr70937.f90
  a16162b0759105febc1efc1311184688  gcc/testsuite/gfortran.dg/pr71047.f08
  2adcf4116aa4365895bb3d287e182ddd  gcc/testsuite/gfortran.dg/pr71067_1.f90
*************** d1aef01880835db4a541fe2fb5d9b4b4  gcc/te
*** 72514,72519 ****
--- 72937,72943 ----
  58ba9db10feed5572dd1e17134e5d88c  gcc/testsuite/gfortran.dg/pr81889.f90
  e338cfba2f466abedf9af92b52cd6fb3  gcc/testsuite/gfortran.dg/pr82004.f90
  b6ff04901e3aee18765a74bf65804e38  gcc/testsuite/gfortran.dg/pr82253.f90
+ 344be7c0602202457870166d368441e0  gcc/testsuite/gfortran.dg/pr82314.f90
  7f04eca318ca64e1442ceabc31fab9fb  gcc/testsuite/gfortran.dg/pr82397.f
  616772c135ee9b14c410dcd23fdbc3e4  gcc/testsuite/gfortran.dg/pr82973.f90
  0a918cecf6f52a31004b77728cb30038  gcc/testsuite/gfortran.dg/pr83113.f90
*************** fde8604ea120a8ce9b073bf211cdf432  gcc/te
*** 72711,72717 ****
  543493ac9c37f3e29f7d727af1ecad82  gcc/testsuite/gfortran.dg/pr93600_2.f90
  e0fe2bc5bc29092b239eac7f6bd6642a  gcc/testsuite/gfortran.dg/pr93601.f90
  7fba8006db48550444d5426908e7bd21  gcc/testsuite/gfortran.dg/pr93603.f90
! 660d1e3a2054b4394f234c780df1e3a7  gcc/testsuite/gfortran.dg/pr93604.f90
  3a950099baf4b594b439137360e76929  gcc/testsuite/gfortran.dg/pr93685_1.f90
  54e6c162457d096a85a702a7d61bb2c6  gcc/testsuite/gfortran.dg/pr93685_2.f90
  72a93ce5a3a0e7f069659dbadadfb4a9  gcc/testsuite/gfortran.dg/pr93686_1.f90
--- 73135,73141 ----
  543493ac9c37f3e29f7d727af1ecad82  gcc/testsuite/gfortran.dg/pr93600_2.f90
  e0fe2bc5bc29092b239eac7f6bd6642a  gcc/testsuite/gfortran.dg/pr93601.f90
  7fba8006db48550444d5426908e7bd21  gcc/testsuite/gfortran.dg/pr93603.f90
! 7eccbef6ebf6b0e510ef57d5a859de0f  gcc/testsuite/gfortran.dg/pr93604.f90
  3a950099baf4b594b439137360e76929  gcc/testsuite/gfortran.dg/pr93685_1.f90
  54e6c162457d096a85a702a7d61bb2c6  gcc/testsuite/gfortran.dg/pr93685_2.f90
  72a93ce5a3a0e7f069659dbadadfb4a9  gcc/testsuite/gfortran.dg/pr93686_1.f90
*************** b9d5894d240b89777d50d53e0cd60929  gcc/te
*** 72738,72743 ****
--- 73162,73168 ----
  f55274affe4c9ad9830b5b95890a0e58  gcc/testsuite/gfortran.dg/pr95373_2.f90
  27db2763cd4b76a729c1caca77615d2b  gcc/testsuite/gfortran.dg/pr95398.f90
  bf06d26cfd17de7f7a1ca3d27181a469  gcc/testsuite/gfortran.dg/pr95500.f90
+ 6ef53d080792d6388cbc30dcbd258ee4  gcc/testsuite/gfortran.dg/pr95502.f90
  957c4b1c6c2a82ac61e92b1200c1f5cc  gcc/testsuite/gfortran.dg/pr95503.f90
  5231d7be8a143a19ea814874ba722093  gcc/testsuite/gfortran.dg/pr95544.f90
  4d7840381b8acfddf9d6d981be248de8  gcc/testsuite/gfortran.dg/pr95585.f90
*************** f219dfba008fc41e9e809107b3498d57  gcc/te
*** 72775,72780 ****
--- 73200,73206 ----
  64eab9fbabf78a6279318703c2ac81a6  gcc/testsuite/gfortran.dg/pr97768_1.f90
  e9131ae038c1f4f18b0f72da1bf1423e  gcc/testsuite/gfortran.dg/pr97768_2.f90
  0103f634279cccfe329c626d7b20e2fa  gcc/testsuite/gfortran.dg/pr98017.f90
+ 8a48e2264b578c77fe953f48d587af4e  gcc/testsuite/gfortran.dg/pr98411.f90
  ab9d92c634833928d03c56d815ba4f69  gcc/testsuite/gfortran.dg/pr99060.f90
  2b316ebb5f0c34f4b1c5764c77c3e824  gcc/testsuite/gfortran.dg/pr99204.f90
  c6196744dcddad274ab914969ad9e6d3  gcc/testsuite/gfortran.dg/pr99545.f90
*************** a50ed014f3fd628f8e8e8e09f44f8c0f  gcc/te
*** 72886,72891 ****
--- 73312,73318 ----
  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
*************** d8a9f1260e74e0077151d976c7d10349  gcc/te
*** 73149,73154 ****
--- 73576,73582 ----
  2e7d5fec04c2c7f37db35971e145eb94  gcc/testsuite/gfortran.dg/recursive_parameter_1.f90
  83a0ac39bfc50ad3e26215503647388b  gcc/testsuite/gfortran.dg/recursive_reference_1.f90
  1d1c7d54db9ad825f6d03ee25b705983  gcc/testsuite/gfortran.dg/recursive_reference_2.f90
+ ef770cfdc6b95e1ae9b92510ab8715be  gcc/testsuite/gfortran.dg/recursive_reference_3.f90
  a7003da5c2f301959c7f21193538e7eb  gcc/testsuite/gfortran.dg/recursive_stack.f90
  367c718b77a74a1255ad2e38adeacfb7  gcc/testsuite/gfortran.dg/recursive_statement_functions.f90
  04deba654b2206894b96a6288761847b  gcc/testsuite/gfortran.dg/redefined_intrinsic_assignment.f90
*************** d3828a0469af571ee4a9715d5b69ba18  gcc/te
*** 73170,73176 ****
  28e648e5d9b58d4e60affb7acc6a4a36  gcc/testsuite/gfortran.dg/reshape_4.f90
  2872b99cf6c4e5736159d59646eacf73  gcc/testsuite/gfortran.dg/reshape_5.f90
  7f3d8930925f93d0224885fccf19768f  gcc/testsuite/gfortran.dg/reshape_6.f90
! fa9603988fa43c3b4979b2745c515cd4  gcc/testsuite/gfortran.dg/reshape_7.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
--- 73598,73605 ----
  28e648e5d9b58d4e60affb7acc6a4a36  gcc/testsuite/gfortran.dg/reshape_4.f90
  2872b99cf6c4e5736159d59646eacf73  gcc/testsuite/gfortran.dg/reshape_5.f90
  7f3d8930925f93d0224885fccf19768f  gcc/testsuite/gfortran.dg/reshape_6.f90
! 9dfec6bab6dc17d313fcc63e0bca557c  gcc/testsuite/gfortran.dg/reshape_7.f90
! 4ccd663438210e60fca030952535b706  gcc/testsuite/gfortran.dg/reshape_9.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
*************** a8b8a98f768e4e1e0e5753a852ef5533  gcc/te
*** 73180,73185 ****
--- 73609,73615 ----
  5fd9fe976b0de499cf640ffc69ee816b  gcc/testsuite/gfortran.dg/reshape_pad_1.f90
  a83298fcf93f4b95a8fd48b3972e3d75  gcc/testsuite/gfortran.dg/reshape_rank7.f90
  82e933fdaa16cdd8a68cea29568b24f8  gcc/testsuite/gfortran.dg/reshape_shape_1.f90
+ 7b14b9fbbd15e10935eeb8dfceb9487d  gcc/testsuite/gfortran.dg/reshape_shape_2.f90
  90dad8b6cf8141a17677751052b77127  gcc/testsuite/gfortran.dg/reshape_source_size_1.f90
  afbbe7a3662a692cb231ca26135afc31  gcc/testsuite/gfortran.dg/reshape_transpose_1.f90
  b60cb27a87581046d44ce97bb381b07e  gcc/testsuite/gfortran.dg/reshape_zerosize_1.f90
*************** b7f0fac05667f630e8f9b90aebe1fea4  gcc/te
*** 73248,73253 ****
--- 73678,73684 ----
  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
*************** c137ead9ed9a3cbd4ca5f75d50965b1c  gcc/te
*** 73312,73317 ****
--- 73743,73750 ----
  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
+ 2a136a103d2e76c84d90569febf9b783  gcc/testsuite/gfortran.dg/shape_10.f90
+ 052a4b2bd7fe6fdc1737283f758ffaec  gcc/testsuite/gfortran.dg/shape_11.f90
  83165f49617d33a60724f58032240b93  gcc/testsuite/gfortran.dg/shape_2.f90
  3c6dfb31a52f344f631d36f369e069bf  gcc/testsuite/gfortran.dg/shape_3.f90
  3a839d4a8d0dfd6f0b50c08763804e26  gcc/testsuite/gfortran.dg/shape_4.f90
*************** caa7da29771aad612f545bdeb544b4c9  gcc/te
*** 73468,73473 ****
--- 73901,73907 ----
  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
*** 73521,73527 ****
  dccf53db514265c48f2c92d1e6aa8319  gcc/testsuite/gfortran.dg/substr_3.f
  6d054e85164109252d8cb0e433ff57ad  gcc/testsuite/gfortran.dg/substr_4.f
  9cbfabac96be8748ebd2e7c0bed4bb91  gcc/testsuite/gfortran.dg/substr_5.f90
! 6fc9f98159d986738e731d5b07a7109b  gcc/testsuite/gfortran.dg/substr_6.f90
  5aacec7f3b63a41c71f1f83e8d5bcdb0  gcc/testsuite/gfortran.dg/substr_7.f90
  3149d14be2bfd57fd4b2dbd5c1c8ebaa  gcc/testsuite/gfortran.dg/substr_8.f90
  acc5d5ef0b41f88cee2142a7f82c4fe1  gcc/testsuite/gfortran.dg/substr_alloc_string_comp_1.f90
--- 73955,73961 ----
  dccf53db514265c48f2c92d1e6aa8319  gcc/testsuite/gfortran.dg/substr_3.f
  6d054e85164109252d8cb0e433ff57ad  gcc/testsuite/gfortran.dg/substr_4.f
  9cbfabac96be8748ebd2e7c0bed4bb91  gcc/testsuite/gfortran.dg/substr_5.f90
! 4d48cdf844980a4533d1ed67dbb2a0a4  gcc/testsuite/gfortran.dg/substr_6.f90
  5aacec7f3b63a41c71f1f83e8d5bcdb0  gcc/testsuite/gfortran.dg/substr_7.f90
  3149d14be2bfd57fd4b2dbd5c1c8ebaa  gcc/testsuite/gfortran.dg/substr_8.f90
  acc5d5ef0b41f88cee2142a7f82c4fe1  gcc/testsuite/gfortran.dg/substr_alloc_string_comp_1.f90
*************** c00e10e2dedc2a4d4050941a3ae36ab2  gcc/te
*** 73561,73571 ****
--- 73995,74007 ----
  d175a283aab741037bd1bdee76a76fa5  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_4.f90
  c5cef3aa9c3895b4e6b38e993481ff14  gcc/testsuite/gfortran.dg/transfer_array_intrinsic_5.f90
  fdabd8c65dcb8fb1bfe06c29c937c219  gcc/testsuite/gfortran.dg/transfer_assumed_size_1.f90
+ 1c08633181f8b50ad8fd08ed1f4f207f  gcc/testsuite/gfortran.dg/transfer_char_kind4.f90
  0d5a3d18a1eeb0de1ca65d86e1cd68f8  gcc/testsuite/gfortran.dg/transfer_check_1.f90
  9a2953b8d7639d3d68a7693a2cb88846  gcc/testsuite/gfortran.dg/transfer_check_2.f90
  b16324a7bb85ab60eb71418a0761e565  gcc/testsuite/gfortran.dg/transfer_check_3.f90
  1374d10203871ed68c005e2af626fbeb  gcc/testsuite/gfortran.dg/transfer_check_4.f90
  ad625f0340741a09e4be8d42e070139e  gcc/testsuite/gfortran.dg/transfer_check_5.f90
+ 769481a8d23349d31daa8c1c4bdda73b  gcc/testsuite/gfortran.dg/transfer_check_6.f90
  76406e3436f42466e7735ed9f5762bd7  gcc/testsuite/gfortran.dg/transfer_class_1.f90
  7f1199fe5fa90085dcbb4f81cbcf7062  gcc/testsuite/gfortran.dg/transfer_class_2.f90
  4003da30901edcfc6adf19924dc746a2  gcc/testsuite/gfortran.dg/transfer_class_3.f90
*************** fca7571238596b88ba0b767cd69041d7  gcc/te
*** 73583,73591 ****
  61dc845871f386f900b0ac50b8a1ed35  gcc/testsuite/gfortran.dg/transfer_resolve_4.f90
  f0e0bb83d7a933084afe0235adc91044  gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
  0e37859572cdbc7ec9804e5e5f50a0d9  gcc/testsuite/gfortran.dg/transfer_simplify_10.f90
! 28072dd7f3eef057672f7c38728a4ba6  gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
  7a9020fc2f84bc7f31ff4cf8822de2ce  gcc/testsuite/gfortran.dg/transfer_simplify_12.f90
! 37010897279c0577b0975bdcac554324  gcc/testsuite/gfortran.dg/transfer_simplify_2.f90
  dde58017dce31b9f86dea653194c266e  gcc/testsuite/gfortran.dg/transfer_simplify_3.f90
  f969144a4ccabad799704e5ecdde6afc  gcc/testsuite/gfortran.dg/transfer_simplify_4.f90
  7a2c72c430eb2b6cf677f63ffc1ac705  gcc/testsuite/gfortran.dg/transfer_simplify_5.f90
--- 74019,74029 ----
  61dc845871f386f900b0ac50b8a1ed35  gcc/testsuite/gfortran.dg/transfer_resolve_4.f90
  f0e0bb83d7a933084afe0235adc91044  gcc/testsuite/gfortran.dg/transfer_simplify_1.f90
  0e37859572cdbc7ec9804e5e5f50a0d9  gcc/testsuite/gfortran.dg/transfer_simplify_10.f90
! 7dbbad160b2cec1a34861ec259ef8f69  gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
  7a9020fc2f84bc7f31ff4cf8822de2ce  gcc/testsuite/gfortran.dg/transfer_simplify_12.f90
! 46809d4ffd9fbb0d8d976bcf70c84e44  gcc/testsuite/gfortran.dg/transfer_simplify_13.f90
! 033fcf43c73ba63f468dc3499e3bdfb2  gcc/testsuite/gfortran.dg/transfer_simplify_15.f90
! 4e36501f895ecc45ab0347d5a28ef427  gcc/testsuite/gfortran.dg/transfer_simplify_2.f90
  dde58017dce31b9f86dea653194c266e  gcc/testsuite/gfortran.dg/transfer_simplify_3.f90
  f969144a4ccabad799704e5ecdde6afc  gcc/testsuite/gfortran.dg/transfer_simplify_4.f90
  7a2c72c430eb2b6cf677f63ffc1ac705  gcc/testsuite/gfortran.dg/transfer_simplify_5.f90
*************** a7d68db5c429562164ea47edc8677d14  gcc/te
*** 73747,73752 ****
--- 74185,74192 ----
  b432d7fb6a6aa41a4117f93a3fb4acb3  gcc/testsuite/gfortran.dg/typebound_proc_9.f03
  a9c38f145300eee1aaca2ccee4d418fd  gcc/testsuite/gfortran.dg/typed_subroutine_1.f90
  5fcbccbbe6f25c7610a63673951af1d0  gcc/testsuite/gfortran.dg/ubound_1.f90
+ ddea8e97d88b939147b22730616832d2  gcc/testsuite/gfortran.dg/ubsan/pr101624.f90
+ ebbb3b8f806e83076bdf2e11cf9dc359  gcc/testsuite/gfortran.dg/ubsan/ubsan.exp
  1623cb39a42976237e7817a8a94f1a4a  gcc/testsuite/gfortran.dg/unary_operator.f90
  0e692a977ecc4ab86f2eddee444794b4  gcc/testsuite/gfortran.dg/uncommon_block_data_1.f90
  a3fe3d5aed286d45e58533ee6cd37dd9  gcc/testsuite/gfortran.dg/unconstrained_commons.f
*************** fd6e6d00444cf821cc11413aa2179498  gcc/te
*** 74950,74955 ****
--- 75390,75397 ----
  7d71e600cd387947a72c1a9f7e29f0ca  gcc/testsuite/gnat.dg/derived_type5_pkg.ads
  dc7b3ebaa7caa13b60d6eb8a552ad48d  gcc/testsuite/gnat.dg/derived_type6.adb
  85b3a46622ba8d5651550a9dda49adf3  gcc/testsuite/gnat.dg/derived_type6.ads
+ 44054b333f553f9d52b5aae8a29d6c87  gcc/testsuite/gnat.dg/derived_type7.adb
+ e0b9cf9f7a4c88212b3b340e33e89929  gcc/testsuite/gnat.dg/derived_type7.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
*************** fa0a217ef7773f18e2100deca65155e8  gcc/te
*** 75651,75656 ****
--- 76093,76099 ----
  800283c5dd0dcc98963845af2f46f5b1  gcc/testsuite/gnat.dg/lto24_pkg1.ads
  6cc6cb14bbcba172d4f4eeb357613237  gcc/testsuite/gnat.dg/lto24_pkg2.adb
  14d0b11f260b0d1752208a98b741658a  gcc/testsuite/gnat.dg/lto24_pkg2.ads
+ ed33690892e43011718347ecca58daff  gcc/testsuite/gnat.dg/lto25.adb
  2acb4cc31994f1569a3db6ac6613928d  gcc/testsuite/gnat.dg/lto4.adb
  9b38247c8e825c514f87e2965d931dad  gcc/testsuite/gnat.dg/lto4.ads
  959fb8bdf4cd1c34347ecfbab19ea60b  gcc/testsuite/gnat.dg/lto5.adb
*************** e2ce9edab47e6f8e17958fffd5af3935  gcc/te
*** 75936,75941 ****
--- 76379,76388 ----
  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
+ cebcd76e2479c79677bbc78316b57186  gcc/testsuite/gnat.dg/opt96.adb
+ be4ae336c50882da5846142a7791cd3a  gcc/testsuite/gnat.dg/opt96_pkg.adb
+ 15c1a01fd2ed3d1a51b5d70bb800b81b  gcc/testsuite/gnat.dg/opt96_pkg.ads
  feb376d91f5514b647b1ad61b025d828  gcc/testsuite/gnat.dg/opt9_pkg.ads
  0a9bf4dbd445ef99721501592f66cea2  gcc/testsuite/gnat.dg/others1.adb
  9f62042ad37161c5182cb92d70d0b24d  gcc/testsuite/gnat.dg/out_param.adb
*************** db83ca8da3226bea725ce43acaee8ba1  gcc/te
*** 76721,76729 ****
  e0b42cd0bffe14a0454e6947c1576b0d  gcc/testsuite/gnat.dg/unchecked_convert2.adb
  ab71b7c411a24b92bc4692458e82095e  gcc/testsuite/gnat.dg/unchecked_convert3.adb
  d11f3831351000de17c86545b36e9825  gcc/testsuite/gnat.dg/unchecked_convert4.adb
! a5a1781a9b40c44bd5dbb95b32e2f178  gcc/testsuite/gnat.dg/unchecked_convert5.adb
  bb1207d00011fa510617f94b62a94456  gcc/testsuite/gnat.dg/unchecked_convert5b.adb
! c4dac9d7e9ac17a744626ef44ae553ab  gcc/testsuite/gnat.dg/unchecked_convert6.adb
  9b5f1301a020de2359815aeda0976024  gcc/testsuite/gnat.dg/unchecked_convert6b.adb
  dabd5b43f529cc66c1c6b885a976833a  gcc/testsuite/gnat.dg/unchecked_convert7.adb
  e8e39c388c32e8e9b60efbb677b05921  gcc/testsuite/gnat.dg/unchecked_convert8.adb
--- 77168,77176 ----
  e0b42cd0bffe14a0454e6947c1576b0d  gcc/testsuite/gnat.dg/unchecked_convert2.adb
  ab71b7c411a24b92bc4692458e82095e  gcc/testsuite/gnat.dg/unchecked_convert3.adb
  d11f3831351000de17c86545b36e9825  gcc/testsuite/gnat.dg/unchecked_convert4.adb
! 2eca78d256d8e8011721f3197334e1bf  gcc/testsuite/gnat.dg/unchecked_convert5.adb
  bb1207d00011fa510617f94b62a94456  gcc/testsuite/gnat.dg/unchecked_convert5b.adb
! 9703af43dac2a467e5b568ac089dec31  gcc/testsuite/gnat.dg/unchecked_convert6.adb
  9b5f1301a020de2359815aeda0976024  gcc/testsuite/gnat.dg/unchecked_convert6b.adb
  dabd5b43f529cc66c1c6b885a976833a  gcc/testsuite/gnat.dg/unchecked_convert7.adb
  e8e39c388c32e8e9b60efbb677b05921  gcc/testsuite/gnat.dg/unchecked_convert8.adb
*************** cd644384eebc8c1b05a70f19e4fc8854  gcc/te
*** 78045,78052 ****
  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
--- 78492,78499 ----
  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
! 950bf03903ed927f5a64a0047d5a11bf  gcc/testsuite/jit.dg/harness.h
! fd0d4851f311391739c1768a5fb5431a  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
*************** af4d6049c526358b0bced72089af7076  gcc/te
*** 78209,78215 ****
  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
--- 78656,78662 ----
  798104da27cee008686141a98b520f8b  gcc/testsuite/lib/options.exp
  9440d87b50965ff5486b551ef11a634a  gcc/testsuite/lib/plugin-support.exp
  cd778530c8ca650e7a6e2de7066010bd  gcc/testsuite/lib/profopt.exp
! 658ad08ae0f9384c016baf7141dede6d  gcc/testsuite/lib/prune.exp
  2ad9a8996d5e8fa158376c2f08e51439  gcc/testsuite/lib/scanasm.exp
  b0a4036b6c7e5c72770103d9d03169c5  gcc/testsuite/lib/scandump.exp
  96a8959535595b881ea8a82d0869c90b  gcc/testsuite/lib/scanipa.exp
*************** d632d5568c00760aea7b18467091554c  gcc/te
*** 78222,78228 ****
  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
--- 78669,78675 ----
  de7c3a30aab1a4360904bd68322b8c39  gcc/testsuite/lib/scanwpaipa.exp
  84d4d1fa2ac6a05232c49ad827939a46  gcc/testsuite/lib/target-libpath.exp
  ca50260c50a30bdb6f74ff883e63b78b  gcc/testsuite/lib/target-supports-dg.exp
! 6dc7d183e9cec65a00791e48498f56aa  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
*************** ac0b35dcfcf72480c040349b2b8a874b  gcc/te
*** 78286,78292 ****
  f6a135d669303e10360f4a9e17664aa7  gcc/testsuite/obj-c++.dg/cxx-class-1.mm
  7a5a474af4c3ae26683ee29295314d7b  gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
  2dd2f7dd6f655732fc606d8c85af825b  gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm
! 118f7827cc56ea7303e814e19ff4f7a5  gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
  0f4f03268c6b5629c2c23fe7fbc06966  gcc/testsuite/obj-c++.dg/cxx-scope-1.mm
  74ea4974ad0f897a229d4bd99f47da95  gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
  4d63d224c8c642188a58882a0609e394  gcc/testsuite/obj-c++.dg/defs.mm
--- 78733,78739 ----
  f6a135d669303e10360f4a9e17664aa7  gcc/testsuite/obj-c++.dg/cxx-class-1.mm
  7a5a474af4c3ae26683ee29295314d7b  gcc/testsuite/obj-c++.dg/cxx-ivars-1.mm
  2dd2f7dd6f655732fc606d8c85af825b  gcc/testsuite/obj-c++.dg/cxx-ivars-2.mm
! e91047651063a1662428088ff7456f48  gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
  0f4f03268c6b5629c2c23fe7fbc06966  gcc/testsuite/obj-c++.dg/cxx-scope-1.mm
  74ea4974ad0f897a229d4bd99f47da95  gcc/testsuite/obj-c++.dg/cxx-scope-2.mm
  4d63d224c8c642188a58882a0609e394  gcc/testsuite/obj-c++.dg/defs.mm
*************** b6a4bff612a08ec461838ac1b3bd23f1  gcc/te
*** 78393,78402 ****
  ae0cb1e1f2ed9485ab1abd0d8669c498  gcc/testsuite/obj-c++.dg/naming-3.mm
  dcb5ecceff49837d638a19ab2eabd0ad  gcc/testsuite/obj-c++.dg/naming-4.mm
  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
--- 78840,78852 ----
  ae0cb1e1f2ed9485ab1abd0d8669c498  gcc/testsuite/obj-c++.dg/naming-3.mm
  dcb5ecceff49837d638a19ab2eabd0ad  gcc/testsuite/obj-c++.dg/naming-4.mm
  bb8ccf448c201adbf05356ac551899fb  gcc/testsuite/obj-c++.dg/no-extra-load.mm
! 1c39d0d9e54d7c124e4e36d7ac5c8033  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
+ a1ff757de40d44fb3868d406ed01c4eb  gcc/testsuite/obj-c++.dg/pr101666-0.mm
+ 339a76362d0703671d6ddc07066f2d95  gcc/testsuite/obj-c++.dg/pr101666-1.mm
+ 7b3270d7548d00c42ba59f5769932087  gcc/testsuite/obj-c++.dg/pr101666.inc
  8aa79ecb56c90fe51464150a135fe71f  gcc/testsuite/obj-c++.dg/pr23709.mm
  8480d22a4388c485c49d1c703c34f7f7  gcc/testsuite/obj-c++.dg/pr24393.mm
  2e9567e68880e80a9fa203bba6e86d7f  gcc/testsuite/obj-c++.dg/pr28049.mm
*************** d7940785b72ab02856b58bf8b4c3d710  gcc/te
*** 78872,78878 ****
  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
--- 79322,79328 ----
  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
! 608ea2106bb549a54ca754a76a22fde2  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
*************** e813e9eab1b738541a5a77be6a3e194f  gcc/te
*** 78880,78885 ****
--- 79330,79338 ----
  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
+ a1ff757de40d44fb3868d406ed01c4eb  gcc/testsuite/objc.dg/pr101666-0.m
+ 339a76362d0703671d6ddc07066f2d95  gcc/testsuite/objc.dg/pr101666-1.m
+ c963db6673c4b0358e639bc17180a2a0  gcc/testsuite/objc.dg/pr101666.inc
  4bde0ee2020d54cbaccb19eddeb1ff93  gcc/testsuite/objc.dg/pr18255.m
  31c55f97ea5b980eec7b074cf9577cb9  gcc/testsuite/objc.dg/pr23214.m
  e220e57343bac32bbc315171b87b1bba  gcc/testsuite/objc.dg/pr23709.m
*************** cb93d16284083d3b9b3c4e20168620d6  gcc/tr
*** 79251,79257 ****
  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
--- 79704,79710 ----
  152e8165771ecddccc9d44e20851353b  gcc/tree-affine.c
  0b109601bb4905e4f569439451ec6fa1  gcc/tree-affine.h
  6bb5dae4af5b869cdbd66834af378767  gcc/tree-call-cdce.c
! b0831adde135e8215b9500c04965b988  gcc/tree-cfg.c
  8827d749b1f112912acd36b5fa86719f  gcc/tree-cfg.h
  69569b7be3c796a277a2083e8d5ee2c5  gcc/tree-cfgcleanup.c
  f441bd0bb33f69c0d7f1c0057582e027  gcc/tree-cfgcleanup.h
*************** f441bd0bb33f69c0d7f1c0057582e027  gcc/tr
*** 79259,79265 ****
  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
--- 79712,79718 ----
  4e1efeebec075dc15c3b4e348b263b64  gcc/tree-chrec.h
  80b8c4f7bfab38ae3b39c1b179720cbb  gcc/tree-complex.c
  e66a96b97f79de39ed0463c8d517c16c  gcc/tree-core.h
! 6959d811ef875ad745a7f4f95331cd42  gcc/tree-data-ref.c
  b733765819e76ff58bd73dca82313318  gcc/tree-data-ref.h
  6f07214ef7e8f0ee9c189cb8dd89af6f  gcc/tree-dfa.c
  7f0ef8abf89f1173c38018b0b12d6a14  gcc/tree-dfa.h
*************** d459e657ac4e11e8e50ab8429f4b15fb  gcc/tr
*** 79268,79290 ****
  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
--- 79721,79743 ----
  608263f6448ac00b6771eb4fe778e47a  gcc/tree-diagnostic.h
  c64b90c644a821261a72935b93ba3540  gcc/tree-dump.c
  77f5351a825fd3910011228b4d5d213a  gcc/tree-dump.h
! 079542970b731d389267e6a3730ed4a6  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
! 799bd1fec4db3cca20d6fb4d217b2c9a  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
! 9adfa23fdb9a946b91be7a3afdb6aa16  gcc/tree-loop-distribution.c
! cde5a702e58751dbff7847d535256346  gcc/tree-nested.c
  97f5a7e0334053228b88087b732f6a67  gcc/tree-nested.h
! e220e44e761cee85214b2cafa2e4849b  gcc/tree-nrv.c
  0334a4500c28bc021f639d715636c4dc  gcc/tree-object-size.c
  25b3b5a3be46daaf04c91a84c305b6ea  gcc/tree-object-size.h
  4fcff3dca0736d092d6bfd5f6a327d26  gcc/tree-outof-ssa.c
*************** b7424dd035be92255e7eb0bdd64347b9  gcc/tr
*** 79294,79306 ****
  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
--- 79747,79759 ----
  a4723858b16bec650ed43e6d94d254b7  gcc/tree-pass.h
  8bf04fc2b4fa5e0828ee5be7f0f6a03a  gcc/tree-phinodes.c
  b4e0a37f771fc4a76ce646464d82d9f5  gcc/tree-phinodes.h
! 075d061419cd91621849e3ca319ddf5b  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
! c7c8fc4b09a196228fa1f9c110a4d369  gcc/tree-sra.c
  71cc20d4743a15fefb27446e7653e2d1  gcc/tree-sra.h
  87d8129acd88720031e13284b94d5bd1  gcc/tree-ssa-address.c
  fbc43c20731949aace70a7fd40e3686a  gcc/tree-ssa-address.h
*************** fb5fb25c0bf84f4deb3f9b217455a9bb  gcc/tr
*** 79313,79328 ****
  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
--- 79766,79781 ----
  ac0b1053dfb49bc5b0a1730094fc3ea9  gcc/tree-ssa-copy.c
  e98fdeb69a40f7971fecbcf25d91b5e2  gcc/tree-ssa-dce.c
  4d3bb522f662c24caa6940d29527d3bf  gcc/tree-ssa-dce.h
! 034e6355a333834ee627ca3b1a0a6327  gcc/tree-ssa-dom.c
  3fd94e5b2a00ff49e08ceed53182ee38  gcc/tree-ssa-dom.h
  6e11b9149ccd3f77438a55a188da14f4  gcc/tree-ssa-dse.c
  1e30750dd1407ad9992723b0e011b9b0  gcc/tree-ssa-dse.h
! 99bb7ef01f1917c969345e25caf234c8  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
! d2095c83dae5f50f4031680fea6684d9  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
*************** c536c9cfad3a0d377acc31ae84295eaf  gcc/tr
*** 79335,79357 ****
  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
--- 79788,79810 ----
  8d51e8c65b9d2e2082d77563f6f9117c  gcc/tree-ssa-loop-unswitch.c
  5fb07d7f3d6daae2c7d4dde424ce1bf5  gcc/tree-ssa-loop.c
  6d02c14ee9afd91ea8461989c7199824  gcc/tree-ssa-loop.h
! ecf0f12ee8d2332944008e566a246cd3  gcc/tree-ssa-math-opts.c
  28bd07bfafe14bfd4c7d52df1a34fba3  gcc/tree-ssa-operands.c
  a9125a7ed5ffe04afa03c4e509e26e87  gcc/tree-ssa-operands.h
! 13367be27c3971a75a61c93e4f37438b  gcc/tree-ssa-phiopt.c
  ed91c7af1f1877eee14288a9011c4604  gcc/tree-ssa-phiprop.c
! 769f59bc5599d78b19aae3327674fda7  gcc/tree-ssa-pre.c
! 47231627d5b9c1bdccc192ad9bffcdfc  gcc/tree-ssa-propagate.c
! df5bfed9047239abd92621f1e539d742  gcc/tree-ssa-propagate.h
! 36994b3260c265e6c49c6afbeb541866  gcc/tree-ssa-reassoc.c
! ed5bffc408c0169ffa4966e4169cb76e  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
! e0e046f2620756f55795dd38bd0331b8  gcc/tree-ssa-structalias.c
  3dcabc4321b031865db6d427ec0f2c5d  gcc/tree-ssa-tail-merge.c
  f685f69789eecc07be8cc42011b1ed06  gcc/tree-ssa-ter.c
  50b5c86a5520c43bd146748db9735042  gcc/tree-ssa-ter.h
*************** fb773867654f4facf8ba8f98ea0ed1ec  gcc/tr
*** 79372,79396 ****
  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
--- 79825,79849 ----
  f48b945e98da024aa93e2fa29643349a  gcc/tree-streamer-out.c
  71c508b114cbb1dc7f87a5a74986446f  gcc/tree-streamer.c
  c8ba0af2809bd844311a92b58441929d  gcc/tree-streamer.h
! 5d2c07ac0a64031597196039369f7eac  gcc/tree-switch-conversion.c
! 977749f5480f3f9350cfb41f689d8d14  gcc/tree-switch-conversion.h
  cc86acc5bbeaf6edcac80f0418ee00d9  gcc/tree-tailcall.c
! ef61ebae1e5f6cfe36e657e37f539ec5  gcc/tree-vect-data-refs.c
  4067795b0cc6562813aa9328f7a7f673  gcc/tree-vect-generic.c
! 57ee1fbc28ded6a3a8142efbd2bb6740  gcc/tree-vect-loop-manip.c
! 8d96a9519db07c868c088372afb6a194  gcc/tree-vect-loop.c
  5678e693f30e0209186170f8b86f6a34  gcc/tree-vect-patterns.c
! 6ffb6cac39d587704d096cf277f45ceb  gcc/tree-vect-slp.c
! 90328dc08cd3305a7d9783b311af1ff3  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
! a0ca5a10b46bcc59476e360c4f031645  gcc/tree.c
  feec14642f58666703a84493d633bf44  gcc/tree.def
! c0379c1a37b7ab3d7e1bd0f88f887eb9  gcc/tree.h
  1b65ea609f67932622f25f55787ab458  gcc/treestruct.def
  13f52514cd082aaef51e5bf641c95001  gcc/tristate.cc
  f65513b8bb1e01109b10dae081b65514  gcc/tristate.h
*************** d921215311113c088937334a5d79f91b  gcc/ts
*** 79400,79416 ****
  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
--- 79853,79869 ----
  1bbc90c1a741857b5f75c2b60bb924e3  gcc/typeclass.h
  99185f183dff800aaa8b73b97c8f2b8f  gcc/typed-splay-tree.c
  618469e5e2de941ab376ccfbd38369fd  gcc/typed-splay-tree.h
! 050e377b9f8a1b2344a00718244fec6e  gcc/ubsan.c
  4ff057d55e17c93d675efbf67e4af3de  gcc/ubsan.h
  a274bda31817b40877c1293fe8cec7dc  gcc/unique-ptr-tests.cc
! d0e32000b1f869927f8a8d8f08b3c421  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
! 1ea967a3a2963e2b8de5e7021b581b11  gcc/var-tracking.c
! cec2346ed2871a645e9128377795d889  gcc/varasm.c
  653be5477fff14f116c6c0d91ccb8ed8  gcc/varasm.h
  c240a2fff05699dd50965775a1df8244  gcc/varpool.c
  8f1a5181ac5eb5727cfdfb414fc2a534  gcc/vec-perm-indices.c
*************** dad3b64b401c8aa8013d2c3b724ebfd1  gcc/ve
*** 79421,79427 ****
  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
--- 79874,79880 ----
  b1009fec9446ce7c6f1fcd4a227fbf25  gcc/version.c
  206ce76c6ce744048f99fdcc938dc713  gcc/version.h
  5aae01d68d9814dcf0bbc922193ac3c3  gcc/vmsdbg.h
! 36a04845abe46d193d32c23f11f11b00  gcc/vmsdbgout.c
  78fbbe4c6834d8b5be92d161f3c8bfa8  gcc/vr-values.c
  2a97acf99424266cd70ef89ce24f2741  gcc/vr-values.h
  ef8b78b9f3039e5e4c1bf673bd3569a4  gcc/vtable-verify.c
*************** dd2af862c855085ed651c383b7cc8889  gcc/wi
*** 79435,79445 ****
  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
--- 79888,79898 ----
  66087ece808189c4792bf7458f8b892e  gcc/xcoff.h
  c1a1f47efd530769576572f8d67855e6  gcc/xcoffout.c
  93de1ac25e02a930c0ccdc015fe3e4ff  gcc/xcoffout.h
! 34474f174867c73e02e11be5642240c4  gnattools/ChangeLog
  aaa671ca98fa9f94bfedd0ab395c5505  gnattools/Makefile.in
  8385a4d775aa1b9949c1f88488491c86  gnattools/configure
  1e063bb0b806e41cc0ed23d1b7047746  gnattools/configure.ac
! 3d89c8be31381a0a8b36ff81c81814ed  gotools/ChangeLog
  303548024e6fc434838f0f42f2e9439e  gotools/Makefile.am
  2c91078d2a6aa9838e182a651608c4d0  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 79450,79456 ****
  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
--- 79903,79909 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 81b002a17537131d23e58e9b93dcfbc8  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
  ca76b64dc47d03c76721ca95e36c7e3a  include/ansidecl.h
*************** b07687cc9e0f873ac2e25628c5e7912a  includ
*** 79495,79510 ****
  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
--- 79948,79963 ----
  13e0194dd62a3563ba7c42d3db663f36  include/xregex2.h
  6c83d27bff34846af1fad683ef5a77e3  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 3c6a59d37441ce957c889406e9c19e09  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,79549 ****
  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
--- 79991,80002 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! a589bf2724798e0f0910454f09c4702e  libada/ChangeLog
  4147e5cbf56998a5d7cf62fdba854112  libada/Makefile.in
  c851e0f50ad5e334f1cdf3b8c0bae3e2  libada/configure
  45fd7edb8aa72c41d45412e88010a79c  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 15a0c8d266bcbf07c7aa16a62a8bddb0  libatomic/ChangeLog
  d42e0b7d4357d88dd10273050673a93a  libatomic/Makefile.am
  7386f3baeb9aa80af4a01a49d38f0c10  libatomic/Makefile.in
  879263fa8d462b018b9a483d6ac68e45  libatomic/acinclude.m4
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 79630,79636 ****
  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
--- 80083,80089 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 68bdfa3990cd3b4a7de23567d09e45da  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
  0dee96cf83de0ad4944443622f9379c8  libbacktrace/Makefile.am
  cbc7c8020c0f8dcfa2d2a373f6da7e8b  libbacktrace/Makefile.in
*************** c3e362d9085bb7d5ac4b6cc0d299e9b3  libbac
*** 79675,79683 ****
  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
--- 80128,80136 ----
  230c6487aa41dcf6385603f0eba3f318  libbacktrace/unknown.c
  38f8a61f09ebf0daecf10ca78c228587  libbacktrace/xcoff.c
  2573cfcfdf54eb3b48c559e89d4b8e0b  libbacktrace/ztest.c
! 93830cf16ea8a113906ea5cc0a38dec6  libcc1/ChangeLog
! c25ac45106391e5bfcbe7fb84b57da90  libcc1/Makefile.am
! 14bb0fce6ab9a6b5fe6b7a9ab0b0002c  libcc1/Makefile.in
  951b88f5687afa4f7735d87a83007fc0  libcc1/aclocal.m4
  f0df7070bae3a278b57061df18deac43  libcc1/callbacks.cc
  848895a5263c502c808ebf9f7b277797  libcc1/callbacks.hh
*************** b3af03e33f43aa92c6fd8d2022beb493  libcc1
*** 79704,79710 ****
  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
--- 80157,80163 ----
  95b7cbcd3c24af802f4a02f68e2e3304  libcc1/names.hh
  755ea5d706408ca766c27354ac24d0d2  libcc1/rpc.hh
  577d73d4b34d5f45d090858af7a98d82  libcc1/status.hh
! 38e5aa6f954086056a5107306908b0c1  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  83cc3f43bcfa51a6019c4dbff5d9e6e6  libcpp/Makefile.in
  5f73e265652f92a8ad72a80124ac7061  libcpp/aclocal.m4
*************** a82e3eb1d8561484e9ba80fe49aaa3d2  libcpp
*** 79713,79738 ****
  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
--- 80166,80191 ----
  4cfab6637ea3472b21f31ea4e3bb53a8  libcpp/configure
  db98df9b3eb19f4fe581a917e87c5a57  libcpp/configure.ac
  5450be14c9a74629a46f3fa6a948d86e  libcpp/directives-only.c
! 577500fa319cb38653a7765ad8b3968d  libcpp/directives.c
  3eb366a5c93bc8bd46ecd4ce655e4241  libcpp/errors.c
! 1fb001fe286c05c4f0218e4f52eb5dd5  libcpp/expr.c
  d6df522c695dd05a286e3148c12c34a9  libcpp/files.c
  caace99b7a2c4dc8f56bc1d8e7c79366  libcpp/generated_cpp_wcwidth.h
  559d2467c9b9963ae437b4384c135f4b  libcpp/identifiers.c
  e16f6fa002f6cb922a4949b0e7ffa288  libcpp/include/cpplib.h
! 5bf416886267efcd03b9592774a40920  libcpp/include/line-map.h
  3598f02c845c49c4b5e117e8ce2cd8aa  libcpp/include/mkdeps.h
  fef5fc761de09b42a55bc9da0bbe337d  libcpp/include/symtab.h
  fcfb9c48269d85d0092955620c55d418  libcpp/init.c
  846dc67c378d3d3ed8bd076c28d72a88  libcpp/internal.h
! e5e29557bc2d400ca19bf9698d8c4adb  libcpp/lex.c
! 1aef9c5bd896fa326ab67d9df127bd35  libcpp/line-map.c
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! 68f99d5795515e177f0681aafb96b9c8  libcpp/macro.c
  9bffef71f0dc7c27e6e9670482b78334  libcpp/makeucnid.c
  6489fc7f57fdb7d583e7147ff0522602  libcpp/mkdeps.c
  495ec808fc38a61b2088dbfaabe9c5cd  libcpp/pch.c
! 9470027f9eab6f06c81ab49d2db8e205  libcpp/po/ChangeLog
  236a7764238de3aa208e3a857c56f478  libcpp/po/be.gmo
  e3ee1b4c54df1144bdb2156cd4af4f8e  libcpp/po/be.po
  a64f63d1193f804860308855177c5f6a  libcpp/po/ca.gmo
*************** f15afc03bd997db77424a8404de0ba1e  libcpp
*** 79782,79788 ****
  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
--- 80235,80241 ----
  b9ceddedbc75716da73d649fb6c90584  libcpp/ucnid.h
  3dd5221704b1febaea71e979ee418d16  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! ec730465856a89d587602d22b53305f8  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
  d692c4e4e0b6dff10132a781dc3115ec  libdecnumber/Makefile.in
  5f9283b55276ee7e43f1b2d807e0d85f  libdecnumber/aclocal.m4
*************** a97c47969dfc92a7666dfe3c2e1e1448  libdec
*** 79845,79851 ****
  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
--- 80298,80304 ----
  91741095dde1e8d43321a7d2c8af9ef0  libdecnumber/dpd/decimal64.c
  db0cc15dc64e7d60a762ebe3bb6a6921  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
! 3ec63071164326cac11a45c30fa67c0f  libffi/ChangeLog
  ba66fc19311348d373ec271be939a659  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
*************** e988aa92b714d72199c40b30edcaff89  libffi
*** 79994,80000 ****
  5624660cd94e07f27918e57a51a103ee  libffi/src/x86/darwin64_c.c
  b8ca26733e457413f07cde86b4172a99  libffi/src/x86/darwin_c.c
  08f53dd5901f0176d44b7b9b46420e18  libffi/src/x86/ffi.c
! 7ccf48dc3c360e9bf0a77d4e86132c4c  libffi/src/x86/ffi64.c
  fbafaaf9d5bbdfa1191f07131de6572a  libffi/src/x86/ffitarget.h
  c6877cb33a938d1b0ca967d17089b339  libffi/src/x86/ffiw64.c
  b4b878c72f2f781fe41addd69ab2d619  libffi/src/x86/internal.h
--- 80447,80453 ----
  5624660cd94e07f27918e57a51a103ee  libffi/src/x86/darwin64_c.c
  b8ca26733e457413f07cde86b4172a99  libffi/src/x86/darwin_c.c
  08f53dd5901f0176d44b7b9b46420e18  libffi/src/x86/ffi.c
! 0fcee3805caea018e96ee0acdc8d617a  libffi/src/x86/ffi64.c
  fbafaaf9d5bbdfa1191f07131de6572a  libffi/src/x86/ffitarget.h
  c6877cb33a938d1b0ca967d17089b339  libffi/src/x86/ffiw64.c
  b4b878c72f2f781fe41addd69ab2d619  libffi/src/x86/internal.h
*************** b1fc2a9b18683c39c78174fe71d41c9a  libffi
*** 80105,80110 ****
--- 80558,80564 ----
  603c0f6bd65593799acb32b8720ad959  libffi/testsuite/libffi.call/nested_struct1.c
  5f2439a6b772e5a891deb1cc27a720bb  libffi/testsuite/libffi.call/nested_struct10.c
  5cdea341282c185038f3701005139f72  libffi/testsuite/libffi.call/nested_struct11.c
+ 45140def5a7fff8a434158cba3d44619  libffi/testsuite/libffi.call/nested_struct12.c
  3214b270fba1963541695b072f8ce30c  libffi/testsuite/libffi.call/nested_struct2.c
  d90963b4f9d554c5db857a2d2000feb7  libffi/testsuite/libffi.call/nested_struct3.c
  8dfe86c771d317f4ab02797610cc15dd  libffi/testsuite/libffi.call/nested_struct4.c
*************** d47c79b281339983862a8e52d8c73f0f  libffi
*** 80205,80213 ****
  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
--- 80659,80667 ----
  291be426192f460f6a07dfe1c96ab094  libffi/testsuite/libffi.special/special.exp
  93fc3ea311b79f64004992807ce75d1e  libffi/testsuite/libffi.special/unwindtest.cc
  185d0795017fbbe253a13db8e34085f9  libffi/testsuite/libffi.special/unwindtest_ffi_call.cc
! 19bf7c85bf8d7c051449121be9ad75d3  libgcc/ChangeLog
  8a89bfe8c8707589b9b1470ad60f27c1  libgcc/Makefile.in
! 3a0e94f62100f9d19abcb78fa089089b  libgcc/config.host
  083f194c4f87d0510383fd4156d3aaef  libgcc/config.in
  9858db9b07dcce5cb230400b57775ac2  libgcc/config/aarch64/aarch64-unwind.h
  cb6bf25f692fb35cb8c66a813be70503  libgcc/config/aarch64/crtfastmath.c
*************** bc8091ea114367b3b741725a189d2c2a  libgcc
*** 80216,80229 ****
  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
--- 80670,80683 ----
  bfb92cd2cc568e51bd58e7cf47d50161  libgcc/config/aarch64/freebsd-unwind.h
  8e2f2ebc742ebe6b5e5fade35c522e94  libgcc/config/aarch64/linux-unwind.h
  29aea81db92e457ee9e2c580be585925  libgcc/config/aarch64/lse-init.c
! 75ebdaaa2129f4449eecafe294e6d64e  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
! 1bce241434da4c5eca9ec1b6d82e4735  libgcc/config/aarch64/t-lse
  3a7564780070d43ba461bc58622771af  libgcc/config/aarch64/t-softfp
! 7be1e450d554858e751945a14fa82ce8  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
*************** d1b259a7ebb554c2b7f55d42fc857a61  libgcc
*** 80294,80300 ****
  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
--- 80748,80754 ----
  9e7601333c2da970cb0acf8a8aebdf36  libgcc/config/arm/bpabi.S
  01c3f42719678bb53df22aa8a6755da0  libgcc/config/arm/bpabi.c
  d7b6fac9733372b0eca682895b864582  libgcc/config/arm/cmse.c
! f3a1edd1517781f2f99bb2f2ee31bcc1  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
*************** f251a89bb0980b9dfc533705a5e96fe6  libgcc
*** 80310,80316 ****
  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
  a86e3a4a0c8c3ead836f792603deed27  libgcc/config/arm/t-freebsd
--- 80764,80770 ----
  31a7e761159af464c55ba59256be3073  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
  075490dd9ed3194c5a512074317092ff  libgcc/config/arm/symbian-lib.h
! 8bcfdd455e9a830ab6b5da1e39fab4d1  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  be2d9c3da6e3f9aa4be1b2856a70de22  libgcc/config/arm/t-elf
  a86e3a4a0c8c3ead836f792603deed27  libgcc/config/arm/t-freebsd
*************** edd359796dafc4dc78c672bcdfe885fa  libgcc
*** 80332,80338 ****
  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
--- 80786,80792 ----
  39e55a737e39fc207b8597387f60c342  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  a1bb21bac26f7d1cb33aadeb1a2cb04d  libgcc/config/avr/lib2funcs.c
! e87ee8fc2bad4b11c5379e9b55d22c45  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
*************** be0a987973699f81d3104929e09fbbc0  libgcc
*** 80415,80420 ****
--- 80869,80875 ----
  3d4b43989f4f53630fdf07564fec01c2  libgcc/config/darwin-64.c
  0e4427ab50980a171acbc638f4a4846f  libgcc/config/darwin-crt-tm.c
  a2ad7b17a6729bcf3885db737af1f9cd  libgcc/config/darwin-crt3.c
+ 3d9ace1569f13aadc86ee3608541f634  libgcc/config/darwin-unwind.ver
  9e9354d2ce2c41094a62d88a3c777c4b  libgcc/config/darwin10-unwind-find-enc-func.c
  da40956ae6b1ff7b16b27fe76c2213f5  libgcc/config/epiphany/crti.S
  47a376f6f4c7229da1a008ae88b1481f  libgcc/config/epiphany/crtint.S
*************** f635a94a325fa062d82f89a3ed825c76  libgcc
*** 80452,80458 ****
  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
--- 80907,80913 ----
  19ad00e225d8c7304467018c7af2959c  libgcc/config/frv/cmovh.c
  6852fe6bdae955208e747e7347456ff8  libgcc/config/frv/cmovw.c
  c65680100edb85d9f3a4de5cf0265171  libgcc/config/frv/elf-lib.h
! c393407efe0c9990c53bbf30374b02df  libgcc/config/frv/frv-abi.h
  867e78c995c16b06bfa35187a40ccd17  libgcc/config/frv/frvbegin.c
  33d97a538026ced889eff265c1ddc7c7  libgcc/config/frv/frvend.c
  37039f6a001bb2d464cba17df5c91808  libgcc/config/frv/lib1funcs.S
*************** c2af6ac233b241e8db0c62d85e2d91b5  libgcc
*** 80529,80535 ****
  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
--- 80984,80990 ----
  13e7cf1a83e45c2ca50e986127ae50de  libgcc/config/i386/cygming-crtbegin.c
  5b80ffdfb3f3683c17ea577dabd7d4ca  libgcc/config/i386/cygming-crtend.c
  a018d6f4231e7b2380403999dcc402d9  libgcc/config/i386/cygwin.S
! 6f21745bb063a35ece3dda4ea225500f  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
*************** b770de7172bef0602781f07ad25c08cc  libgcc
*** 80540,80547 ****
  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
--- 80995,81001 ----
  efba01dc186d85cce4dc435aad7b2021  libgcc/config/i386/i386-asm.h
  f37bb0a6917353616c4026fac958f6bc  libgcc/config/i386/libgcc-bsd.ver
  559b3227d15bf87b0f7d657183363d9f  libgcc/config/i386/libgcc-cygming.ver
! f4e6907efe8022d7d6833d82ba7e690a  libgcc/config/i386/libgcc-darwin.ver
  e0f54924bc5afc559b4b7b1830760a03  libgcc/config/i386/libgcc-glibc.ver
  232a64815a78cdb2c8d6e69651814692  libgcc/config/i386/libgcc-sol2.ver
  9852cf14f3a0d1238ee085b42ba0cc16  libgcc/config/i386/linux-unwind.h
*************** c648b3441acf03960443d5a3d1b7e4d7  libgcc
*** 80570,80576 ****
  c6afe173595c17ffb20e9c76a90f5158  libgcc/config/i386/t-crtstuff
  9bd719f83d655207581528ab5e7b7354  libgcc/config/i386/t-cygming
  a56b9c84f7b8c5427982b9c1ac4d0268  libgcc/config/i386/t-cygwin
! cf50005afc3de52e15cbcb0af41fd862  libgcc/config/i386/t-darwin
  2005c91878a4a69d60c9418077eefa97  libgcc/config/i386/t-dlldir
  0a87d076e42adda36ab55bbaaac59649  libgcc/config/i386/t-dlldir-x
  68adad1226ee1737a6a8d12b84a63297  libgcc/config/i386/t-dragonfly
--- 81024,81030 ----
  c6afe173595c17ffb20e9c76a90f5158  libgcc/config/i386/t-crtstuff
  9bd719f83d655207581528ab5e7b7354  libgcc/config/i386/t-cygming
  a56b9c84f7b8c5427982b9c1ac4d0268  libgcc/config/i386/t-cygwin
! ab24e8c90feb5a86f9ff59988a9bcc43  libgcc/config/i386/t-darwin
  2005c91878a4a69d60c9418077eefa97  libgcc/config/i386/t-dlldir
  0a87d076e42adda36ab55bbaaac59649  libgcc/config/i386/t-dlldir-x
  68adad1226ee1737a6a8d12b84a63297  libgcc/config/i386/t-dragonfly
*************** e5387e909a3b29458cfdda0150e1f8f6  libgcc
*** 80588,80594 ****
  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
--- 81042,81048 ----
  7f83cb5269303d6f2bc8693886cfecc2  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! 2b9f2f39198cfad630f63b51e2d1a644  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
*************** c24f5e234b0091e469960bc984cb63ac  libgcc
*** 80625,80631 ****
  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
--- 81079,81085 ----
  3de7511560ec0cd082bc9f166d77732e  libgcc/config/ia64/vms-unwind.h
  739fa1e99eaa1be947f9160810ba8342  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! 6c4f662a7e7df8574207d177f723eadb  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
*************** dfcd1285e8e3c0995540d17b99d0af50  libgcc
*** 80783,80789 ****
  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
--- 81237,81243 ----
  a72972475ced31ac9f03f6f485e82753  libgcc/config/libbid/bid_round.c
  36d3272aa8b3f911e8bb7c40f65253ff  libgcc/config/libbid/bid_sqrt_macros.h
  771691dea4962cd9e547d6f10beb9643  libgcc/config/libgcc-glibc.ver
! a5b43383f528298ff2dc85061452e1e6  libgcc/config/libgcc-libsystem.ver
  29264a23a84d57604b825bd840c53359  libgcc/config/lm32/_ashlsi3.S
  1475d52aa5300ccf1f56a62e9fd6b2b3  libgcc/config/lm32/_ashrsi3.S
  6dc0945f21c02f1684fd827f0e671724  libgcc/config/lm32/_divsi3.c
*************** bae0e3b81bed9e3ea4b31a52d222e907  libgcc
*** 81168,81183 ****
  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
! 5877d503fb8e674ccd8cb10023bc7de9  libgcc/config/pa/t-linux64
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-netbsd
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
--- 81622,81637 ----
  4e40855b502b8de52bf9926fd288a5cd  libgcc/config/pa/gthr-dce.h
  9f2f9b8eed5bf08bc41bb432f57302cc  libgcc/config/pa/hpux-unwind.h
  127de4650e51cbea337ea5619d8b1c4e  libgcc/config/pa/lib2funcs.S
! d41709222a606cad9acdda8a35f6b7b7  libgcc/config/pa/linux-atomic.c
  7957df77a936b69a54cfa6af5a903473  libgcc/config/pa/linux-unwind.h
  e76e2ff7a903fa19d67a6470547b6a1b  libgcc/config/pa/milli64.S
! 66fa23b5cb9a61484d556513ec8b1f45  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
! 8b6e1d4848a895dd9e8e030f638c68bc  libgcc/config/pa/t-linux64
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-netbsd
  3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
*************** e616799e792b120d6a774b9f6bf6fa48  libgcc
*** 81306,81317 ****
  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
--- 81760,81769 ----
  332eb1d6f310c56360dc5745efec7a77  libgcc/config/rs6000/ibm-ldouble-format
  8d944f91915e7c2d5fe3becce1638a91  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
  1bde2006a0e00257bde24aaab57e46c4  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
  425f6122379f6fcd2b36bff1675a5f8e  libgcc/config/rs6000/linux-unwind.h
! d5e96f510a362432ef2a4c67261331eb  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
*************** d369e4d411337e76ab7f3962f18daaf8  libgcc
*** 81321,81327 ****
  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
--- 81773,81780 ----
  7a016ac4b0377f21c143b16228e9d317  libgcc/config/rs6000/sol-cn.S
  8e65197842ba39fd658038728475e572  libgcc/config/rs6000/t-aix-cxa
  0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
! b780b81d7bccdf7af090dbcd3e639dd1  libgcc/config/rs6000/t-darwin
! a8ea28c94f3264c3602a98b4728fed82  libgcc/config/rs6000/t-darwin-ehs
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-darwin64
  19d31beebe5294cd8c5cfcc24238491a  libgcc/config/rs6000/t-e500v1-fp
  39fa5d059c21ba3069a744705b18a95b  libgcc/config/rs6000/t-e500v2-fp
*************** ea267a427a7598d5070e338c8995363d  libgcc
*** 81330,81336 ****
  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
--- 81783,81789 ----
  bb5a49088ec4a03d7ac246928b5601eb  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
  d7a240410399b38f142973a475855f0b  libgcc/config/rs6000/t-ppc64-fp
*************** bd7ceb31787a37d9cb144c41d41acfb3  libgcc
*** 81338,81344 ****
  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
--- 81791,81797 ----
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
  0f9c718a98e81cd57e33ab3d77c56464  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
! ee3462920a39ffcb439cbe1186a0ed15  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
*************** ada9a39786da3b2e999f7440a17a1ed7  libgcc
*** 81415,81421 ****
  7f567bcd22705a965e07f79e8f68ebaa  libgcc/config/stormy16/umodsi3.c
  f199b38114ce849b77b38bd475d72cff  libgcc/config/t-crtfm
  060a49bb5c4a53a2125123d4cbd571de  libgcc/config/t-crtstuff-pic
! 7fec96c04b71be88732732651ac5dd37  libgcc/config/t-darwin
  ee7ad6460936fc6f3f89ecb711376477  libgcc/config/t-dfprules
  d747115cbcc2bd56b6b4f73c350c2ae3  libgcc/config/t-eh-dw2-dip
  b9d08c1cbead9131f216accd515ec32c  libgcc/config/t-fdpbit
--- 81868,81875 ----
  7f567bcd22705a965e07f79e8f68ebaa  libgcc/config/stormy16/umodsi3.c
  f199b38114ce849b77b38bd475d72cff  libgcc/config/t-crtfm
  060a49bb5c4a53a2125123d4cbd571de  libgcc/config/t-crtstuff-pic
! 06e78a9599e0fde8f283aa4d9bed8e2e  libgcc/config/t-darwin
! f699f9e7159ba2c6033406086c5c8299  libgcc/config/t-darwin-ehs
  ee7ad6460936fc6f3f89ecb711376477  libgcc/config/t-dfprules
  d747115cbcc2bd56b6b4f73c350c2ae3  libgcc/config/t-eh-dw2-dip
  b9d08c1cbead9131f216accd515ec32c  libgcc/config/t-fdpbit
*************** fb114fc474e86040a446fa90766e8f56  libgcc
*** 81435,81441 ****
  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
--- 81889,81895 ----
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
  c719c44114540927ecf2555f7fb8475b  libgcc/config/t-slibgcc
! 3ecc4173a1b262e4770c789455b2cfc9  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
  fa4305a341c2d0a5f01867ee0abe6504  libgcc/config/t-slibgcc-fuchsia
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
*************** bd20a75c04c3d464a4bbc5e46bb2cb78  libgcc
*** 81515,81521 ****
  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
--- 81969,81975 ----
  8b618d977037b466adbb35cc2dbc7390  libgcc/dfp-bit.h
  70e35fcf38774880a1f8ce9ec374010a  libgcc/divmod.c
  b9a5bcda72f7b8809010f38227353353  libgcc/empty.mk
! 09604821cac90ac9f9178b43b1f3dede  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
  59d0496c2f30b6f393ecd222b8e6217e  libgcc/enable-execute-stack-mprotect.c
  2315effafb20b5d624da6c51805ea66a  libgcc/find-symver.awk
*************** aefd60a1c8d6ffbb7ec97e35dee710d4  libgcc
*** 81672,81678 ****
  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
--- 82126,82132 ----
  f36482a521eea94524c15eaa0859e473  libgcc/vtv_end_preinit.c
  9b5f2df98cbfd1de5a6f0f09efb80101  libgcc/vtv_start.c
  e0c401f31054829f53b8a41ab55218cf  libgcc/vtv_start_preinit.c
! 0ed3be323d5ebb256b1d76c647ec3c8b  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** a67597f8b08b68f6accc0fdf08ef5e37  libgfo
*** 82360,82366 ****
  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
--- 82814,82820 ----
  bef28a78705c4e4786893e7d415aba17  libgfortran/intrinsics/link.c
  985d3bd645a21cbd4c5a2d02ed8826a4  libgfortran/intrinsics/move_alloc.c
  20aff61579429eb89792728fe5175714  libgfortran/intrinsics/mvbits.c
! fb336b8f0288246c3c493a4f5bf05001  libgfortran/intrinsics/pack_generic.c
  89e269a44a32f47a1d2bf91045b80e3e  libgfortran/intrinsics/perror.c
  c095314693871598f7f50df0fc0b698e  libgfortran/intrinsics/rand.c
  0623ff528c71ac825ba6273a2ad51210  libgfortran/intrinsics/random.c
*************** e3e86019491a40bd4f45424d7ce11037  libgo/
*** 86911,86917 ****
  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
--- 87365,87371 ----
  c5574d106d35be5d94e80301b0855ada  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! b96c1b833d64846e2104d0ca8e8117f0  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  9fd2a1e7d1a539dbbc2d854e30b0e00b  libgomp/Makefile.am
  9feaf433a0fb58e0e870f28ff2115ecc  libgomp/Makefile.in
*************** f0d0b88d1514d82298d79624e788cc93  libgom
*** 86958,86964 ****
  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
--- 87412,87418 ----
  5f99e5552dd5cd3f86a21d26b9a7dd4d  libgomp/config/gcn/team.c
  7bcf001195b9c5df8bd155c123f43b5f  libgomp/config/gcn/time.c
  ff070289dda72e2da07b1099e9ca87cb  libgomp/config/hpux/plugin-suffix.h
! 45da455deb5e334f2d0b3a3c6b3b49d4  libgomp/config/linux/affinity.c
  0de780b287f3fab082f9d170c44d8244  libgomp/config/linux/alpha/futex.h
  248f3c6479eae55d879ad7910f81f634  libgomp/config/linux/bar.c
  c47c68032fc84ce49802bf55b6c66885  libgomp/config/linux/bar.h
*************** a63e35337d807f4e482e9f4a406dbed0  libgom
*** 86977,86983 ****
  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
--- 87431,87437 ----
  68c3a03a754cdb49c5b33d600c53fb0c  libgomp/config/linux/ptrlock.h
  bb8c6e45bb28878f41985f4a492d0f2e  libgomp/config/linux/s390/futex.h
  3db3135effc16c5f5a63210c846cdd6a  libgomp/config/linux/sem.c
! a0a3992ac8e982a967d951a75d20e4f2  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
*************** a975b1cf520505ee9be61620c216ea82  libgom
*** 87039,87045 ****
  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
--- 87493,87499 ----
  80bd3c31185cf94ee2e48201c6ace5f1  libgomp/libgomp-plugin.c
  a183f11abf5bcd0b728c89ba99706f53  libgomp/libgomp-plugin.h
  e2da9a5d3298e4acf757d3e0c8066adb  libgomp/libgomp.h
! 039bf2372e3e31416341efe82fff48d1  libgomp/libgomp.info
  4052732f79d134fd439c1b39aa83c0db  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
  0bf7d35e522085d8b7e5aa8f0efd6187  libgomp/libgomp.texi
*************** df937a07ca169a97f163c3997bda0dfa  libgom
*** 87083,87090 ****
  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
--- 87537,87544 ----
  ba124482fdc049e9a99041d9dd816bfa  libgomp/splay-tree.c
  d7583e2ad844cee8070dfaae09c5501b  libgomp/splay-tree.h
  889bc97e4b57775b1fc28108d9a80036  libgomp/target.c
! 2d8b34e61b530c870f0fb578ce5cc568  libgomp/task.c
! 4ae37fdf436d548031b3b31c4ed65e63  libgomp/taskloop.c
  143611e2f787d1ffe83f8912eded0919  libgomp/team.c
  d8605ac6c582f4457e119461358194f2  libgomp/teams.c
  e07f04fffd2f6276df2fbeca36cc3d91  libgomp/testsuite/Makefile.am
*************** dff7a676c5c7625a109dad1fb29c317d  libgom
*** 87413,87418 ****
--- 87867,87877 ----
  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
+ aa27b099930bc5b5e07e143f2ff6fedc  libgomp/testsuite/libgomp.c-c++-common/pr94366.c
+ 2d2748b0be4d42cf748c994d23973c0d  libgomp/testsuite/libgomp.c-c++-common/reduction-1.c
+ 0da0ce29b808834888fc9c79f55a6f40  libgomp/testsuite/libgomp.c-c++-common/reduction-2.c
+ e453d108664fa547feb3b13c881be597  libgomp/testsuite/libgomp.c-c++-common/reduction-3.c
+ 5fb06d4bdb476173a92277c8e950d55c  libgomp/testsuite/libgomp.c-c++-common/reduction-4.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
*************** e590f10fae9bf053ed7123777b03bf32  libgom
*** 87427,87432 ****
--- 87886,87892 ----
  23584c2b5e72b0f66678ce4ada7296dd  libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c
  e4f419faa09d744436aad29d88eb43cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-13.c
  d284915ed4a4ac417bfb2b7632453bec  libgomp/testsuite/libgomp.c-c++-common/task-reduction-14.c
+ 9c603541ce46d78d4526034634edb381  libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c
  47acc8ff8c516165766737c2f13be4cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-2.c
  33b998ac8605f9aab9808c883f2e85eb  libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c
  5ab2e1d3a94c19b612a71f802938e9d8  libgomp/testsuite/libgomp.c-c++-common/task-reduction-4.c
*************** a0864a470dcfab5610654831f9ec1740  libgom
*** 87504,87509 ****
--- 87964,87970 ----
  4dd2cfb516bf87f648a7200fcbe97240  libgomp/testsuite/libgomp.c/critical-1.c
  1cca2a92d0182ae3c650964de6d87d0a  libgomp/testsuite/libgomp.c/critical-2.c
  b5604fce8e01b4e305a8c0a4563d1aa9  libgomp/testsuite/libgomp.c/debug-1.c
+ 6d6b0531c9f74483e6111b636da2edf2  libgomp/testsuite/libgomp.c/declare-variant-2.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
*************** bb5f1add3b172a6350a63ac4065e26ec  libgom
*** 87621,87626 ****
--- 88082,88091 ----
  ecc1971bfd0bc04115af17ac694a0431  libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-6.c
  f6ff904d877753394a1482a595ff74d0  libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt-7.c
  e2af3bc3621d7e03158bdd391ec72c47  libgomp/testsuite/libgomp.c/parloops-exit-first-loop-alt.c
+ ebdfdc0bfc1675a26f73ba66329d6e75  libgomp/testsuite/libgomp.c/places-6.c
+ dce925481bd33e4b6155a992941a2741  libgomp/testsuite/libgomp.c/places-7.c
+ 033508b78702497acf629bd938d3000c  libgomp/testsuite/libgomp.c/places-8.c
+ bb57a9ccf51a738ab2985a513801a658  libgomp/testsuite/libgomp.c/pr104385.c
  c522146f1617da47efbc34dedb563f61  libgomp/testsuite/libgomp.c/pr24455-1.c
  4d9e31cef64ff399334db6c29e3a07db  libgomp/testsuite/libgomp.c/pr24455.c
  5f9c41745fbf27e0d2ca8e182c9ff34f  libgomp/testsuite/libgomp.c/pr26171.c
*************** d4661425a651c88d20ba240b4b095d25  libgom
*** 87798,87803 ****
--- 88263,88269 ----
  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
+ 3b961187e4321fe4d1a657f3f6963089  libgomp/testsuite/libgomp.c/task-reduction-4.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
*************** f7a9b184b1fef89d4ba1d7e2bfcef9c5  libgom
*** 88210,88215 ****
--- 88676,88682 ----
  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
+ 03002b54364bab48fc94fae621d99c74  libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.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
--- 88684,88691 ----
  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
*************** bfb8a1981f65bf0f6f7e7ceffe50d12f  libgom
*** 88514,88519 ****
--- 88981,88987 ----
  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
*************** e8a3245c095430c8ef2413afe2ee4c48  libgom
*** 88767,88773 ****
  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
--- 89235,89241 ----
  1ee538b1d8c3361fa5c71fc8cac2aa7a  libgomp/testsuite/libgomp.oacc-fortran/update-2.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
  ba7b24b7084a24f7eeb9edb6a47f3dee  libgomp/work.c
! e2c6e0e7bb514928f9b673c1c5a8feea  libhsail-rt/ChangeLog
  9147b482b39962a71e580b4a8265285e  libhsail-rt/Makefile.am
  f63e3c959c7490f1fbe708067e4884ae  libhsail-rt/Makefile.in
  de97a355fadb5753d182cbcf06b1b33a  libhsail-rt/README
*************** d3cb42f0affccdc8401528fdfd1f5b65  libhsa
*** 88794,88800 ****
  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
--- 89262,89268 ----
  ef9f05873915c22cae79ef5545355353  libhsail-rt/target-config.h.in
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! bccc686ae654a8b3efb46c1b10f67b47  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
  a3ef253370857a89895181e5431a20e3  libiberty/Makefile.in
  c68dbf7834af4281ebd84caa3fd54680  libiberty/README
*************** c490c2d0e84347da40a272a019f71dd4  libibe
*** 88821,88828 ****
  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
--- 89289,89296 ----
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! e39698f5881bf943412a740253892c06  libiberty/configure
! 423e7dc3ca53e7cdcd7973222df00866  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
  32e36ace2011f801ed41c55aafe01dfa  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
*************** aff91d7b9a881699df694ae4643d01a9  libibe
*** 88900,88907 ****
  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
--- 89368,89375 ----
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
  b89abf26a0a5df30dffc8b7c01988119  libiberty/simple-object-coff.c
  68f1ec6282a2e9e4562f75413268ff74  libiberty/simple-object-common.h
! 5145da2ccd629931fd9f0eb93ba6bf1b  libiberty/simple-object-elf.c
! 6fb37fbef0415050e2bc7d26ee2e667e  libiberty/simple-object-mach-o.c
  4bce08f9c3170d230e9b6ce841a4f1c7  libiberty/simple-object-xcoff.c
  4f75ce2d9c575d2d57c58be929d9f3b9  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
*************** c34f8049b6d30b9b002ba3f30d51fa35  libibe
*** 88953,88965 ****
  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
--- 89421,89433 ----
  08b71dbfa12258887769aaf51b19938d  libiberty/xasprintf.c
  f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
  385d92cff72e33b64a6963b9eab5d055  libiberty/xexit.c
! 56149f25d538251f423a582d4bbb119b  libiberty/xmalloc.c
  b2c289eb14e9197dcad172f3acba12b7  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
  2854fd878740d7ea0f0c5ba34f695362  libiberty/xstrndup.c
  00ce7121672e7f540abedae54264e8e1  libiberty/xvasprintf.c
! 569646f2287ffc355a378a9f9b10070e  libitm/ChangeLog
  a9df0726c501bf71a46f426068e8fc9f  libitm/Makefile.am
  06bb67375770bbbe550b5708624ed9d8  libitm/Makefile.in
  3688bb99bcb94998fd633eabeeebd40f  libitm/aatree.cc
*************** e0895f41a052b6e450b75a65de82aff1  libitm
*** 88998,89004 ****
  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
--- 89466,89472 ----
  bb0f24579fd73331ba9b3ffc98b7e5aa  libitm/config/linux/x86/tls.h
  7d14b0626ac01df536ec8b3642f72963  libitm/config/posix/rwlock.cc
  9827e61ea43a0bede67eeb9cab5990e4  libitm/config/posix/rwlock.h
! 9fab19e8c9fbb885ad3ee9625595349f  libitm/config/powerpc/sjlj.S
  53c92c666b4deb8028f14da3b957888e  libitm/config/powerpc/target.h
  3fe4202ec986a79750e71985781b87aa  libitm/config/s390/sjlj.S
  d91073af6346537202e0a01c374c25a9  libitm/config/s390/target.h
*************** a878bfd544991c9b1f0f2f5b39e8ca23  libitm
*** 89017,89023 ****
  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
--- 89485,89491 ----
  767a0f12cfa1b6ac5a7c058fcb704dc4  libitm/dispatch.h
  0011a3c9a726269021c8d5adcbffc2e5  libitm/eh_cpp.cc
  91636819710989afcfb9423bebd8d9b6  libitm/libitm.h
! 6128b2247c7738011cfe6053e3c07ce4  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
  d2826737d965aaa637712f0fe8f7f0ec  libitm/libitm.texi
*************** d806946f2845368f69a6513f60b085d2  libitm
*** 89041,89046 ****
--- 89509,89515 ----
  91cf9385a1c485d36423dd97fa7f8ee8  libitm/testsuite/libitm.c++/eh-3.C
  256c6fe0360dd29b0e0f860df34fd80f  libitm/testsuite/libitm.c++/eh-4.C
  78880866c8226c142c56854532c6bf03  libitm/testsuite/libitm.c++/eh-5.C
+ 4b3393a4ac1f5114158bc59fb8ab7f8d  libitm/testsuite/libitm.c++/libstdc++-pr91488.C
  ff5f9bdfec617e402860345005b63f97  libitm/testsuite/libitm.c++/libstdc++-safeexc.C
  122b07c4b16d0260ff244aa4b2d8f115  libitm/testsuite/libitm.c++/newdelete.C
  2742ff75bdd09e5d7b7a8243faf7a139  libitm/testsuite/libitm.c++/static_ctor.C
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 89062,89068 ****
  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
--- 89531,89537 ----
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
  bc16054ebacc75aa7800d984c09e69df  libitm/useraction.cc
  73b31e65f4454e0d3684afca18e8be62  libitm/util.cc
! 99e7a5a3ac4028cc449acaf0850f4e56  libobjc/ChangeLog
  9d4f4158c2e1e11d5b0fbb824d28cb49  libobjc/Makefile.in
  5d2db5fdd28bd269de26be0cffc1dfc5  libobjc/NXConstStr.m
  f7220a0d5e4ece5d5f47b88a837d818e  libobjc/Object.m
*************** a8ec801c9883d227d37816356bdc7327  libobj
*** 89119,89125 ****
  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
--- 89588,89594 ----
  b260ef0ddaeec837196c8e6104dbfb65  libobjc/selector.c
  9bb351bbc1b307b03d3089874e1011a8  libobjc/sendmsg.c
  1ab3f79e5cb7359150b4c5d0feb93d62  libobjc/thr.c
! ded9464bf4b734c25c04796b6761fdfc  liboffloadmic/ChangeLog
  99e2b0817f42c602b520261f7dee183b  liboffloadmic/Makefile.am
  a64a74f82774f355013471ad4dbe5014  liboffloadmic/Makefile.in
  ab5ae12a0dda7edadc0bd2be40ccff6a  liboffloadmic/aclocal.m4
*************** b1def68202639bd452fb59aea3371fe4  liboff
*** 89207,89213 ****
  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
--- 89676,89682 ----
  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
! e52cd039c8df31649d5cf4b449bdb20f  libphobos/ChangeLog
  c0cf15c8749b27e8cbddf4b7a0624410  libphobos/Makefile.am
  7ad7ee1e1bf5ae832c27808640f7d8fb  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
*************** ff135cbdf5b61276c8be5193a585bee0  libpho
*** 89424,89430 ****
  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
--- 89893,89899 ----
  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
! bd35ee67d2cdafba74e6d03d8f84347e  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
*************** d6b7c67683234af6a273a3d4932e52c0  libpho
*** 89620,89626 ****
  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
--- 90089,90095 ----
  94e213795f0244ed44436cc14a492878  libphobos/libdruntime/core/sys/windows/winver.d
  8cfe1bcb2d08a1c1050784203bc4acf8  libphobos/libdruntime/core/sys/windows/wtsapi32.d
  bb4907e2b3535906de488fabe923e5b2  libphobos/libdruntime/core/sys/windows/wtypes.d
! 60b33daf49d142f6c3c72b1f6f9be86b  libphobos/libdruntime/core/thread.d
  2adf057be60160bf656c8cc794855f90  libphobos/libdruntime/core/time.d
  9f7991cc24708bb5b0c59949d94645ea  libphobos/libdruntime/core/vararg.d
  6f76ee818b90e0f22edc13f0fb8a42d4  libphobos/libdruntime/gc/bits.d
*************** f935018d2e1b9673ff79cd99976f9b44  libpho
*** 89637,89643 ****
  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
--- 90106,90112 ----
  3eee50515716d185f586376f65e510de  libphobos/libdruntime/gcc/config.d.in
  8cbded4b2f28a0af2f7f5b83a7d4193d  libphobos/libdruntime/gcc/deh.d
  495a4bf9370380919715a95c243b37ba  libphobos/libdruntime/gcc/drtstuff.c
! e74c3c95ebd983ce9bd6c9e854cecc85  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
*************** e18c906ce994ca0cd593e448b5c0e9fb  libpho
*** 89649,89655 ****
  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
--- 90118,90124 ----
  d9083f2c5922f7740ee67c8257b7aa52  libphobos/libdruntime/gcc/unwind/arm.d
  ee20343ae615ce04477254bd066cde0c  libphobos/libdruntime/gcc/unwind/arm_common.d
  4a7957d4f04cff22f99b1112224a98e3  libphobos/libdruntime/gcc/unwind/c6x.d
! 695ae6a7a60a164d96f9bbc00a08665f  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
*************** da34a709cc539e4cd81f4100d93b17c9  libpho
*** 89861,89867 ****
  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
--- 90330,90336 ----
  085d44aff64496b59aa3e7a785af5074  libphobos/src/std/string.d
  174fcd8c187f1e134773b4439e9d5ef4  libphobos/src/std/system.d
  7ec31ac728ed4fdf60d84e5c1e139b6c  libphobos/src/std/traits.d
! 2d35fc78a2259d91cdef5f98ed71edb2  libphobos/src/std/typecons.d
  0c2864a8173de711ac1c1085e4f321cf  libphobos/src/std/typetuple.d
  e0069a8fdebf24d2689b2648a6fa8248  libphobos/src/std/uni.d
  87e90859aa6919e3023e8671040966c8  libphobos/src/std/uri.d
*************** d6d76c43d490a2c9d8addee8eee021b8  libpho
*** 89934,89940 ****
  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
--- 90403,90409 ----
  35a8e616fdcbacb81b4451aafb732c93  libphobos/testsuite/libphobos.typeinfo/typeinfo.exp
  9e301017360325e39a83c6b15962800a  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! f215f7fe7695e5d95b87b4584154033c  libquadmath/ChangeLog
  4696eddf264dd090e144b4849b0a6d91  libquadmath/Makefile.am
  644a78a01d94abe28b364eaa21142d82  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
*************** d9afbc1f1e04c7e461265ff9323cc6f4  libqua
*** 89942,89948 ****
  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
--- 90411,90417 ----
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
  75e633e311f438dd649acfd4008abd14  libquadmath/configure
  279cb151e8c43d5af048eb1a9608a435  libquadmath/configure.ac
! 74926f41c615e899b66a07e24300190a  libquadmath/libquadmath.info
  8442a7234a31a9e0c384bc6376ae9724  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
*************** a81cc82679e80c86cfbd5575867450d0  libqua
*** 90074,90080 ****
  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
--- 90543,90549 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! a9a91907aa530e4bacbba62e746ba8ba  libsanitizer/ChangeLog
  0e35a2dc2727acc707a3f5ead45c8e12  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  214b34d29a767814ebb2e1fc47be8b55  libsanitizer/LOCAL_PATCHES
*************** e76971c65fe600d5e331d559547434ff  libsan
*** 90116,90122 ****
  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
--- 90585,90591 ----
  ba18948445a6421426074cad1524ae2b  libsanitizer/asan/asan_linux.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/asan/asan_lock.h
  25bf567526eee32aa3b086c0d00951e2  libsanitizer/asan/asan_mac.cpp
! bf635297c57364f7094ec893f9324705  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
*************** cb99c43b0c583e8a8ba1866782497653  libsan
*** 90247,90253 ****
  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
--- 90716,90722 ----
  c7dc2218df2ca81b648ada3c38723d1c  libsanitizer/sanitizer_common/sanitizer_common.h
  6419dda19e4aa8a589434574e0416d00  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
  41c5a0a4c2f4f5dd93b441c75bb81713  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
! 885355959681eb26e2e80da24e0b061f  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
*************** be27216b0433f97b8e2267da04e648ad  libsan
*** 90295,90301 ****
  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
--- 90764,90770 ----
  85b7de59b8c28ea298343b8a275f5943  libsanitizer/sanitizer_common/sanitizer_libignore.h
  51b260a51395ae6686ecb148d5da7bf3  libsanitizer/sanitizer_common/sanitizer_linux.cpp
  e9563a01104e26ad607a73bc8361b183  libsanitizer/sanitizer_common/sanitizer_linux.h
! 445729bf480304e7fe30af52fc293500  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
*************** d2bf2d24145b87281fed9790d72e64fb  libsan
*** 90318,90330 ****
  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
--- 90787,90799 ----
  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
! fc1df6b95c43bc8e6f2d39099d322f11  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! 25f5260cb615823da4467e930f2c8c68  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
! f24bb8aff52bccd25d4f6f3357882253  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
*************** cabf4d60cc2e457091514cb4f2237bbd  libsan
*** 90494,90500 ****
  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
--- 90963,90969 ----
  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
! c81071dbe26dfb7935a3beadd3fe159d  libssp/ChangeLog
  587c237b1073b8be40a1975c86d0ce01  libssp/Makefile.am
  b56958cdc5828ca811c35bbf479b3a09  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
*************** a8291ec60d5058c6b652ad3948ba88f2  libssp
*** 90523,90529 ****
  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
--- 90992,90998 ----
  b7a581dfcf315a2215d8792224b15ba4  libssp/strncpy-chk.c
  4720732375196e3834d0dc2a4ccd4678  libssp/vsnprintf-chk.c
  c67bcbd0e33f52512fa906f33a6ad93c  libssp/vsprintf-chk.c
! ad95d6ac06fb29673fe5570daba8643e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** e19bdce64f0ddc202e2857a54f4b5331  libstd
*** 90586,90594 ****
  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
--- 91055,91063 ----
  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
! 9fecb707ab0229ee19645d33dde46efe  libstdc++-v3/config/allocator/malloc_allocator_base.h
  500679d8db432a93a506e32a75ffb4f1  libstdc++-v3/config/allocator/mt_allocator_base.h
! e0dbbab182901f001772db85b89518a7  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
*************** ca3e62817fc4c45c6f1e23e555fbbab1  libstd
*** 90756,90762 ****
  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
--- 91225,91231 ----
  c68ff21babfa14f20b98e36a2c808418  libstdc++-v3/doc/html/api.html
  fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! f8da0f34d5632ef2fa41bc24b870c7ca  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
*************** d6e655afa90caf559aa77ae772faf5dc  libstd
*** 90918,90928 ****
  dc012f6bbeb24332ca023dc15d6da9cf  libstdc++-v3/doc/html/manual/profile_mode_devel.html
  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
--- 91387,91397 ----
  dc012f6bbeb24332ca023dc15d6da9cf  libstdc++-v3/doc/html/manual/profile_mode_devel.html
  d55e182adbf08772ec85b18d390b0dbb  libstdc++-v3/doc/html/manual/profile_mode_diagnostics.html
  0e9a02c563561ad32d5b24fd930bf8f5  libstdc++-v3/doc/html/manual/profile_mode_impl.html
! ffceba0f3c20f451f9753c101c0fa634  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
! 1a41f62004189fd0779ab46db69f04f2  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
*************** ccbc0492a648982f2dc225595bdbc567  libstd
*** 90946,90952 ****
  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
--- 91415,91421 ----
  f5a41d4f7585b850b3182fc5f4888f93  libstdc++-v3/doc/xml/book.txml
  95d1335e76860d53246f3e400231ec38  libstdc++-v3/doc/xml/chapter.txml
  7f8c520dc83013026c671c5c342f73e2  libstdc++-v3/doc/xml/class.txml
! 7d8d34a0a2914fc2d055aefb1f805e97  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
*************** c1e74618e099a0a26f35c653a9d49971  libstd
*** 91150,91156 ****
  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
--- 91619,91625 ----
  fca17d234bdc033e9e27285ab9c84b4b  libstdc++-v3/doc/xml/manual/evolution.xml
  14742e66a2ac01343ef60e87d06d05ff  libstdc++-v3/doc/xml/manual/extensions.xml
  26083dec441281888a23365de5567180  libstdc++-v3/doc/xml/manual/internals.xml
! 9e3bc83dd5e6e039ede33f797fb40e33  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
*************** bab548248426e0e90cdc1436ff5b87de  libstd
*** 91161,91177 ****
  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
--- 91630,91646 ----
  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
! ee6d5b2bc3741b3e049dc335f2c25284  libstdc++-v3/doc/xml/manual/prerequisites.xml
  d006612b2e21ab181c25bc88697b4543  libstdc++-v3/doc/xml/manual/shared_ptr.xml
  4973f5115dccc7a4572777a094cc60e8  libstdc++-v3/doc/xml/manual/spine.xml
! 6043d036e7b64486d97bce2607a3236c  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! ff64342bfa017d4722f15a35e800f076  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! 2de777c1edabc6676dcd7eb0a6604326  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! a983260fa3c4e2e0976b9478f23a9c96  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! 3b718f68c92ad4814398744144491473  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
  3c72998c4574690fac280c058a0db757  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! b218e507aeb945ae013c6216045f14d4  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! f3140137e80134f89c0995cee1b29aaf  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  libstd
*** 91182,91189 ****
  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
--- 91651,91658 ----
  a8f0003856ec916712e8abaddf746a77  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  7bb72420e699e194cf6066457cb6d6a5  libstdc++-v3/fragment.am
! c0f9573af94f62fd17bf64d9e33719c6  libstdc++-v3/include/Makefile.am
! 769f3a275b75b125f2d8b6a9a70cf9ef  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
*************** e9d9de6c23151ac554374a0970563bb2  libstd
*** 91193,91211 ****
  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
--- 91662,91680 ----
  731cf5f8704ce341c5318809596bf4f5  libstdc++-v3/include/backward/hashtable.h
  d3328a672a039bfd90d67d6b15cffeae  libstdc++-v3/include/backward/strstream
  406cf930d32ea9b24a3b38d611591da3  libstdc++-v3/include/bits/algorithmfwd.h
! d1755671e4b692aee1f4a46925d90141  libstdc++-v3/include/bits/alloc_traits.h
  f43e89e976a1e5bd6e7ac6fc5d5b2e6f  libstdc++-v3/include/bits/allocated_ptr.h
! b855ec2ec31abb87e9cef98ffb145a48  libstdc++-v3/include/bits/allocator.h
! 6ee962c3bbdb79ddc10ddf35a5ecc315  libstdc++-v3/include/bits/atomic_base.h
  92c45df4ca56d697729ec08344786fda  libstdc++-v3/include/bits/atomic_futex.h
! 55b12bb7cb7eebbde7d7ee564b752870  libstdc++-v3/include/bits/basic_ios.h
  e02561e847871b3c2e564e770d38dd91  libstdc++-v3/include/bits/basic_ios.tcc
! 4bf05b057e19a25caabac70a832e0900  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
! 9c91bb239aef5e0c46d07aaad2939ab5  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  libstd
*** 91213,91248 ****
  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
--- 91682,91717 ----
  f563980ab088b6c6785672b3e8691ef1  libstdc++-v3/include/bits/deque.tcc
  9abeeba07316d16042e907dfe04e27b1  libstdc++-v3/include/bits/enable_special_members.h
  184d8cdc779212e99b204322e504121e  libstdc++-v3/include/bits/erase_if.h
! d27802ff0f98ec6d7d75defdbadafdf1  libstdc++-v3/include/bits/forward_list.h
! 838056aa43ff8eff86336f00ae28dc29  libstdc++-v3/include/bits/forward_list.tcc
! 556b2f94404e66c119a7ad397aa4b614  libstdc++-v3/include/bits/fs_dir.h
! af0f1aba7930a95736ae0bbadc6bf2db  libstdc++-v3/include/bits/fs_fwd.h
! 29c11f7e70d67fe804809aaf9c97cfe7  libstdc++-v3/include/bits/fs_ops.h
! fd8d70f0ef1d258dad26708011e525ec  libstdc++-v3/include/bits/fs_path.h
  22ff14d1a36511441f5a67a1abe47856  libstdc++-v3/include/bits/fstream.tcc
  9769ec5cf1d70f5d388572a69a3a88d5  libstdc++-v3/include/bits/functexcept.h
! 0c6dbf801e218a9215ed73bf2a9f72a2  libstdc++-v3/include/bits/functional_hash.h
! f0068dbef0ebc56ffae5652b6064f420  libstdc++-v3/include/bits/gslice.h
! c56b5968917762b750c5c3803221ffe9  libstdc++-v3/include/bits/gslice_array.h
! 947bd93feb1720a9b5185c6abfedba17  libstdc++-v3/include/bits/hashtable.h
! bb29dabfdbd8a2092a023e4614908c2d  libstdc++-v3/include/bits/hashtable_policy.h
! e1d6ec24244158a9f2776a8628955317  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
! 77de7ac74ec409d536ff19bd440c4411  libstdc++-v3/include/bits/iterator_concepts.h
  5e1af8238a7182366476acc7c95f6cb9  libstdc++-v3/include/bits/list.tcc
! 120cce3cf9c42fc21d3311bfb091f538  libstdc++-v3/include/bits/locale_classes.h
  1a4d19df3be9b714847a5e438ba25b3b  libstdc++-v3/include/bits/locale_classes.tcc
  c4fed2b5b4879837686150624f51ddbc  libstdc++-v3/include/bits/locale_conv.h
! 23378ea0b8603307ca38123cffcc9309  libstdc++-v3/include/bits/locale_facets.h
  ad3726c17e8e10e80b100401ec35a07c  libstdc++-v3/include/bits/locale_facets.tcc
! 3213b72bb6b5dcc587d72a81f7937bce  libstdc++-v3/include/bits/locale_facets_nonio.h
  a3cf6cabd7bdaee154cafa2c88aede3a  libstdc++-v3/include/bits/locale_facets_nonio.tcc
  756fbe1353340b4e7cae5d8a93132788  libstdc++-v3/include/bits/localefwd.h
! 480b0beba1f5529acd192ffe964fdd82  libstdc++-v3/include/bits/mask_array.h
! b3ac8f248c9d88c5e616eb3275077b80  libstdc++-v3/include/bits/memoryfwd.h
! bfe6db802b03cdca43b4360bcf8b5be7  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
*************** e1cc5c2a4400aeb3ea5a2e0c66399709  libstd
*** 91251,91326 ****
  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
--- 91720,91795 ----
  2fcd48b0681ba342cff50c3cbca9875c  libstdc++-v3/include/bits/predefined_ops.h
  b6673c70044c63dc76561b464a4c6e28  libstdc++-v3/include/bits/ptr_traits.h
  c1dbfdcef6bb8952176db50e5956f3f0  libstdc++-v3/include/bits/quoted_string.h
! 715337d5eaa307b9b51ebb60a4e6fe04  libstdc++-v3/include/bits/random.h
! 891e4ae0ae0106f7bfdb7a0c6e2a6cf6  libstdc++-v3/include/bits/random.tcc
! b5abbb3cb59db8cc75504ce491cda56b  libstdc++-v3/include/bits/range_access.h
  98ddc447ed23629cfe71a497dd38cc0a  libstdc++-v3/include/bits/range_cmp.h
! d4aca81ccc4482f066764310c4f1ef15  libstdc++-v3/include/bits/ranges_algo.h
! d47d05fc4ee976d40c5901730e4e5283  libstdc++-v3/include/bits/ranges_algobase.h
! 9359674d91413bb86cab3df1fee00aa7  libstdc++-v3/include/bits/ranges_uninitialized.h
! 2b83e058f8d0793df437d0a6d422c974  libstdc++-v3/include/bits/refwrap.h
! 5a3f7431075fbcacaccf9ac19e4f3791  libstdc++-v3/include/bits/regex.h
  f23ad4b66e11fbf0102e9bb997345693  libstdc++-v3/include/bits/regex.tcc
! d566c247041097c6045c8796de365631  libstdc++-v3/include/bits/regex_automaton.h
  ec658fb588ddb17f4f5d56f054a2120b  libstdc++-v3/include/bits/regex_automaton.tcc
! 0c770629fb4ee30877ee168fc18a1e42  libstdc++-v3/include/bits/regex_compiler.h
! a03aaf7d03a9b71dbb400f20ac3a24ba  libstdc++-v3/include/bits/regex_compiler.tcc
! 0ed75f64f6a2ef9e246d1df78bec8ce9  libstdc++-v3/include/bits/regex_constants.h
! 85a93e603444bb3a23b75da73192dee2  libstdc++-v3/include/bits/regex_error.h
! 2495bcb90af2bcf8217b48a97c5ec1e3  libstdc++-v3/include/bits/regex_executor.h
  a5f7599269265e9fa08515b3153fae50  libstdc++-v3/include/bits/regex_executor.tcc
! 79f74adcb24e2a20a2a7783fe81ef2a4  libstdc++-v3/include/bits/regex_scanner.h
  e17036c2169768877a2decc8fafb1408  libstdc++-v3/include/bits/regex_scanner.tcc
! b5a31ffdf16d0753e273cdfff0ff6e08  libstdc++-v3/include/bits/shared_ptr.h
! b7b7c3f4f5b8b0d7472d13c86dc9ba9d  libstdc++-v3/include/bits/shared_ptr_atomic.h
! de783ee03b6490a4c18914f825de28ee  libstdc++-v3/include/bits/shared_ptr_base.h
! 68b74d340f7cf348bc4ba2cdd2abef9b  libstdc++-v3/include/bits/slice_array.h
! 9b2e9f2b083444d10d31440adb7617d1  libstdc++-v3/include/bits/specfun.h
  e899b384347b53af6ce6e1034e25b861  libstdc++-v3/include/bits/sstream.tcc
  a2872a3a5e8bdfdb68af596ab9b2956c  libstdc++-v3/include/bits/std_abs.h
! d1037bf0672c6f31a8ab232accf76b5b  libstdc++-v3/include/bits/std_function.h
! 99d665f02cc875059369682e63fe6afa  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
! c1f22e72439efaf933695e8de80c864d  libstdc++-v3/include/bits/stl_deque.h
  f87fbc5d632d6a84307ec8d2ada3d6c3  libstdc++-v3/include/bits/stl_function.h
  ce0341fe6e305b41215648e27a5b71eb  libstdc++-v3/include/bits/stl_heap.h
! 440554c6fd095f22a03b8639bf747533  libstdc++-v3/include/bits/stl_iterator.h
  ec8f5457561f81d938fe7292bd695aa3  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! 90b6c5c8762ac7b4ad98628e4c841fff  libstdc++-v3/include/bits/stl_iterator_base_types.h
  5f49cd6ecd76af79a9fac53049c58c08  libstdc++-v3/include/bits/stl_list.h
! 4b2bf696c74d3c9bdff3bdc84f1755f2  libstdc++-v3/include/bits/stl_map.h
! 42d87940a6f27b7218f15a1c9cce2a5f  libstdc++-v3/include/bits/stl_multimap.h
! 6209bff71266fcfcace17b674ed0c8a3  libstdc++-v3/include/bits/stl_multiset.h
! bb284cc5039424f72f825cc562881eb9  libstdc++-v3/include/bits/stl_numeric.h
! a8007925a2a7e1451260fbbaad1901b1  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
! ef12bb1e27ffe914484f7aefd01fe24b  libstdc++-v3/include/bits/stl_set.h
  afe766f0ecb032df023c7042cf701b96  libstdc++-v3/include/bits/stl_stack.h
  43ec67c71a6a4de0533398e4142dcde7  libstdc++-v3/include/bits/stl_tempbuf.h
! 16e1b48de9ff648411bca19144fc3406  libstdc++-v3/include/bits/stl_tree.h
! ed05d0b7c24493d3fc4c711407844017  libstdc++-v3/include/bits/stl_uninitialized.h
  7de0f0dc86a833efdd78c658d956e37c  libstdc++-v3/include/bits/stl_vector.h
! 07ff4d5903d9bb5d2a93ab5e39a20545  libstdc++-v3/include/bits/stream_iterator.h
  173a77332f78d2ca96b9c0d2c72fbdfb  libstdc++-v3/include/bits/streambuf.tcc
! 789f8f4c544d75ef82e2fdda5174ab45  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
! 74d5bd4249460574acc5449cd0b6ee56  libstdc++-v3/include/bits/unique_ptr.h
! 2398953e1d22c203547bb49738486344  libstdc++-v3/include/bits/unordered_map.h
! 530abd232bf083850a9e76ca634e897a  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
! 48fc9a93f309279941088e9cb8ca4e9c  libstdc++-v3/include/bits/vector.tcc
  2b253789d7e901fdf2b0d3e65a33a1fa  libstdc++-v3/include/c/cassert
  0e326b949420e3e1c4fa03ab98c96928  libstdc++-v3/include/c/cctype
  90f58d6c8e68af7acd8e06bc3bd80f66  libstdc++-v3/include/c/cerrno
*************** d9d3917829364b36d1ed627c5f739777  libstd
*** 91375,91381 ****
  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
--- 91844,91850 ----
  7c99177e2019dc5c16098abc8637b0be  libstdc++-v3/include/c_global/ciso646
  2e4d47fee18e015816676e7d0798537f  libstdc++-v3/include/c_global/climits
  8afd032a672df0c7c7f84e4f282e0d77  libstdc++-v3/include/c_global/clocale
! 8b6736f01d9b4ada3318d50cd168dcde  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
*************** c69f68f2d2cbac034a41bb7ce5c36465  libstd
*** 91418,91434 ****
  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
--- 91887,91903 ----
  ec721ea945725a41d5073a57903b612a  libstdc++-v3/include/debug/formatter.h
  07e6945efbd59ba69dfc02f2c4a203da  libstdc++-v3/include/debug/forward_list
  a0fdaba8d70082b66e89cced6e91043c  libstdc++-v3/include/debug/functions.h
! 472f7b4ff6b5efe0e8586270b6e909fd  libstdc++-v3/include/debug/helper_functions.h
  e9092530a7ddddbf6b4dcd53a5a504d1  libstdc++-v3/include/debug/list
! 0082d18e78894406d3f0d6541649300d  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
! 1b6baa02bcb6dbd1e81bbf16b4bb5e98  libstdc++-v3/include/debug/safe_iterator.h
! 688d8516d5eefc7ca8e5394f83d82718  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
*************** aa425edbfb470e145927a56391aa6b09  libstd
*** 91438,91469 ****
  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
--- 91907,91938 ----
  e2b4bcff61ee2c5a9ba5fd72d403d1c2  libstdc++-v3/include/debug/safe_unordered_container.tcc
  f0f7c303e5ec432a7d75d08475cbd8b3  libstdc++-v3/include/debug/set
  4d82220fa9721091a00af2999e8c9a8c  libstdc++-v3/include/debug/set.h
! 466583959ff05b715bf97736b6f8a236  libstdc++-v3/include/debug/stl_iterator.h
  e143e1109da87c7fa764c9c3645f93be  libstdc++-v3/include/debug/string
! 94863ded1a4fe916ce1583eb4bd9e1ba  libstdc++-v3/include/debug/unordered_map
! e40bba6008a0338def8345afda77e908  libstdc++-v3/include/debug/unordered_set
  2337490e5ffc563fe032216c47a1258e  libstdc++-v3/include/debug/vector
! 28be80cdaafaffe51d79e41ca896fdb9  libstdc++-v3/include/decimal/decimal
  87f66d3a94733712f3e40d085b84e52c  libstdc++-v3/include/decimal/decimal.h
  484fe8201bf592577d0bfd1c59459606  libstdc++-v3/include/experimental/algorithm
! 210a272922bbeb4e5e67422e003751f7  libstdc++-v3/include/experimental/any
! 8185f84ab530b099959ceb8371c1b61e  libstdc++-v3/include/experimental/array
! 3659f2cfa14709a4889faa3655039e6a  libstdc++-v3/include/experimental/bits/fs_dir.h
! 618508a0e011ca803c2d09245f1b9eb3  libstdc++-v3/include/experimental/bits/fs_fwd.h
! 64a9f5ea129395b4649c483ef78d6314  libstdc++-v3/include/experimental/bits/fs_ops.h
! 50c37b8a25307c557d8f11b41680ca99  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
! de53e0ccac854007e728ef44394433c4  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
! 11ae9640310a8fcb7a387e7787d48d87  libstdc++-v3/include/experimental/internet
  709ae9fa19088f5335e58bc6cfef7b87  libstdc++-v3/include/experimental/io_context
  addea971b35a75f23989171878228e4f  libstdc++-v3/include/experimental/iterator
  6f22e77aadd04c97f9427288c525dc45  libstdc++-v3/include/experimental/list
*************** addea971b35a75f23989171878228e4f  libstd
*** 91473,91485 ****
  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
--- 91942,91954 ----
  a7d3ea8538cf6c8e57484af9a461a655  libstdc++-v3/include/experimental/net
  bf4ef7b68a82e1643ee24b5dac94501f  libstdc++-v3/include/experimental/netfwd
  7fcfb5fbfa3aa6bd01ac4d2bd9377171  libstdc++-v3/include/experimental/numeric
! 4cc322f3bd5270b2be197853c6d8061f  libstdc++-v3/include/experimental/optional
! 0b97a31a359048a2dc2a0faaa4eecac0  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
! a3ef579297e31be89c04d105e95ff532  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
*************** bf44541d28bf1f5ded216ff7be52fcea  libstd
*** 91495,91517 ****
  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
--- 91964,91986 ----
  409bfd03b6e73a1a7f4fa3383c7da453  libstdc++-v3/include/ext/aligned_buffer.h
  df703a73a0d6c27e160037ac01fa04b8  libstdc++-v3/include/ext/alloc_traits.h
  495f94b66355f397be669c462a32bf9a  libstdc++-v3/include/ext/atomicity.h
! ea90e53770325f92a60ea6ba3a17a6b9  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
! 885fbd164a20b159c872c56347e99cd7  libstdc++-v3/include/ext/extptr_allocator.h
  9e9c93b8b532b3b2bdb5864bf5654b38  libstdc++-v3/include/ext/functional
  fbb718c8b9c11e2dd529591065e9ca28  libstdc++-v3/include/ext/iterator
! a46fd555010ce9f62cca8b3db6a42fab  libstdc++-v3/include/ext/malloc_allocator.h
  9bc7e74457fd1a4398ad1fb485bbd111  libstdc++-v3/include/ext/memory
  cdc716bd05d4f195d984d48201e857a3  libstdc++-v3/include/ext/mt_allocator.h
! 8405c8149bbea50fc78cfb8f64bcfee5  libstdc++-v3/include/ext/new_allocator.h
  ebf9c1d2139571a50d315a67f8ca0ce4  libstdc++-v3/include/ext/numeric
  0df838a77977ab3eefc49c30cf4ca696  libstdc++-v3/include/ext/numeric_traits.h
! 2ca504e209b1d5efb911636ed4c5c6b0  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
*************** b439479b445803b150d0939331288618  libstd
*** 91556,91562 ****
  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
--- 92025,92031 ----
  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
! 6375672fe7ab3f4af95e1e3364320f5a  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
*************** a022a65437a22da9c2babe43d0477a7e  libstd
*** 91682,91688 ****
  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
--- 92151,92157 ----
  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
! 59d7fe949a2fdf76ae7237228b6cd154  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
*************** d6bcf0aaf62910d6555ef28e4e8dcc48  libstd
*** 91730,91740 ****
  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
--- 92199,92209 ----
  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
! 82f311cc0056dcff7190bde9536f49b7  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
! f27ff2160a520560f50f0848cf004878  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  libstd
*** 91742,91767 ****
  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
--- 92211,92236 ----
  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
! 8b119be915f6dcc0a74bdb83a1e9f494  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
! ff503c7b13f45a69a02d629420a4888c  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
! 22a8f46230359592c3bb29ef6c4e9f2d  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! 953f981cca2c2fdcaa42ef41a04d716f  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
! ab1c48c102c665f8ca13f2163df187eb  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
! 9a2970b96ad28a8a4e20f8c4ff9b7fa0  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  libstd
*** 91769,91775 ****
  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
--- 92238,92244 ----
  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
! b3725b4094abdf3d3c741aca156bf9b5  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
*************** d3d2812c60e828c1e822801f148c7630  libstd
*** 91846,91915 ****
  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
--- 92315,92384 ----
  b273dc977fd70ba3f379d1a3b1863379  libstdc++-v3/include/pstl/unseq_backend_simd.h
  248e4a4c932ee32246a6216c3b58a482  libstdc++-v3/include/pstl/utils.h
  d13b5b555064cbe65fe9a48522f98fc6  libstdc++-v3/include/std/algorithm
! 264dfe8d0bc871c1b56dccbc57bf0b7f  libstdc++-v3/include/std/any
  2eb20d4a1a3384519f368d3874a83786  libstdc++-v3/include/std/array
! d1ea53a6b3aa2a26dd2a34579929a0a2  libstdc++-v3/include/std/atomic
! ee08323765838e4ca57e151bd2f5f369  libstdc++-v3/include/std/bit
! addd5760df8b3e5ba9b33dd05e3a4f9e  libstdc++-v3/include/std/bitset
! c34b04d6bdef13addf91f0b7c174b677  libstdc++-v3/include/std/charconv
! 24b681806a0df2c4b990aa9e3fcf2359  libstdc++-v3/include/std/chrono
  8b37cc9e28ddcbaeebc68650806fcfaa  libstdc++-v3/include/std/codecvt
! ca32345e912feb3299a3475baf482b93  libstdc++-v3/include/std/complex
! 2f9c08e9d169cafc9bb73d40d6152fe1  libstdc++-v3/include/std/concepts
! 0bca7972e0a981c566c58333047b3e4f  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
! 4a6d2e200fd33f7fd5aea1a407127861  libstdc++-v3/include/std/fstream
  35d0ec3d03ab91d93ef4645794953a82  libstdc++-v3/include/std/functional
! bc7515ce4ef21d5eb7168bfb5446ab8c  libstdc++-v3/include/std/future
  5bdf514df587a0b7e143fd31534822f6  libstdc++-v3/include/std/iomanip
  c38aff42e4260791f26b2c61947dc465  libstdc++-v3/include/std/ios
  1bb450b79d915a2d887b7b54d3c9a23c  libstdc++-v3/include/std/iosfwd
! 1fb5ac03dc79f135ff194c56ae89ed3f  libstdc++-v3/include/std/iostream
! a0a50587d2eec5a78f74a98dabe20be6  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
! 8975a010c439e0c88f6d8c77e44d643b  libstdc++-v3/include/std/memory
  3f400dd93f6a698931858300f3e1943a  libstdc++-v3/include/std/memory_resource
! 7bf570019cd4f0a6d5a6a52e97bb04d6  libstdc++-v3/include/std/mutex
  6eef564e779ff625b1fb0fa009e40fd4  libstdc++-v3/include/std/numbers
! 1ccb103f249440dabfde6c0fd0a7c061  libstdc++-v3/include/std/numeric
! 393364dba7f058bf4c81111ddd1f9cdd  libstdc++-v3/include/std/optional
! 56e5a336148ae6e8cfc713dd640b2f8d  libstdc++-v3/include/std/ostream
  c43c4eb1ed1a4868d4c6323cc6de7522  libstdc++-v3/include/std/queue
  eb0270a262359d9c42cc05dff455433d  libstdc++-v3/include/std/random
! 98b92b811a8216770375bed0aa0f4d18  libstdc++-v3/include/std/ranges
! ca89269b97d7354f7f0b65d424029d90  libstdc++-v3/include/std/ratio
  a8222a3097b562fb1cd796c07ec7c61f  libstdc++-v3/include/std/regex
  b66d9f96bf954c63d6525112c84eb381  libstdc++-v3/include/std/scoped_allocator
  245521f6014ae11952787e3814f04026  libstdc++-v3/include/std/set
! e1565837b946ced2d0133cbaa1e3d8ec  libstdc++-v3/include/std/shared_mutex
! 8c2db7cae66143469e27ffc9996d3fb5  libstdc++-v3/include/std/span
  57d20fd66958cb5ff87fd63d0146d6b1  libstdc++-v3/include/std/sstream
  2e668b0677af4c060836d386a013d36b  libstdc++-v3/include/std/stack
! b7cb1423f5d00d33fe1a8be9cf5aa752  libstdc++-v3/include/std/stdexcept
  4927a29ef58b4de3622103ccacdc0ed1  libstdc++-v3/include/std/stop_token
! 1e5abe92347441ccf5ada831a258c4e5  libstdc++-v3/include/std/streambuf
  eb3091100e8f81513efe90cccdb3c1a5  libstdc++-v3/include/std/string
! 70f45746625c6d36f2b6a982c66329a5  libstdc++-v3/include/std/string_view
! df30cbfe47f6d40df9209197be105c02  libstdc++-v3/include/std/system_error
! cb0634ec16f6b752fa1ff813eeca1730  libstdc++-v3/include/std/thread
! 066e5cd5a70eb992f55993f5eab6be3a  libstdc++-v3/include/std/tuple
! 45c67e663954c948be8e2925470bc594  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
! 567ad93eeaa373e6e893843e804a3df6  libstdc++-v3/include/std/valarray
! 1298d6992e2344f7d186593abd955fef  libstdc++-v3/include/std/variant
  d226f70ed3db8fb048011cc9efe12c5a  libstdc++-v3/include/std/vector
! 27d7969b96498b2777dbe1bdbeeb2fae  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
*************** d227fecdf7b427b7cbbb5c299068b11e  libstd
*** 91919,91926 ****
  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
--- 92388,92395 ----
  8b7afc7d6e165ea05c17bbff340550c0  libstdc++-v3/include/tr1/cfloat
  12499b5ac449cc0d186e8fcdf1352068  libstdc++-v3/include/tr1/cinttypes
  d334a06e2eaa8d855f7928caa13326a9  libstdc++-v3/include/tr1/climits
! 95de00b588cb4ee907ec304ff90618df  libstdc++-v3/include/tr1/cmath
! 433edc0fcb568b1d43152107217aaa26  libstdc++-v3/include/tr1/complex
  8ecd2dccc95981872f5dd7cf98f3b39f  libstdc++-v3/include/tr1/complex.h
  ef9dcaed6142cabfb5b32cd08df3145a  libstdc++-v3/include/tr1/cstdarg
  8b8e1527de5f885dd48be7fada970f62  libstdc++-v3/include/tr1/cstdbool
*************** fcfb7e2fcc0771a39c292ff0fc766094  libstd
*** 91951,91959 ****
  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
--- 92420,92428 ----
  5495f6af469975273f4c72634f281417  libstdc++-v3/include/tr1/poly_hermite.tcc
  6fb63930008c0ea5db714ad1275aa652  libstdc++-v3/include/tr1/poly_laguerre.tcc
  1eb08faa47ba499a03f9dfa10b0ab38a  libstdc++-v3/include/tr1/random
! a161bdf806d971b000724db993ac074b  libstdc++-v3/include/tr1/random.h
  c47e2e868b4bc389937c0e50144c51c6  libstdc++-v3/include/tr1/random.tcc
! 815dd825c0a93630f40137b3859c344d  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
*************** c4957b1343b7e92f0114cb2f6f92d0ab  libstd
*** 91974,91996 ****
  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
--- 92443,92465 ----
  8612d7a60fc538dd88175066c44827e3  libstdc++-v3/include/tr1/wctype.h
  c299b5a95bf9cc081406fbabbc619eec  libstdc++-v3/include/tr2/bool_set
  ef3c3be52710a1911df3359721e497e4  libstdc++-v3/include/tr2/bool_set.tcc
! cca88cb19c7215b5b69059d40d8ff48e  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
! c14e4bbf3f33792e890e2ff4616e0b9c  libstdc++-v3/libsupc++/Makefile.am
! 8796e4a4828ccb09e9899249233d1a23  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
! 23657c26ab3a5c57eb78d3a85460f86a  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
! e0004aa82f32b005886dd69ff41fd612  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
*************** a59622e276639dd515175fbd6395df24  libstd
*** 92025,92034 ****
  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
--- 92494,92503 ----
  1cd5b6ce1ebf8e06a5af76e1a7a8fa5f  libstdc++-v3/libsupc++/eh_type.cc
  78238663a71562f56f9dc00b37fc2094  libstdc++-v3/libsupc++/eh_unex_handler.cc
  efaee9802db9806f8b37c1ab4846218f  libstdc++-v3/libsupc++/enum_type_info.cc
! 5793dd3822223eab770dd5c5bf307a2f  libstdc++-v3/libsupc++/exception
! 6a6a4fb613335dba884545e796e39323  libstdc++-v3/libsupc++/exception.h
  5eec165f70e99f7038ec1079aeef99fb  libstdc++-v3/libsupc++/exception_defines.h
! 22758d7a3ac2c6892e8a317604322aea  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  libstd
*** 92037,92047 ****
  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
--- 92506,92516 ----
  a9d6bf3e7b5591d98a15ccbabe8992a8  libstdc++-v3/libsupc++/hash_bytes.h
  3233e15027e0d66e4a1f3fdac41e1523  libstdc++-v3/libsupc++/initializer_list
  f3b2f278f157b615a46dfe8757355a87  libstdc++-v3/libsupc++/nested_exception.cc
! f3336f93979049335fac89945b63655b  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
! d4b2a32e98b74e66a4971f2a1df82d2a  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
*************** fd848e9998fa389554b1d1a78f56c932  libstd
*** 92070,92082 ****
  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
--- 92539,92551 ----
  c3325ce572e11e80ad0892e4f64397ae  libstdc++-v3/po/fr.po
  51e81dfb580a235b73f6a3b903a822a9  libstdc++-v3/po/libstdc++.pot
  62c624a1041a47c9d0b776aed8474d8b  libstdc++-v3/po/string_literals.cc
! 7452897b58848aac567953af5683fe04  libstdc++-v3/python/Makefile.am
! f3ac4e5379aefe9ff864e8243a174b42  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
! 1de76e87902410c000656c409774db0c  libstdc++-v3/python/libstdcxx/v6/printers.py
! 0fc25e43df52cda8714a2f6dd550e226  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
*************** e8e7773bc629a008b2813ee507a0dab6  libstd
*** 92089,92096 ****
  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
--- 92558,92565 ----
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
  dc1296234355fa7f34409b5f2e70986b  libstdc++-v3/scripts/run_doxygen
  7579350b0ac0412cb42e9c354485ebd9  libstdc++-v3/scripts/testsuite_flags.in
! eb5a0a4c3134658a497c530aacbbeb74  libstdc++-v3/src/Makefile.am
! 2faf9eae785cc3105364c69ca4ff7dc3  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
*************** f261a5695cf413b262d8d771012c36cf  libstd
*** 92145,92151 ****
  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
--- 92614,92620 ----
  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
! 4702dde44800dea5f9ad46ebea5eaccf  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
*************** d5f997a3f8dd5097f784e8fe86ddd77e  libstd
*** 92157,92170 ****
  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
--- 92626,92639 ----
  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
! 3ad10d2e6e8714710066bc9e7d022796  libstdc++-v3/src/c++17/fs_dir.cc
! 37132b81957ff5846a46a7e467f5e65a  libstdc++-v3/src/c++17/fs_ops.cc
! 42defcdc2c69bd9b77c3825755b86943  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
! bca7687f5da7bc0929bce04c5592be82  libstdc++-v3/src/c++98/Makefile.am
! f7418ebcbfc4f8ad46f3301f1a4fbd91  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
*************** f696e1553cdd7d1b79fb2d8012409057  libstd
*** 92211,92224 ****
  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
--- 92680,92694 ----
  e2247434ec0f4ba1ddd7dfbeff34c24e  libstdc++-v3/src/filesystem/cow-ops.cc
  cb2f4ac26828ff897617df0f8edfeb5c  libstdc++-v3/src/filesystem/cow-path.cc
  18060719bf00c53f45270f021ed36cd8  libstdc++-v3/src/filesystem/dir-common.h
! 65fe2df501ce59dcb75e920f423bac00  libstdc++-v3/src/filesystem/dir.cc
  83b4b430427186f28a0bc64770655f8a  libstdc++-v3/src/filesystem/ops-common.h
! ac929d613cab70408fe35149c737bc1e  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
! d5df5ddc3b7c5dba2e687798eaa28551  libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc
! cbf383f9aa96ec97b881d62ea5e64f4a  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
*************** b8a53b2b8da32d102d69cbedea3d2216  libstd
*** 92271,92277 ****
  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
--- 92741,92747 ----
  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
! e128988c0ca3b369ea5412b988869905  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
*************** db32112e54ea8e4dbe46c755dff95b57  libstd
*** 92295,92300 ****
--- 92765,92771 ----
  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
+ b4c65970a3b96295ca66e5a7376e3d19  libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.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
*************** b10b68893f089a766cb63d3051f0bf71  libstd
*** 92309,92319 ****
--- 92780,92792 ----
  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
+ 8a3e4fc86620d59634749ffecd317237  libstdc++-v3/testsuite/18_support/exception_ptr/103630.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
+ 8907da30a344e71f1227eec1fae72f2b  libstdc++-v3/testsuite/18_support/exception_ptr/96657.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
*************** c8b98692b1d8338dc6989c877063436d  libstd
*** 92413,92418 ****
--- 92886,92892 ----
  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
+ e76078fa52225514dc89f9b1116c07ff  libstdc++-v3/testsuite/19_diagnostics/error_category/102425.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
*************** caa162219e7b950e53cb567b120877b6  libstd
*** 92513,92519 ****
  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
--- 92987,92993 ----
  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
! 48bf8209e633ab98c9fc5ced776596b8  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  libstd
*** 92529,92534 ****
--- 93003,93009 ----
  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
+ 53d95c7e7934ce41b96d0a86033b6a99  libstdc++-v3/testsuite/20_util/any/102894.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
*************** ec72c9d7d5d626cf7190ea50036978dd  libstd
*** 92536,92541 ****
--- 93011,93017 ----
  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
+ 097d518046e23537949952c936ddfa1c  libstdc++-v3/testsuite/20_util/any/cons/101034.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
*************** b9e214d61e944f0fb73c3ae8e8da40f4  libstd
*** 92602,92607 ****
--- 93078,93084 ----
  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
+ 7b45f3d65401a77e7c8feec605d0e13f  libstdc++-v3/testsuite/20_util/common_reference/100894.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
*************** ba621ca1698a3fbdc9e7182e2293e655  libstd
*** 92683,92698 ****
  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
--- 93160,93175 ----
  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
! 2c941c7f2dac3154e5f1ed0cc24d412e  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
! 22fa2b4f88e80eda8734506d05795c0d  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
! 8c37686e5fc64122c1bc1897e614f755  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
*************** f57943bfaeb5cd5fd76002ff5980bc9c  libstd
*** 92801,92807 ****
  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
--- 93278,93284 ----
  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
! 46882f1b655108d25e0e2e20189744ef  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
*************** e18d36a230428a7572b590bf54b7a9b6  libstd
*** 92813,92818 ****
--- 93290,93296 ----
  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
+ c6250601e3e7183f7bd3726fdd8c1203  libstdc++-v3/testsuite/20_util/integer_comparisons/greater.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
*************** bc3c097c0044e4d458fbde5483bcd850  libstd
*** 93128,93133 ****
--- 93606,93612 ----
  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
+ 5f2a36dc053d6d68a81135df84e7f4cb  libstdc++-v3/testsuite/20_util/optional/assignment/100982.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
*************** c076e2060c0c15a3024d2a3010ba6200  libstd
*** 93182,93188 ****
  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
--- 93661,93667 ----
  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
! f863d26449f53cc4bdecfb326251ee25  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
*************** a545c7c7a6b52d41a0c2234d630c6ac6  libstd
*** 93320,93326 ****
  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
--- 93799,93805 ----
  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
! 929ace9963adc50f533b1745d065aa52  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
*************** c2b763ad43aa9efa5e46e66bd487a74e  libstd
*** 93374,93386 ****
  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
--- 93853,93866 ----
  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
+ 6ee836f3d8446334ad0856f8f79f7c0c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.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
! d42514a26ef1aa778041584323b47dc7  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
*************** c182003d94c08defbc552d0de3254588  libstd
*** 93392,93397 ****
--- 93872,93878 ----
  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
+ 6620dd086dc407f56b904aacbc2e65f9  libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.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
*************** fe2f5bb3e3f103441f10f826d1162fa1  libstd
*** 93514,93521 ****
  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
--- 93995,94003 ----
  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
! a0fa3abfdb32b80b655f062edee07a3f  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
  dfa1f4320dd7939c91a770e1592f4940  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/three_way.cc
+ 32c154912a091023741fdaa263538a86  libstdc++-v3/testsuite/20_util/tuple/cons/102270.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
*************** c9f4e2afbe952dbc89c61a0a46dfefa7  libstd
*** 93652,93660 ****
  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
--- 94134,94142 ----
  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
! 189c5d9fc72e2db2af4f5456397d8dd8  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
  49b89488c5f2f8b08b5afbace59564e7  libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
! 670720ca5a72e1ccb9eb01b3f0fd7a45  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
*************** ae03c2b43b20cf8ac1bd997bfa0b9ce9  libstd
*** 93662,93667 ****
--- 94144,94150 ----
  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
+ b9698b5e78dcefad507d6737875a6a1d  libstdc++-v3/testsuite/20_util/variant/100384.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
*************** f70f801d8f7fd38bc35b716509cd978a  libstd
*** 93818,93824 ****
  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
--- 94301,94307 ----
  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
! faf86ef7b0650327278de6745bfe7c4a  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
*************** a2c48449342796505f7d846c19638dea  libstd
*** 93886,93892 ****
  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
--- 94369,94375 ----
  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
! 734c7ca68fe6ae75394fcc3c36671949  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
*************** d6538ea6385e7dd4a6ab240a2ecac922  libstd
*** 94001,94007 ****
  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
--- 94484,94490 ----
  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
! b1371e6818300e68ba50b45b6f7ef0ad  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
*************** ce69009106a445a659a7ff6a7715adc0  libstd
*** 94048,94053 ****
--- 94531,94537 ----
  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
+ 220c5f791ea4b1926cdb483d5db5aac5  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.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
*************** fdf2245a4c16a619ac43126000a74390  libstd
*** 94072,94079 ****
  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
--- 94556,94563 ----
  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
! 248a001441f900ee05abe4d46bc555b8  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! 54d693e45950df63d4700862f27b9c60  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  libstd
*** 94081,94086 ****
--- 94565,94571 ----
  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
+ 5eb7812f69f414ef3a35a89be9d4dc1f  libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.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
*************** d874d8e2551c3b5c1491d41be9e863ae  libstd
*** 94711,94717 ****
  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
--- 95196,95202 ----
  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
! 698f8bed2b700f4b2072a44bc785071f  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
*************** ebbe06f695fb454c6baac9488460974e  libstd
*** 94985,94990 ****
--- 95470,95476 ----
  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
+ 7a189e8b9d2375d727e2175b911806df  libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.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
*************** c0680ec2956b0558accb310957d2a3ea  libstd
*** 95176,95188 ****
  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
--- 95662,95675 ----
  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
+ 43006f9b1a0b3a83871fa15d830ea9ac  libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.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
! 1b0823b7e4e2ae3a7680de7a2421f4d7  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
*************** d11a888bae3f037290b47ffbef818a89  libstd
*** 95266,95278 ****
  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
--- 95753,95766 ----
  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
+ 6b228284e36f939ee229675da47652f2  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.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
! 4232f965b2d51135873ff54b6509fd35  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
*************** dd63ff5547bd3f8932a7dd1f5c40d3b3  libstd
*** 95335,95353 ****
  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
--- 95823,95843 ----
  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
+ c599e48655ea2e75c592ab5a1cf5ae3c  libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.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
+ 2f71170abe54de386e7c963413a42e5a  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.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
! 033542b700e41caabcbf9d434fd89d08  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
*************** e4fea1ceacea0e9d21b963d4795e94e0  libstd
*** 95436,95441 ****
--- 95926,95932 ----
  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
+ 4934612c2b7203e0e300739be2067260  libstdc++-v3/testsuite/23_containers/set/allocator/103501.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
*************** b4383f8916fb466fb67342be8b871c26  libstd
*** 95444,95449 ****
--- 95935,95941 ----
  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
+ 5f6c8cc0fa61d7499a93ca54e5456a2d  libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.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
*************** ede5ac38f32290eae8d036e97275ef56  libstd
*** 95452,95458 ****
  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
--- 95944,95950 ----
  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
! 9ae8df008eab76e37567890a177c989c  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
*************** d1cdd03b2f8e0dd861d4407c38157bc7  libstd
*** 95511,95516 ****
--- 96003,96009 ----
  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
+ 0af861eafda2161b428a3acb70ad7136  libstdc++-v3/testsuite/23_containers/span/101411.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
*************** cda303bc791abfda228a1c3899260517  libstd
*** 95537,95542 ****
--- 96030,96036 ----
  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
+ d19a170b5f7ab02157733005cb76fef1  libstdc++-v3/testsuite/23_containers/span/trivially_copyable.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
*************** cb84acc411ac789ab0cfb110bcdf634a  libstd
*** 95555,95560 ****
--- 96049,96055 ----
  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
+ fcd22fc85f6b1f3dcc704c89f9b6fd6e  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.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
*************** acf9c1b71b2d5fca3e88506e57db5d67  libstd
*** 95564,95570 ****
--- 96059,96068 ----
  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
+ 85f9f0cfc8a07ac716292470ac0bda11  libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc
  54fe8826d2b53e0d06a8e1f869e011a0  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
+ c61e9b9996dd865977d55cc768fcfb72  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
+ 3e7342328057435621f16f45d5eca6f6  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.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
*************** d47419fa6ccafc6aab739a15fe03ae1c  libstd
*** 95618,95623 ****
--- 96116,96122 ----
  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
+ cdce7673464f97d02342aa966db31720  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.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
*************** d92c21d09948bc64c892379e2d9740b7  libstd
*** 95660,95665 ****
--- 96159,96166 ----
  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
+ 5091bfd1023f6bf2abfc425d06c7c0f8  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
+ 5b57894fcd4e150241f795bc62c6ed9a  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.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
*************** e8b88c2e83dd0dba23fcdbf1c1f1b60a  libstd
*** 95750,95755 ****
--- 96251,96258 ----
  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
+ 627b36ec89fedcaf8557b2487f626041  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
+ 5a48e211c8ed33836585e36cea955fbd  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.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
*************** b968302347a4a91e44c34341cdd11879  libstd
*** 95829,95834 ****
--- 96332,96338 ----
  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
+ 4d1dcbbf6beaa56abdd028e3b90c1d09  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.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
*************** d879e90c2bc9d9c28fdef4dbc4ca618a  libstd
*** 95837,95844 ****
--- 96341,96352 ----
  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
+ 9d752eefc22b63ac38738f296f675279  libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc
  b3b806f5f10ddfb77c8aeb8ba285b4a9  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
+ 247af40f0de6e07e87bdde64812f8659  libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc
  ba8af49486d5d3c3c8a4dec507661c7e  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
+ f32a1caa99278c4012c0802f030915da  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
+ b9be6eee936ea5cb9600b7320b424e10  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.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
*************** fd1c755c828254de106a44d52751fd80  libstd
*** 96125,96131 ****
  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
--- 96633,96639 ----
  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
! deb2aa59184e80a3699625971ffb4d0c  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
*************** ae9dc623ab27d928c35bc44cfd64602b  libstd
*** 96162,96168 ****
  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
--- 96670,96676 ----
  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
! a02faee3a81215336a66965fa506993f  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
*************** f0cdc00b3bc9c68919fb0b7ebe7c11ef  libstd
*** 96204,96210 ****
  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
--- 96712,96719 ----
  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
! c4da277c7c5ed43e70bfcf1d7f0988e8  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc
! 3f86aa9ae75273740f325097e752417c  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
*************** abf9e229b4c2bd54b92c5d96cf8e7efd  libstd
*** 96238,96250 ****
  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
--- 96747,96762 ----
  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
! 00606ba56af13a3b035c586a3d9cf4cd  libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
! dd28d465a3b31c2c395828ec41c1813e  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
  2a73c779dbf3ede57966512845075e62  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
+ 5dcff108eb2f62baa60bfa3a74d92304  libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.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
+ 61dfe6716a18a602a8173f0831ed4381  libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc
  e6a8fd95d27b75260ac14bbdb96599fb  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! 8be28164e85e13ae982dd06dbd2ff514  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
*************** d6d3b4a968a888c5eaef0a2ebf180160  libstd
*** 96312,96321 ****
  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
--- 96824,96834 ----
  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
! b456f1098b5c96e6126ea74d3535c3eb  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
+ 500cd85e3f2b7bb8d5a19bab3fb05cd3  libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.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
*************** e28df2e4c4aacb2c97616c7caeb0d219  libstd
*** 96346,96352 ****
  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
--- 96859,96865 ----
  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
! b06b1568c1e6af2787ef76f5355a26e1  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
*************** ebd01e224082a3b97bd59c68afb737d3  libstd
*** 96427,96433 ****
  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
--- 96940,96946 ----
  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
! 93c1014d1812d3b6a79cd3dbe2d83fc5  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
*************** f205839fa0ebe4b40c992703ab598203  libstd
*** 96539,96545 ****
  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
--- 97052,97058 ----
  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
! a24bd2f6e6d927a7f43194df460adf3a  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
*************** e8c975a2df91cc326c9c32b307350b97  libstd
*** 96638,96644 ****
  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
--- 97151,97157 ----
  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
! b32a24ac0266bad82eaf459033e37a5d  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  libstd
*** 96646,96652 ****
  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
--- 97159,97165 ----
  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
! 350144eeb2764bf6cc7b6ca24b772b8b  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
*************** ebf13bf2627034bbd471091c4f3c3368  libstd
*** 96660,96673 ****
  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
--- 97173,97187 ----
  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
! 5d57a7c1d0519d60477b53cdbcb8e7bb  libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc
! 60390898b2ae992ee5c7690760108228  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
! bb28c89f0d3866116d1090fc7d213993  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
! a456df9bc7595618ca2dfeffa2a78b16  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
*************** a6b809943438e05bfcec8341de0f5f69  libstd
*** 96776,96782 ****
  af5fca5bc6d72802e0bfae5842ad910b  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc
  d158a17d6a72626910e9d1bb59a6bd28  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc
  04f9cd55db6b818f8a45bf0a96a99276  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc
! 471b6f550298949d953761b6f029fbc8  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc
  d3a1d732b1d0136453af7746fa013e6a  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc
  599cda84ea5efb563eff791be6d35600  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc
  f4f65bf27f0d7c9a39c06d6d20f61198  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc
--- 97290,97296 ----
  af5fca5bc6d72802e0bfae5842ad910b  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/count.cc
  d158a17d6a72626910e9d1bb59a6bd28  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/equal.cc
  04f9cd55db6b818f8a45bf0a96a99276  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find.cc
! 0cc9a18a4572b1df52f5494361369361  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc
  d3a1d732b1d0136453af7746fa013e6a  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_first_of.cc
  599cda84ea5efb563eff791be6d35600  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_if.cc
  f4f65bf27f0d7c9a39c06d6d20f61198  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/for_each.cc
*************** c20a8e85523874211e4bbae54ab1d96b  libstd
*** 96785,96791 ****
  bfc0610f56a7f1d98984aff56dc1bfd7  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc
  b40053fed52593896e1ba25cd0cb795d  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc
  1a705b9ea5017012121c3c55848dd6bc  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc
! a02db630a53ced3d0dfa65416d94725e  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc
  91436d5c34b42f7c18262cecfcbaa1fe  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/includes.cc
  4365fb8b784ce18952f7def92c4879f6  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc
  aead9a8af21f10549912a33e4f446bdf  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc
--- 97299,97305 ----
  bfc0610f56a7f1d98984aff56dc1bfd7  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/nth_element.cc
  b40053fed52593896e1ba25cd0cb795d  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse.cc
  1a705b9ea5017012121c3c55848dd6bc  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/reverse_copy.cc
! 690cbf9cd3decc29c33dbac102b7c176  libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc
  91436d5c34b42f7c18262cecfcbaa1fe  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/includes.cc
  4365fb8b784ce18952f7def92c4879f6  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_heap.cc
  aead9a8af21f10549912a33e4f446bdf  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/is_sorted.cc
*************** c982d6aaa4c9dab0894ace50f9f3db73  libstd
*** 97153,97159 ****
  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
--- 97667,97675 ----
  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/1.cc
! f9ae973e3d6f85f4c35471e62402ba98  libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc
! 198cb21048f5d36f6a9bf84a5b2dd536  libstdc++-v3/testsuite/26_numerics/lerp/version.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
*************** d80f5ed421169b7dc386434996424103  libstd
*** 97341,97347 ****
  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
--- 97857,97863 ----
  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
! 81d2f9995be826076f6ba143e8eab438  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
*************** e93ad9af5d30bfee02b53a20a607fe89  libstd
*** 97372,97391 ****
  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
--- 97888,97907 ----
  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
! 3608441ade80bd9ef6f50f4cfa98a446  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
! d64997ff88f2a5475f44483d1271f747  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
! a4cbec1cba963262658a3d8e9ac0b7d6  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! 1c1aa609ea329c5e7a4efbdc0d01ff96  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
*************** f4d821fc7d20d619d13b8425fc17280d  libstd
*** 97450,97455 ****
--- 97966,97972 ----
  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
+ 51f14806bbec80c2d5883800a91dfc2e  libstdc++-v3/testsuite/26_numerics/reduce/95833.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
*************** a5358247b15452dc5caae361f7762d66  libstd
*** 97462,97467 ****
--- 97979,97985 ----
  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
+ 525e5798867d708e7cc13551760f93c8  libstdc++-v3/testsuite/26_numerics/valarray/103022.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
*************** d868a35e7d2e09013fe46c8c1fc54486  libstd
*** 97478,97498 ****
  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
--- 97996,98015 ----
  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.cc
  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
! aee4ccb1e22e6c9c51fd2b204a3300cf  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! 39d7d81132608e2c09ed6fe4fd285e01  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
  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
*************** e92acb8467eba04a6e2731f354acf2f5  libstd
*** 97508,97513 ****
--- 98025,98031 ----
  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
+ 4053ed662ebf8956feba0dbd5b7aa88a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.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
*************** dc399fe58d03e58411aa59d6bf3887ea  libstd
*** 97758,97764 ****
  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
--- 98276,98282 ----
  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.cc
  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
*************** ecc80f0819ee86597c254252bfbe9e71  libstd
*** 98257,98292 ****
  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
--- 98775,98811 ----
  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
! 32163531bb8e1edc215ed13ec329f250  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
! 9c6d9a0e88de36dd62805a20ea47584c  libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc
  28a2bf942db858ae036ed958d73b7aba  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
  594b2f3e46615f78b2644614529411a3  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursion_pending.cc
! 0921aff28259c14023935f6102b7c44e  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
! a3869580d52ce3db4600a661fb826943  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
  2dccc19d850c045d9f75edacc41d15f3  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
! a01483e87b695cd9fb28d2cb1251270e  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
! 44ec064b761182e49f7f6ff67b01fdd8  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
! 6284af2182197f6d104f4992fcd11d7d  libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
  27c0520a57acab3339000e4a5c852437  libstdc++-v3/testsuite/27_io/filesystem/operations/file_size.cc
! 5fc5a3fe99cc72e2a5bb048429197aec  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
! 04ea7819381f9d48d6cf28fe89d6c915  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! 8a8b4242524faf31dec9179a5d00dac4  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
! a9a0edf832a94e5f249cbef1cd05c30a  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
! fa5e9c2abafec0dc9a19cea96b11e09e  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! ca1159d8b32610beba14521c75acf586  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  libstd
*** 98300,98305 ****
--- 98819,98825 ----
  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
+ a22e69eb2c027825b8fb3e0e6df6a97d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.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
*************** db81a7bc793930f8c19936f6031b9f0b  libstd
*** 98311,98317 ****
  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
--- 98831,98837 ----
  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
! 7573b5c5e842ec11a9617af5e0102f31  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
*************** b715c45a6677f269807dab0bbcf0ee1d  libstd
*** 98544,98550 ****
  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
--- 99064,99070 ----
  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
! 7a351c9516cc949758acfff3f66d7dce  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
*************** a3f01b1cbb4b7331e1672085927244d6  libstd
*** 98662,98667 ****
--- 99182,99188 ----
  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
+ 9e61d1e19fd36f31ae0f5ec6a41b0d6a  libstdc++-v3/testsuite/28_regex/match_results/102667.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
*************** d50bc864a60e27f00a04b30c38c90be5  libstd
*** 98726,98731 ****
--- 99247,99253 ----
  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
+ 7f98d9343ac2e8c46fbeb04ca3e70000  libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.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
*************** d454c6429efcadd6558c9211731a286b  libstd
*** 98866,98872 ****
  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
--- 99388,99394 ----
  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
! 6e100ce34793a0b8583f6796c3fd8ba5  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
*************** c9e7e99529e132f08608c6e69971166e  libstd
*** 98931,98937 ****
  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
--- 99453,99459 ----
  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
! 8523dc0ecfd7460871f8b9945a596f88  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
*************** f754118861b851f83334813d834cb200  libstd
*** 99320,99349 ****
  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
--- 99842,99872 ----
  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
! e5a1b3250ecbac6348905da5d905d47f  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! 6800b111af867d1c5dc76da92647aa5f  libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc
  f0e03612f42cb31e388462b8dc7d39fe  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! 3c16044a4c55ee682b2645a084b70c29  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
! 94490e9fdac37c5154acb073eee9ce74  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
  966ff9676e822cf012c5e62e46be6c04  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! 1bc6af37753260c3cba4b0972cdb821c  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! 4c9ade3d819fdf282c63ad68f1921f5f  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
! 921430fd6875e58f532b3cc9df5fa06e  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
  ff0a9ca2e19173d5ba1cbbd99484a440  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! 337ce1c9002983ec134c4b0ccf69ce81  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
! eff38033dc6e8e0f30a1318d7af0397a  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! 95f1695bd0af030fcebdac50b8b71f48  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
! 379b45b94ca263d11461de78d42cc616  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
*************** d0c5b6632e2c9aeb1fe7639688c02689  libstd
*** 99352,99357 ****
--- 99875,99881 ----
  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
+ c06b01e19066f0d4ffa4faa5202f4e3e  libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.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
*************** ba6f73e1069ae0217ff591b616e7072e  libstd
*** 99455,99461 ****
  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
--- 99979,99985 ----
  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
! d07339364ca0e7224ac866656778dd7c  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
*************** a8d809e90ea6493735643d80223a8227  libstd
*** 99547,99553 ****
  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
--- 100071,100077 ----
  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
! df0f0f65d0e6106a9eb1dc635731c2ec  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
*************** cb92af52926ab185da3b655d6067c98d  libstd
*** 99586,99592 ****
  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
--- 100110,100116 ----
  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
! abc99eca552b44fdd23df397b03e43fd  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
*************** f0f7dfc62f1eed17c7270ed4d8c8e44a  libstd
*** 99895,99901 ****
  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
--- 100419,100425 ----
  b1f353e00d9c68204dc05370bd421763  libstdc++-v3/testsuite/ext/rope/6.cc
  d4bdaa5b4f28018e11317d992032958d  libstdc++-v3/testsuite/ext/rope/61946.cc
  09a7291498057dc4d56b50b8b14f015f  libstdc++-v3/testsuite/ext/rope/7.cc
! cf920cbf8fe76c4f2304e95648d3f3ed  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
*************** b4876ee48ff01727ba90ef64a636e4ab  libstd
*** 99990,100013 ****
  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
--- 100514,100537 ----
  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
! 052a686e39495d728d28c087722b5d7a  libstdc++-v3/testsuite/lib/gdb-test.exp
! c01805a3aca05ff9fb7f629a422a8a6a  libstdc++-v3/testsuite/lib/libstdc++.exp
! 0d2974eb70af2e64378791a0ee367353  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
! 0d213be61f7c77aabcbb00617ffcd852  libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
  e39911046de238e82f9dffedc4a45444  libstdc++-v3/testsuite/libstdc++-prettyprinters/91997.cc
  459abfde30ab0b70acc37a5b1a0efd7d  libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
! 52f959d4089225d1cb3b359e45b8861f  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
! cc217e3c2ccce7530083505d47c22c48  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! 7d0ff9bf745ca6f63b160717c77bc416  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
*************** f10399a56a7080179588bfdfb39111ad  libstd
*** 100241,100246 ****
--- 100765,100771 ----
  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
+ 4794912942b175649c13dd9eacdc759c  libstdc++-v3/testsuite/std/ranges/97600.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  libstd
*** 100249,100255 ****
  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
--- 100774,100780 ----
  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
! d81c6cfc5536b63586a9d913449ec3ed  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
*************** a4d1f3ed07ae3c4a627dba7f1d049d09  libstd
*** 100265,100304 ****
  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
--- 100790,100831 ----
  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
! 105ea802ef341f4d5aef7d47828701fd  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
  422b7c7dcad00cde0852203edf42aaa3  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! 4707fdca5d12b8213e0d631f1e05c99e  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
! a98a8a0fe31e3844c8e1635b1a090fcd  libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
! 6f5127d8350542bd8c7195bc7737c15a  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
! 9c0969c726d1a079ceacddb0d16b80f4  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
! 544504ecc00da9c90156898162a40492  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
! 28aec73b7cd10c11b9e1a909e8c4ba66  libstdc++-v3/testsuite/std/ranges/istream_view.cc
! 39a74ff1ef561d51b687d686060239c1  libstdc++-v3/testsuite/std/ranges/p2259.cc
! 8ad5c819617ad623f237ce25af7657a8  libstdc++-v3/testsuite/std/ranges/p2325.cc
! 5f258fdd276b98d0cf03b265e1546406  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
! 85a2edb450129d2ffc9c81303930f46f  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
! 220e7c63243ad2a4bfb6e409f46cb5bc  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
! 6ef0fdf48d8be5b751ba229554f9054d  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
*************** e3863aacf8b8ec733441630f7353c020  libstd
*** 100965,100971 ****
  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
--- 101492,101498 ----
  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
! 315ea42a1d905634a70b6bfebf2b60e4  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
*************** abd5e8d80e9d334fac20b0556b53af8a  libstd
*** 100996,101002 ****
  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
--- 101523,101529 ----
  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
! 0ae0ec517f6be1f4ef62b356e1b7758f  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
*************** ea84b2b1448a9f5cee6c20ded4a6a7a7  libstd
*** 101006,101017 ****
  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
--- 101533,101544 ----
  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
! 9f306fa5cc74a1bc33e821cb6c2686f5  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
! d840d65a3b66f6f82aeaafae71dd1853  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
*************** c836a90323b839246645b3db18ad61db  libstd
*** 101023,101029 ****
  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
--- 101550,101556 ----
  831e968fad59c8fb2c29852e989b4933  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
  c91d7743f7070c79d86515441fc7e347  libtool.m4
! 6440ed3f06adfd00004bae442da020dd  libvtv/ChangeLog
  917a384819d8c88f932f05b9f8901a27  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
*************** a82059e4cf6d1733664ef9a8ac817f42  libvtv
*** 101106,101112 ****
  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
--- 101633,101639 ----
  f1ea2b13357bfe01c43d3b6fbf31fd48  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  06c2854f9cfe5864b2885e0d0e9c512f  ltmain.sh
! 5a8e03071c7c90cd50a6ecf9ec3101c1  lto-plugin/ChangeLog
  48ea87886a6a768ab6024edccc8e1e31  lto-plugin/Makefile.am
  9113360bfd397d09dc99413406c60ad4  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
*************** dee72a6a60e99528b0d17bf3ff9a1e15  ltopti
*** 101118,101130 ****
  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
--- 101645,101657 ----
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 3c082eac4d3fb4968216f65bca9530b5  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
! 262d529ab10d5bd398f14fc1ec9fed1a  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
  e310820d0266ff02d41632dca1290258  maintainer-scripts/update_version_git
  4c0406d5444d6d2dc128b2d342d9e0ad  maintainer-scripts/update_web_docs_git
*************** cf2baa0854f564a7785307e79f155efc  symlin
*** 101138,101144 ****
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 412b3484f5008a5e1c0d6f1607d979ae  zlib/ChangeLog
  25f33f86e95b8478cd142323485efc71  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 101665,101671 ----
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! 1027c2fbfdfcd84db4e4b4055ebc26a5  zlib/ChangeLog
  25f33f86e95b8478cd142323485efc71  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
diff -Nrcpad gcc-10.3.0/Makefile.def gcc-10.4.0/Makefile.def
*** gcc-10.3.0/Makefile.def	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/Makefile.def	Tue Jun 28 08:54:27 2022
*************** flags_to_pass = { flag= CFLAGS_FOR_TARGE
*** 283,288 ****
--- 283,289 ----
  flags_to_pass = { flag= CPPFLAGS_FOR_TARGET ; };
  flags_to_pass = { flag= CXXFLAGS_FOR_TARGET ; };
  flags_to_pass = { flag= DLLTOOL_FOR_TARGET ; };
+ flags_to_pass = { flag= DSYMUTIL_FOR_TARGET ; };
  flags_to_pass = { flag= FLAGS_FOR_TARGET ; };
  flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; };
  flags_to_pass = { flag= GOC_FOR_TARGET ; };
diff -Nrcpad gcc-10.3.0/Makefile.in gcc-10.4.0/Makefile.in
*** gcc-10.3.0/Makefile.in	Thu Apr  8 11:57:03 2021
--- gcc-10.4.0/Makefile.in	Tue Jun 28 08:55:09 2022
*************** RPATH_ENVVAR = @RPATH_ENVVAR@
*** 109,114 ****
--- 109,117 ----
  # executables in PATH.
  GCC_SHLIB_SUBDIR = @GCC_SHLIB_SUBDIR@
  
+ # If the build should make suitable code for shared host resources.
+ host_shared = @host_shared@
+ 
  # Build programs are put under this directory.
  BUILD_SUBDIR = @build_subdir@
  # This is set by the configure script to the arguments to use when configuring
*************** BUILD_EXPORTS = \
*** 159,164 ****
--- 162,168 ----
  	GDC="$(GDC_FOR_BUILD)"; export GDC; \
  	GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \
  	DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
+ 	DSYMUTIL="$(DSYMUTIL_FOR_BUILD)"; export DSYMUTIL; \
  	LD="$(LD_FOR_BUILD)"; export LD; \
  	LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
  	NM="$(NM_FOR_BUILD)"; export NM; \
*************** HOST_EXPORTS = \
*** 200,205 ****
--- 204,210 ----
  	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
  	CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
  	DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ 	DSYMUTIL="$(DSYMUTIL)"; export DSYMUTIL; \
  	LD="$(LD)"; export LD; \
  	LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
  	NM="$(NM)"; export NM; \
*************** HOST_EXPORTS = \
*** 212,217 ****
--- 217,223 ----
  	READELF="$(READELF)"; export READELF; \
  	AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \
  	AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \
+ 	DSYMUTIL_FOR_TARGET="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL_FOR_TARGET; \
  	GCC_FOR_TARGET="$(GCC_FOR_TARGET)"; export GCC_FOR_TARGET; \
  	LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \
  	NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \
*************** BASE_TARGET_EXPORTS = \
*** 294,299 ****
--- 300,306 ----
  	GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
  	GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
  	DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
+ 	DSYMUTIL="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL; \
  	LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \
  	LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
  	LIPO="$(LIPO_FOR_TARGET)"; export LIPO; \
*************** CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
*** 356,361 ****
--- 363,369 ----
  CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
  CXX_FOR_BUILD = @CXX_FOR_BUILD@
  DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+ DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@
  GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
  GOC_FOR_BUILD = @GOC_FOR_BUILD@
  GDC_FOR_BUILD = @GDC_FOR_BUILD@
*************** AR_FLAGS = rc
*** 406,411 ****
--- 414,420 ----
  CC = @CC@
  CXX = @CXX@
  DLLTOOL = @DLLTOOL@
+ DSYMUTIL = @DSYMUTIL@
  LD = @LD@
  LIPO = @LIPO@
  NM = @NM@
*************** GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER)
*** 596,601 ****
--- 605,611 ----
  GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
  GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
  DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
+ DSYMUTIL_FOR_TARGET=@DSYMUTIL_FOR_TARGET@
  LD_FOR_TARGET=@LD_FOR_TARGET@
  
  LIPO_FOR_TARGET=@LIPO_FOR_TARGET@
*************** BASE_FLAGS_TO_PASS = \
*** 814,819 ****
--- 824,830 ----
  	"CPPFLAGS_FOR_TARGET=$(CPPFLAGS_FOR_TARGET)" \
  	"CXXFLAGS_FOR_TARGET=$(CXXFLAGS_FOR_TARGET)" \
  	"DLLTOOL_FOR_TARGET=$(DLLTOOL_FOR_TARGET)" \
+ 	"DSYMUTIL_FOR_TARGET=$(DSYMUTIL_FOR_TARGET)" \
  	"FLAGS_FOR_TARGET=$(FLAGS_FOR_TARGET)" \
  	"GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \
  	"GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \
*************** EXTRA_HOST_FLAGS = \
*** 889,894 ****
--- 900,906 ----
  	'CC=$(CC)' \
  	'CXX=$(CXX)' \
  	'DLLTOOL=$(DLLTOOL)' \
+ 	'DSYMUTIL=$(DSYMUTIL)' \
  	'GFORTRAN=$(GFORTRAN)' \
  	'GOC=$(GOC)' \
  	'GDC=$(GDC)' \
*************** EXTRA_TARGET_FLAGS = \
*** 947,952 ****
--- 959,965 ----
  	 $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
  	'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
+ 	'DSYMUTIL=$$(DSYMUTIL_FOR_TARGET)' \
  	'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
diff -Nrcpad gcc-10.3.0/Makefile.tpl gcc-10.4.0/Makefile.tpl
*** gcc-10.3.0/Makefile.tpl	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/Makefile.tpl	Tue Jun 28 08:54:27 2022
*************** RPATH_ENVVAR = @RPATH_ENVVAR@
*** 112,117 ****
--- 112,120 ----
  # executables in PATH.
  GCC_SHLIB_SUBDIR = @GCC_SHLIB_SUBDIR@
  
+ # If the build should make suitable code for shared host resources.
+ host_shared = @host_shared@
+ 
  # Build programs are put under this directory.
  BUILD_SUBDIR = @build_subdir@
  # This is set by the configure script to the arguments to use when configuring
*************** BUILD_EXPORTS = \
*** 162,167 ****
--- 165,171 ----
  	GDC="$(GDC_FOR_BUILD)"; export GDC; \
  	GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \
  	DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
+ 	DSYMUTIL="$(DSYMUTIL_FOR_BUILD)"; export DSYMUTIL; \
  	LD="$(LD_FOR_BUILD)"; export LD; \
  	LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
  	NM="$(NM_FOR_BUILD)"; export NM; \
*************** HOST_EXPORTS = \
*** 203,208 ****
--- 207,213 ----
  	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
  	CXX_FOR_BUILD="$(CXX_FOR_BUILD)"; export CXX_FOR_BUILD; \
  	DLLTOOL="$(DLLTOOL)"; export DLLTOOL; \
+ 	DSYMUTIL="$(DSYMUTIL)"; export DSYMUTIL; \
  	LD="$(LD)"; export LD; \
  	LDFLAGS="$(STAGE1_LDFLAGS) $(LDFLAGS)"; export LDFLAGS; \
  	NM="$(NM)"; export NM; \
*************** HOST_EXPORTS = \
*** 215,220 ****
--- 220,226 ----
  	READELF="$(READELF)"; export READELF; \
  	AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \
  	AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \
+ 	DSYMUTIL_FOR_TARGET="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL_FOR_TARGET; \
  	GCC_FOR_TARGET="$(GCC_FOR_TARGET)"; export GCC_FOR_TARGET; \
  	LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \
  	NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \
*************** BASE_TARGET_EXPORTS = \
*** 297,302 ****
--- 303,309 ----
  	GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
  	GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
  	DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
+ 	DSYMUTIL="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL; \
  	LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \
  	LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
  	LIPO="$(LIPO_FOR_TARGET)"; export LIPO; \
*************** CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
*** 359,364 ****
--- 366,372 ----
  CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@
  CXX_FOR_BUILD = @CXX_FOR_BUILD@
  DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+ DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@
  GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
  GOC_FOR_BUILD = @GOC_FOR_BUILD@
  GDC_FOR_BUILD = @GDC_FOR_BUILD@
*************** AR_FLAGS = rc
*** 409,414 ****
--- 417,423 ----
  CC = @CC@
  CXX = @CXX@
  DLLTOOL = @DLLTOOL@
+ DSYMUTIL = @DSYMUTIL@
  LD = @LD@
  LIPO = @LIPO@
  NM = @NM@
*************** GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER)
*** 519,524 ****
--- 528,534 ----
  GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
  GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
  DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
+ DSYMUTIL_FOR_TARGET=@DSYMUTIL_FOR_TARGET@
  LD_FOR_TARGET=@LD_FOR_TARGET@
  
  LIPO_FOR_TARGET=@LIPO_FOR_TARGET@
*************** EXTRA_HOST_FLAGS = \
*** 644,649 ****
--- 654,660 ----
  	'CC=$(CC)' \
  	'CXX=$(CXX)' \
  	'DLLTOOL=$(DLLTOOL)' \
+ 	'DSYMUTIL=$(DSYMUTIL)' \
  	'GFORTRAN=$(GFORTRAN)' \
  	'GOC=$(GOC)' \
  	'GDC=$(GDC)' \
*************** EXTRA_TARGET_FLAGS = \
*** 702,707 ****
--- 713,719 ----
  	 $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'CXXFLAGS=$$(CXXFLAGS_FOR_TARGET)' \
  	'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
+ 	'DSYMUTIL=$$(DSYMUTIL_FOR_TARGET)' \
  	'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
diff -Nrcpad gcc-10.3.0/NEWS gcc-10.4.0/NEWS
*** gcc-10.3.0/NEWS	Thu Apr  8 11:57:23 2021
--- gcc-10.4.0/NEWS	Tue Jun 28 08:55:31 2022
*************** see ONEWS.
*** 6,32 ****
  
  ======================================================================
  http://gcc.gnu.org/gcc-10/index.html
- 
                               GCC 10 Release Series
  
!    April 8, 2021
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 10.3.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 10.2 relative to previous releases of GCC.
  
  Release History
  
     GCC 10.3
!           April 8, 2021 ([2]changes, [3]documentation)
  
     GCC 10.2
!           July 23, 2020 ([4]changes, [5]documentation)
  
     GCC 10.1
!           May 7, 2020 ([6]changes, [7]documentation)
  
  References and Acknowledgements
  
--- 6,34 ----
  
  ======================================================================
  http://gcc.gnu.org/gcc-10/index.html
                               GCC 10 Release Series
  
!    June 28, 2022
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 10.4.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 10.3 relative to previous releases of GCC.
  
  Release History
  
+    GCC 10.4
+           June 28, 2022 ([2]changes, [3]documentation)
+ 
     GCC 10.3
!           April 8, 2021 ([4]changes, [5]documentation)
  
     GCC 10.2
!           July 23, 2020 ([6]changes, [7]documentation)
  
     GCC 10.1
!           May 7, 2020 ([8]changes, [9]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 34,93 ****
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [8]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 [9]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [10]GCC
!    project web site or contact the [11]GCC development mailing list.
  
!    To obtain GCC please use [12]our mirror sites or [13]our version
     control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [14]GCC manuals. If that fails, the
!     [15]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 [16]gcc@gcc.gnu.org. All of [17]our lists have public
      archives.
  
!    Copyright (C) [18]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 [19]maintained by the GCC team. Last modified
!    2021-04-08[20].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-10/changes.html
!    3. http://gcc.gnu.org/onlinedocs/10.3.0/
     4. http://gcc.gnu.org/gcc-10/changes.html
!    5. http://gcc.gnu.org/onlinedocs/10.2.0/
     6. http://gcc.gnu.org/gcc-10/changes.html
!    7. http://gcc.gnu.org/onlinedocs/10.1.0/
!    8. http://gcc.gnu.org/gcc-10/buildstat.html
!    9. http://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Contributors.html
!   10. http://gcc.gnu.org/index.html
!   11. mailto:gcc@gcc.gnu.org
!   12. http://gcc.gnu.org/mirrors.html
!   13. http://gcc.gnu.org/git.html
!   14. https://gcc.gnu.org/onlinedocs/
!   15. mailto:gcc-help@gcc.gnu.org
!   16. mailto:gcc@gcc.gnu.org
!   17. https://gcc.gnu.org/lists.html
!   18. https://www.fsf.org/
!   19. https://gcc.gnu.org/about.html
!   20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-10/changes.html
- 
                               GCC 10 Release Series
                          Changes, New Features, and Fixes
  
--- 36,96 ----
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [10]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 [11]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [12]GCC
!    project web site or contact the [13]GCC development mailing list.
  
!    To obtain GCC please use [14]our mirror sites or [15]our version
     control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [16]GCC manuals. If that fails, the
!     [17]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 [18]gcc@gcc.gnu.org. All of [19]our lists have public
      archives.
  
!    Copyright (C) [20]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 [21]maintained by the GCC team. Last modified
!    2022-06-28[22].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-10/changes.html
!    3. http://gcc.gnu.org/onlinedocs/10.4.0/
     4. http://gcc.gnu.org/gcc-10/changes.html
!    5. http://gcc.gnu.org/onlinedocs/10.3.0/
     6. http://gcc.gnu.org/gcc-10/changes.html
!    7. http://gcc.gnu.org/onlinedocs/10.2.0/
!    8. http://gcc.gnu.org/gcc-10/changes.html
!    9. http://gcc.gnu.org/onlinedocs/10.1.0/
!   10. http://gcc.gnu.org/gcc-10/buildstat.html
!   11. http://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Contributors.html
!   12. http://gcc.gnu.org/index.html
!   13. mailto:gcc@gcc.gnu.org
!   14. http://gcc.gnu.org/mirrors.html
!   15. http://gcc.gnu.org/git.html
!   16. https://gcc.gnu.org/onlinedocs/
!   17. mailto:gcc-help@gcc.gnu.org
!   18. mailto:gcc@gcc.gnu.org
!   19. https://gcc.gnu.org/lists.html
!   20. https://www.fsf.org/
!   21. https://gcc.gnu.org/about.html
!   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-10/changes.html
                               GCC 10 Release Series
                          Changes, New Features, and Fixes
  
*************** 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
--- 258,266 ----
         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
*************** int get_na�ve_pi() {
*** 489,494 ****
--- 492,502 ----
         change therefore breaks the ABI, but only for cases where this 126
         character limit was exceeded.
  
+   Go
+ 
+      * GCC 10 provides a complete implementation of the Go 1.14.6 user
+        packages.
+ 
  libgccjit
  
       * The libgccjit API gained four new entry points:
*************** 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
--- 540,546 ----
              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,819 ****
         for all SVE implementations. Adding -msve-vector-bits=512 makes the
         code specific to 512-bit SVE.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [60]GCC manuals. If that fails, the
!     [61]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 [62]gcc@gcc.gnu.org. All of [63]our lists have public
      archives.
  
!    Copyright (C) [64]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 [65]maintained by the GCC team. Last modified
!    2021-04-08[66].
  
  References
  
--- 808,848 ----
         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.
+ 
+ GCC 10.4
+ 
+    This is the [60]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 10.4 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
+   Target Specific Changes
+ 
+     x86-64
+ 
+      * The x86-64 ABI of passing and returning structures with a 64-bit
+        integer vector changed in GCC 10.1 when MMX is disabled. Disabling
+        MMX no longer changes how they are passed nor returned. This ABI
+        change is now diagnosed with -Wpsabi.
+ 
  
      For questions related to the use of GCC, please consult these web
!     pages and the [61]GCC manuals. If that fails, the
!     [62]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 [63]gcc@gcc.gnu.org. All of [64]our lists have public
      archives.
  
!    Copyright (C) [65]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 [66]maintained by the GCC team. Last modified
!    2022-06-28[67].
  
  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
--- 863,869 ----
    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
*** 876,911 ****
    57. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.0
    58. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.2
    59. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.3
!   60. https://gcc.gnu.org/onlinedocs/
!   61. mailto:gcc-help@gcc.gnu.org
!   62. mailto:gcc@gcc.gnu.org
!   63. https://gcc.gnu.org/lists.html
!   64. https://www.fsf.org/
!   65. https://gcc.gnu.org/about.html
!   66. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/index.html
- 
                                GCC 9 Release Series
  
!    Mar 12, 2020
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 9.3.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 9.2 relative to previous releases of GCC.
  
  Release History
  
     GCC 9.3
!           Mar 12, 2020 ([2]changes, [3]documentation)
  
     GCC 9.2
!           Aug 12, 2019 ([4]changes, [5]documentation)
  
     GCC 9.1
!           May 3, 2019 ([6]changes, [7]documentation)
  
  References and Acknowledgements
  
--- 905,946 ----
    57. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.0
    58. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.2
    59. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.3
!   60. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=10.4
!   61. https://gcc.gnu.org/onlinedocs/
!   62. mailto:gcc-help@gcc.gnu.org
!   63. mailto:gcc@gcc.gnu.org
!   64. https://gcc.gnu.org/lists.html
!   65. https://www.fsf.org/
!   66. https://gcc.gnu.org/about.html
!   67. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/index.html
                                GCC 9 Release Series
  
!    May 27, 2022
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 9.5.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 9.4 relative to previous releases of GCC.
  
  Release History
  
+    GCC 9.5
+           May 27, 2022 ([2]changes, [3]documentation)
+ 
+    GCC 9.4
+           June 1, 2021 ([4]changes, [5]documentation)
+ 
     GCC 9.3
!           Mar 12, 2020 ([6]changes, [7]documentation)
  
     GCC 9.2
!           Aug 12, 2019 ([8]changes, [9]documentation)
  
     GCC 9.1
!           May 3, 2019 ([10]changes, [11]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 913,972 ****
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [8]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 [9]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [10]GCC
!    project web site or contact the [11]GCC development mailing list.
  
!    To obtain GCC please use [12]our mirror sites or [13]our version
     control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [14]GCC manuals. If that fails, the
!     [15]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 [16]gcc@gcc.gnu.org. All of [17]our lists have public
      archives.
  
!    Copyright (C) [18]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 [19]maintained by the GCC team. Last modified
!    2020-03-12[20].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-9/changes.html
!    3. http://gcc.gnu.org/onlinedocs/9.3.0/
     4. http://gcc.gnu.org/gcc-9/changes.html
!    5. http://gcc.gnu.org/onlinedocs/9.2.0/
     6. http://gcc.gnu.org/gcc-9/changes.html
!    7. http://gcc.gnu.org/onlinedocs/9.1.0/
!    8. http://gcc.gnu.org/gcc-9/buildstat.html
!    9. http://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Contributors.html
!   10. http://gcc.gnu.org/index.html
!   11. mailto:gcc@gcc.gnu.org
!   12. http://gcc.gnu.org/mirrors.html
!   13. http://gcc.gnu.org/git.html
!   14. https://gcc.gnu.org/onlinedocs/
!   15. mailto:gcc-help@gcc.gnu.org
!   16. mailto:gcc@gcc.gnu.org
!   17. https://gcc.gnu.org/lists.html
!   18. https://www.fsf.org/
!   19. https://gcc.gnu.org/about.html
!   20. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/changes.html
- 
                                GCC 9 Release Series
                          Changes, New Features, and Fixes
  
--- 948,1010 ----
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [12]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 [13]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [14]GCC
!    project web site or contact the [15]GCC development mailing list.
  
!    To obtain GCC please use [16]our mirror sites or [17]our version
     control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [18]GCC manuals. If that fails, the
!     [19]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 [20]gcc@gcc.gnu.org. All of [21]our lists have public
      archives.
  
!    Copyright (C) [22]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 [23]maintained by the GCC team. Last modified
!    2022-05-27[24].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-9/changes.html
!    3. http://gcc.gnu.org/onlinedocs/9.5.0/
     4. http://gcc.gnu.org/gcc-9/changes.html
!    5. http://gcc.gnu.org/onlinedocs/9.4.0/
     6. http://gcc.gnu.org/gcc-9/changes.html
!    7. http://gcc.gnu.org/onlinedocs/9.3.0/
!    8. http://gcc.gnu.org/gcc-9/changes.html
!    9. http://gcc.gnu.org/onlinedocs/9.2.0/
!   10. http://gcc.gnu.org/gcc-9/changes.html
!   11. http://gcc.gnu.org/onlinedocs/9.1.0/
!   12. http://gcc.gnu.org/gcc-9/buildstat.html
!   13. http://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Contributors.html
!   14. http://gcc.gnu.org/index.html
!   15. mailto:gcc@gcc.gnu.org
!   16. http://gcc.gnu.org/mirrors.html
!   17. http://gcc.gnu.org/git.html
!   18. https://gcc.gnu.org/onlinedocs/
!   19. mailto:gcc-help@gcc.gnu.org
!   20. mailto:gcc@gcc.gnu.org
!   21. https://gcc.gnu.org/lists.html
!   22. https://www.fsf.org/
!   23. https://gcc.gnu.org/about.html
!   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/changes.html
                                GCC 9 Release Series
                          Changes, New Features, and Fixes
  
*************** GCC 9.3
*** 1701,1706 ****
--- 1739,1749 ----
  
  GCC 9.4
  
+    This is the [68]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 9.4 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
    Target Specific Changes
  
      AArch64
*************** GCC 9.4
*** 1719,1738 ****
         for all SVE implementations. Adding -msve-vector-bits=512 makes the
         code specific to 512-bit SVE.
  
  
      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-03-28[74].
  
  References
  
--- 1762,1788 ----
         for all SVE implementations. Adding -msve-vector-bits=512 makes the
         code specific to 512-bit SVE.
  
+ GCC 9.5
+ 
+    This is the [69]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 9.5 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 [70]GCC manuals. If that fails, the
!     [71]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 [72]gcc@gcc.gnu.org. All of [73]our lists have public
      archives.
  
!    Copyright (C) [74]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 [75]maintained by the GCC team. Last modified
!    2022-05-27[76].
  
  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
--- 1821,1827 ----
    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
*** 1803,1841 ****
    65. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.0
    66. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.2
    67. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.3
!   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-8/index.html
- 
                                GCC 8 Release Series
  
!    Mar 4, 2020
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 8.4.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 8.3 relative to previous releases of GCC.
  
  Release History
  
     GCC 8.4
!           Mar 4, 2020 ([2]changes, [3]documentation)
  
     GCC 8.3
!           Feb 22, 2019 ([4]changes, [5]documentation)
  
     GCC 8.2
!           Jul 26, 2018 ([6]changes, [7]documentation)
  
     GCC 8.1
!           May 2, 2018 ([8]changes, [9]documentation)
  
  References and Acknowledgements
  
--- 1853,1897 ----
    65. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.0
    66. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.2
    67. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.3
!   68. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.4
!   69. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=9.5
!   70. https://gcc.gnu.org/onlinedocs/
!   71. mailto:gcc-help@gcc.gnu.org
!   72. mailto:gcc@gcc.gnu.org
!   73. https://gcc.gnu.org/lists.html
!   74. https://www.fsf.org/
!   75. https://gcc.gnu.org/about.html
!   76. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/index.html
                                GCC 8 Release Series
  
!    (This release series is no longer supported.)
! 
!    May 14, 2021
  
     The [1]GNU project and the GCC developers are pleased to announce the
!    release of GCC 8.5.
  
     This release is a bug-fix release, containing fixes for regressions in
!    GCC 8.4 relative to previous releases of GCC.
  
  Release History
  
+    GCC 8.5
+           May 14, 2021 ([2]changes, [3]documentation)
+ 
     GCC 8.4
!           Mar 4, 2020 ([4]changes, [5]documentation)
  
     GCC 8.3
!           Feb 22, 2019 ([6]changes, [7]documentation)
  
     GCC 8.2
!           Jul 26, 2018 ([8]changes, [9]documentation)
  
     GCC 8.1
!           May 2, 2018 ([10]changes, [11]documentation)
  
  References and Acknowledgements
  
*************** References and Acknowledgements
*** 1843,1904 ****
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [10]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 [11]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [12]GCC
!    project web site or contact the [13]GCC development mailing list.
  
!    To obtain GCC please use [14]our mirror sites or [15]our version
     control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [16]GCC manuals. If that fails, the
!     [17]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 [18]gcc@gcc.gnu.org. All of [19]our lists have public
      archives.
  
!    Copyright (C) [20]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 [21]maintained by the GCC team. Last modified
!    2020-03-04[22].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-8/changes.html
!    3. http://gcc.gnu.org/onlinedocs/8.4.0/
     4. http://gcc.gnu.org/gcc-8/changes.html
!    5. http://gcc.gnu.org/onlinedocs/8.3.0/
     6. http://gcc.gnu.org/gcc-8/changes.html
!    7. http://gcc.gnu.org/onlinedocs/8.2.0/
     8. http://gcc.gnu.org/gcc-8/changes.html
!    9. http://gcc.gnu.org/onlinedocs/8.1.0/
!   10. http://gcc.gnu.org/gcc-8/buildstat.html
!   11. http://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Contributors.html
!   12. http://gcc.gnu.org/index.html
!   13. mailto:gcc@gcc.gnu.org
!   14. http://gcc.gnu.org/mirrors.html
!   15. http://gcc.gnu.org/git.html
!   16. https://gcc.gnu.org/onlinedocs/
!   17. mailto:gcc-help@gcc.gnu.org
!   18. mailto:gcc@gcc.gnu.org
!   19. https://gcc.gnu.org/lists.html
!   20. https://www.fsf.org/
!   21. https://gcc.gnu.org/about.html
!   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/changes.html
- 
                                GCC 8 Release Series
                          Changes, New Features, and Fixes
  
--- 1899,1961 ----
     supports several other languages aside from C, it now stands for the
     GNU Compiler Collection.
  
!    A list of [12]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 [13]amazing group of volunteers is
     what makes GCC successful.
  
!    For additional information about GCC please refer to the [14]GCC
!    project web site or contact the [15]GCC development mailing list.
  
!    To obtain GCC please use [16]our mirror sites or [17]our version
     control system.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [18]GCC manuals. If that fails, the
!     [19]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 [20]gcc@gcc.gnu.org. All of [21]our lists have public
      archives.
  
!    Copyright (C) [22]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 [23]maintained by the GCC team. Last modified
!    2022-05-06[24].
  
  References
  
     1. http://www.gnu.org/
     2. http://gcc.gnu.org/gcc-8/changes.html
!    3. http://gcc.gnu.org/onlinedocs/8.5.0/
     4. http://gcc.gnu.org/gcc-8/changes.html
!    5. http://gcc.gnu.org/onlinedocs/8.4.0/
     6. http://gcc.gnu.org/gcc-8/changes.html
!    7. http://gcc.gnu.org/onlinedocs/8.3.0/
     8. http://gcc.gnu.org/gcc-8/changes.html
!    9. http://gcc.gnu.org/onlinedocs/8.2.0/
!   10. http://gcc.gnu.org/gcc-8/changes.html
!   11. http://gcc.gnu.org/onlinedocs/8.1.0/
!   12. http://gcc.gnu.org/gcc-8/buildstat.html
!   13. http://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Contributors.html
!   14. http://gcc.gnu.org/index.html
!   15. mailto:gcc@gcc.gnu.org
!   16. http://gcc.gnu.org/mirrors.html
!   17. http://gcc.gnu.org/git.html
!   18. https://gcc.gnu.org/onlinedocs/
!   19. mailto:gcc-help@gcc.gnu.org
!   20. mailto:gcc@gcc.gnu.org
!   21. https://gcc.gnu.org/lists.html
!   22. https://www.fsf.org/
!   23. https://gcc.gnu.org/about.html
!   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/changes.html
                                GCC 8 Release Series
                          Changes, New Features, and Fixes
  
*************** New Languages and Language specific impr
*** 2142,2148 ****
       * Fixed illegal addresses generated from address expressions which
         refer only to offset 0.
       * Fixed a bug with reg+offset addressing on 32b segments. In 'large'
!        mode, the offset is treated as 32bits unless it's in global,
         read-only or kernarg address space.
       * Fixed a crash caused sometimes by calls with more than 4 arguments.
       * Fixed a mis-execution issue with kernels that have both unexpanded
--- 2199,2205 ----
       * Fixed illegal addresses generated from address expressions which
         refer only to offset 0.
       * Fixed a bug with reg+offset addressing on 32b segments. In 'large'
!        mode, the offset is treated as 32-bit unless it's in global,
         read-only or kernarg address space.
       * Fixed a crash caused sometimes by calls with more than 4 arguments.
       * Fixed a mis-execution issue with kernels that have both unexpanded
*************** 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]
--- 2240,2246 ----
  {
      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]
--- 2313,2319 ----
  {
      char a[] = "abcd1234";
      strcpy (a, a + 4);
!     …
  }
  warning: 'strcpy' accessing 5 bytes at offsets 0 and 4 overlaps 1 byte at offset
   4 [-Wrestrict]
*************** GCC 8.4
*** 2949,2954 ****
--- 3006,3016 ----
  
  GCC 8.5
  
+    This is the [38]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 8.5 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
    Target Specific Changes
  
      AArch64
*************** GCC 8.5
*** 2962,2979 ****
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [38]GCC manuals. If that fails, the
!     [39]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 [40]gcc@gcc.gnu.org. All of [41]our lists have public
      archives.
  
!    Copyright (C) [42]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 [43]maintained by the GCC team. Last modified
!    2021-03-28[44].
  
  References
  
--- 3024,3041 ----
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [39]GCC manuals. If that fails, the
!     [40]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 [41]gcc@gcc.gnu.org. All of [42]our lists have public
      archives.
  
!    Copyright (C) [43]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 [44]maintained by the GCC team. Last modified
!    2021-10-01[45].
  
  References
  
*************** References
*** 3014,3031 ****
    35. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.3
    36. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87137
    37. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.4
!   38. https://gcc.gnu.org/onlinedocs/
!   39. mailto:gcc-help@gcc.gnu.org
!   40. mailto:gcc@gcc.gnu.org
!   41. https://gcc.gnu.org/lists.html
!   42. https://www.fsf.org/
!   43. https://gcc.gnu.org/about.html
!   44. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/index.html
- 
                                GCC 7 Release Series
  
     Nov 14, 2019
  
     The [1]GNU project and the GCC developers are pleased to announce the
--- 3076,3095 ----
    35. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.3
    36. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87137
    37. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.4
!   38. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=8.5
!   39. https://gcc.gnu.org/onlinedocs/
!   40. mailto:gcc-help@gcc.gnu.org
!   41. mailto:gcc@gcc.gnu.org
!   42. https://gcc.gnu.org/lists.html
!   43. https://www.fsf.org/
!   44. https://gcc.gnu.org/about.html
!   45. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/index.html
                                GCC 7 Release Series
  
+    (This release series is no longer supported.)
+ 
     Nov 14, 2019
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** References and Acknowledgements
*** 3084,3090 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
--- 3148,3154 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-05-06[24].
  
  References
  
*************** 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
  
--- 3178,3183 ----
*************** Address 0x7fffb8dba990 is located in sta
*** 3231,3245 ****
       * The -fsanitize=signed-integer-overflow suboption of the
         UndefinedBehavior Sanitizer now diagnoses arithmetic overflows even
         on arithmetic operations with generic vectors.
!      * Version 5 of the [6]DWARF debugging information standard is
!        supported through the -gdwarf-5 option. The DWARF version 4
!        debugging information remains the default until consumers of
!        debugging information are adjusted.
  
  New Languages and Language specific improvements
  
     OpenACC support in C, C++, and Fortran continues to be maintained and
!    improved. See the [7]OpenACC and [8]Offloading wiki pages for further
     information.
  
    Ada
--- 3294,3308 ----
       * The -fsanitize=signed-integer-overflow suboption of the
         UndefinedBehavior Sanitizer now diagnoses arithmetic overflows even
         on arithmetic operations with generic vectors.
!      * Version 5 of the DWARF debugging information standard is supported
!        through the -gdwarf-5 option. The DWARF version 4 debugging
!        information remains the default until consumers of debugging
!        information are adjusted.
  
  New Languages and Language specific improvements
  
     OpenACC support in C, C++, and Fortran continues to be maintained and
!    improved. See the [6]OpenACC and [7]Offloading wiki pages for further
     information.
  
    Ada
*************** 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
--- 3546,3552 ----
      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=]
--- 3559,3565 ----
  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
--- 3607,3613 ----
  {
    char d[4];
    snprintf (d, sizeof d, "%#02x", x & 0xff);
!   …
  }
  
  warning: 'snprintf' output may be truncated before the last format character [-W
*************** note: 'snprintf' output between 3 and 5
*** 3558,3564 ****
              more cases of the problem than in prior GCC versions.
            + The -Wstringop-overflow=type option detects buffer overflow in
              calls to string handling functions like memcpy and strcpy. The
!             option relies on [9]Object Size Checking and has an effect
              similar to defining the _FORTIFY_SOURCE macro.
              -Wstringop-overflow=2 is enabled by default.
              For example, in the following snippet, because the call to
--- 3621,3627 ----
              more cases of the problem than in prior GCC versions.
            + The -Wstringop-overflow=type option detects buffer overflow in
              calls to string handling functions like memcpy and strcpy. The
!             option relies on [8]Object Size Checking and has an effect
              similar to defining the _FORTIFY_SOURCE macro.
              -Wstringop-overflow=2 is enabled by default.
              For example, in the following snippet, because the call to
*************** 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
--- 3635,3641 ----
    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
*************** enum {
*** 3648,3661 ****
         C++17 draft with the -std=c++1z or -std=gnu++1z flags, including if
         constexpr, class template argument deduction, auto template
         parameters, and structured bindings. For a full list of new
!        features, see [10]the C++ status page.
       * C++17 support for new of over-aligned types can be enabled in other
         modes with the -faligned-new flag.
       * The C++17 evaluation order requirements can be selected in other
         modes with the -fstrong-eval-order flag, or disabled in C++17 mode
         with -fno-strong-eval-order.
       * The default semantics of inherited constructors has changed in all
!        modes, following [11]P0136. Essentially, overload resolution
         happens as if calling the inherited constructor directly, and the
         compiler fills in construction of the other bases and members as
         needed. Most uses should not need any changes. The old behavior can
--- 3711,3724 ----
         C++17 draft with the -std=c++1z or -std=gnu++1z flags, including if
         constexpr, class template argument deduction, auto template
         parameters, and structured bindings. For a full list of new
!        features, see [9]the C++ status page.
       * C++17 support for new of over-aligned types can be enabled in other
         modes with the -faligned-new flag.
       * The C++17 evaluation order requirements can be selected in other
         modes with the -fstrong-eval-order flag, or disabled in C++17 mode
         with -fno-strong-eval-order.
       * The default semantics of inherited constructors has changed in all
!        modes, following [10]P0136. Essentially, overload resolution
         happens as if calling the inherited constructor directly, and the
         compiler fills in construction of the other bases and members as
         needed. Most uses should not need any changes. The old behavior can
*************** test.cc:4:11: error: expected ';' after
*** 3679,3685 ****
      Runtime Library (libstdc++)
  
       * The type of exception thrown by iostreams, std::ios_base::failure,
!        now uses the [12]cxx11 ABI.
       * Experimental support for C++17, including the following new
         features:
            + std::string_view;
--- 3742,3748 ----
      Runtime Library (libstdc++)
  
       * The type of exception thrown by iostreams, std::ios_base::failure,
!        now uses the [11]cxx11 ABI.
       * Experimental support for C++17, including the following new
         features:
            + std::string_view;
*************** 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
  
--- 3773,3782 ----
            + 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
  
*************** end program test
*** 3745,3751 ****
  At line 8 of file do_check_12.f90
  Fortran runtime error: Loop iterates infinitely
  
!      * Version 4.5 of the [13]OpenMP specification is now partially
         supported in the Fortran compiler; the largest missing item is
         structure element mapping.
       * User-defined derived-type input/output (UDTIO) is added.
--- 3808,3814 ----
  At line 8 of file do_check_12.f90
  Fortran runtime error: Loop iterates infinitely
  
!      * Version 4.5 of the [12]OpenMP specification is now partially
         supported in the Fortran compiler; the largest missing item is
         structure element mapping.
       * User-defined derived-type input/output (UDTIO) is added.
*************** libgccjit
*** 3778,3784 ****
  
     The libgccjit API gained support for marking calls as requiring
     tail-call optimization via a new entry point:
!    [14]gcc_jit_rvalue_set_bool_require_tail_call.
  
     libgccjit performs numerous checks at the API boundary, but if these
     succeed, it previously ignored errors and other diagnostics emitted
--- 3841,3847 ----
  
     The libgccjit API gained support for marking calls as requiring
     tail-call optimization via a new entry point:
!    [13]gcc_jit_rvalue_set_bool_require_tail_call.
  
     libgccjit performs numerous checks at the API boundary, but if these
     succeed, it previously ignored errors and other diagnostics emitted
*************** New Targets and Target Specific Improvem
*** 3799,3805 ****
       * The option -msign-return-address= is supported to enable return
         address protection using ARMv8.3-A Pointer Authentication
         Extensions. For more information on the arguments accepted by this
!        option, please refer to [15]AArch64-Options.
       * The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point
         Extensions are now supported. They can be used by specifying the
         -march=armv8.2-a or -march=armv8.2-a+fp16 options. The 16-bit
--- 3862,3868 ----
       * The option -msign-return-address= is supported to enable return
         address protection using ARMv8.3-A Pointer Authentication
         Extensions. For more information on the arguments accepted by this
!        option, please refer to [14]AArch64-Options.
       * The ARMv8.2-A architecture and the ARMv8.2-A 16-bit Floating-Point
         Extensions are now supported. They can be used by specifying the
         -march=armv8.2-a or -march=armv8.2-a+fp16 options. The 16-bit
*************** New Targets and Target Specific Improvem
*** 3854,3864 ****
         of intrinsics such as cdp, ldc, and others.
       * The configure option --with-multilib-list now accepts the value
         rmprofile to build multilib libraries for a range of embedded
!        targets. See our [16]installation instructions for details.
  
    AVR
  
!      * On the reduced Tiny cores, the progmem [17]variable attribute is
         now properly supported. Respective read-only variables are located
         in flash memory in section .progmem.data. No special code is needed
         to access such variables; the compiler automatically adds an offset
--- 3917,3927 ----
         of intrinsics such as cdp, ldc, and others.
       * The configure option --with-multilib-list now accepts the value
         rmprofile to build multilib libraries for a range of embedded
!        targets. See our [15]installation instructions for details.
  
    AVR
  
!      * On the reduced Tiny cores, the progmem [16]variable attribute is
         now properly supported. Respective read-only variables are located
         in flash memory in section .progmem.data. No special code is needed
         to access such variables; the compiler automatically adds an offset
*************** const int* get_address (unsigned idx)
*** 3883,3892 ****
  }
  
       * 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
         NOP instructions into the instruction stream. n must be a value
         known at compile time.
  
--- 3946,3955 ----
  }
  
       * 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 [17]built-in function that inserts n
         NOP instructions into the instruction stream. n must be a value
         known at compile time.
  
*************** const int* get_address (unsigned idx)
*** 3901,3907 ****
    NVPTX
  
       * OpenMP target regions can now be offloaded to NVidia PTX GPGPUs.
!        See the [19]Offloading Wiki on how to configure it.
  
    PowerPC / PowerPC64 / RS6000
  
--- 3964,3970 ----
    NVPTX
  
       * OpenMP target regions can now be offloaded to NVidia PTX GPGPUs.
!        See the [18]Offloading Wiki on how to configure it.
  
    PowerPC / PowerPC64 / RS6000
  
*************** Operating Systems
*** 3978,3984 ****
  
    Fuchsia
  
!      * Support has been added for the [20]Fuchsia OS.
  
    RTEMS
  
--- 4041,4047 ----
  
    Fuchsia
  
!      * Support has been added for the [19]Fuchsia OS.
  
    RTEMS
  
*************** x-early-inliner-iterations'?
*** 4095,4115 ****
            + GCC's C front end has been extended so that it can parse dumps
              of GCC's internal representations, allowing for DejaGnu tests
              that more directly exercise specific optimization passes. This
!             covers both the [21]GIMPLE representation (for testing
!             higher-level optimizations) and the [22]RTL representation,
              allowing for more direct testing of lower-level details, such
              as register allocation and instruction selection.
  
  GCC 7.1
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 7.2
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 4158,4178 ----
            + GCC's C front end has been extended so that it can parse dumps
              of GCC's internal representations, allowing for DejaGnu tests
              that more directly exercise specific optimization passes. This
!             covers both the [20]GIMPLE representation (for testing
!             higher-level optimizations) and the [21]RTL representation,
              allowing for more direct testing of lower-level details, such
              as register allocation and instruction selection.
  
  GCC 7.1
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 7.2
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 7.2
*** 4136,4142 ****
  
  GCC 7.3
  
!    This is the [25]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 4199,4205 ----
  
  GCC 7.3
  
!    This is the [24]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 7.3
*** 4145,4151 ****
  
      SPARC
  
!      * Workarounds for the four [26]LEON3FT errata GRLIB-TN-0010..0013
         have been added. Relevant errata are activated by the target
         specific -mfix-ut699, -mfix-ut700 and -mfix-gr712rc switches.
  
--- 4208,4214 ----
  
      SPARC
  
!      * Workarounds for the four [25]LEON3FT errata GRLIB-TN-0010..0013
         have been added. Relevant errata are activated by the target
         specific -mfix-ut699, -mfix-ut700 and -mfix-gr712rc switches.
  
*************** GCC 7.3
*** 4157,4188 ****
  
  GCC 7.4
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 7.5
  
!    This is the [28]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.5 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 [29]GCC manuals. If that fails, the
!     [30]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 [31]gcc@gcc.gnu.org. All of [32]our lists have public
      archives.
  
!    Copyright (C) [33]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 [34]maintained by the GCC team. Last modified
!    2020-04-07[35].
  
  References
  
--- 4220,4251 ----
  
  GCC 7.4
  
!    This is the [26]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 7.5
  
!    This is the [27]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 7.5 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 [28]GCC manuals. If that fails, the
!     [29]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 [30]gcc@gcc.gnu.org. All of [31]our lists have public
      archives.
  
!    Copyright (C) [32]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 [33]maintained by the GCC team. Last modified
!    2021-10-17[34].
  
  References
  
*************** References
*** 4191,4229 ****
     3. https://gcc.gnu.org/wiki/LRAIsDefault
     4. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/manual/profile_mode.html
     5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
!    6. http://www.dwarfstd.org/Download.php
!    7. https://gcc.gnu.org/wiki/OpenACC
!    8. https://gcc.gnu.org/wiki/Offloading
!    9. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Object-Size-Checking.html
!   10. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
!   11. https://wg21.link/p0136
!   12. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/using_dual_abi.html
!   13. https://www.openmp.org/specifications/
!   14. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/jit/topics/expressions.html#gcc_jit_rvalue_set_bool_require_tail_call
!   15. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AArch64-Options.html#AArch64-Options
!   16. https://gcc.gnu.org/install/configure.html
!   17. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AVR-Variable-Attributes.html
!   18. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AVR-Built-in-Functions.html
!   19. https://gcc.gnu.org/wiki/Offloading
!   20. https://fuchsia.googlesource.com/
!   21. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gccint/GIMPLE-Tests.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gccint/RTL-Tests.html
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
!   25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
!   26. https://www.gaisler.com/index.php/information/app-tech-notes
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.4
!   28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.5
!   29. https://gcc.gnu.org/onlinedocs/
!   30. mailto:gcc-help@gcc.gnu.org
!   31. mailto:gcc@gcc.gnu.org
!   32. https://gcc.gnu.org/lists.html
!   33. https://www.fsf.org/
!   34. https://gcc.gnu.org/about.html
!   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.)
--- 4254,4290 ----
     3. https://gcc.gnu.org/wiki/LRAIsDefault
     4. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/manual/profile_mode.html
     5. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
!    6. https://gcc.gnu.org/wiki/OpenACC
!    7. https://gcc.gnu.org/wiki/Offloading
!    8. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/Object-Size-Checking.html
!    9. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
!   10. https://wg21.link/p0136
!   11. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/libstdc++/manual/using_dual_abi.html
!   12. https://www.openmp.org/specifications/
!   13. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/jit/topics/expressions.html#gcc_jit_rvalue_set_bool_require_tail_call
!   14. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AArch64-Options.html#AArch64-Options
!   15. https://gcc.gnu.org/install/configure.html
!   16. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AVR-Variable-Attributes.html
!   17. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gcc/AVR-Built-in-Functions.html
!   18. https://gcc.gnu.org/wiki/Offloading
!   19. https://fuchsia.googlesource.com/
!   20. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gccint/GIMPLE-Tests.html
!   21. https://gcc.gnu.org/onlinedocs/gcc-7.1.0/gccint/RTL-Tests.html
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.0
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.2
!   24. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.3
!   25. https://www.gaisler.com/index.php/information/app-tech-notes
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.4
!   27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=7.5
!   28. https://gcc.gnu.org/onlinedocs/
!   29. mailto:gcc-help@gcc.gnu.org
!   30. mailto:gcc@gcc.gnu.org
!   31. https://gcc.gnu.org/lists.html
!   32. https://www.fsf.org/
!   33. https://gcc.gnu.org/about.html
!   34. 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.)
*************** References and Acknowledgements
*** 4286,4292 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
--- 4347,4353 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
*************** 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
  
--- 4377,4382 ----
*************** Operating Systems
*** 5025,5031 ****
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2020-08-01[33].
  
  References
  
--- 5085,5091 ----
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2021-10-31[33].
  
  References
  
*************** References
*** 5052,5058 ****
    21. http://www.musl-libc.org/
    22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
    23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
!   24. https://software.intel.com/content/www/us/en/develop/blogs/deprecate-pcommit-instruction.html
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
    26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
    27. https://gcc.gnu.org/onlinedocs/
--- 5112,5118 ----
    21. http://www.musl-libc.org/
    22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.2
    23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.3
!   24. https://www.intel.com/content/www/us/en/developer/articles/technical/deprecate-pcommit-instruction.html
    25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.4
    26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=6.5
    27. https://gcc.gnu.org/onlinedocs/
*************** 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.)
--- 5124,5129 ----
*************** References and Acknowledgements
*** 5127,5133 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
--- 5186,5192 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
*************** 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
  
--- 5216,5221 ----
*************** New Languages and Language specific impr
*** 5350,5358 ****
       * A new command-line option -Wbool-compare has been added for the C
         and C++ compilers, which warns about boolean expressions compared
         with an integer value different from true/false.
!      * Full support for [9]Cilk Plus has been added to the GCC compiler.
!        Cilk Plus is an extension to the C and C++ languages to support
!        data and task parallelism.
       * A new attribute no_reorder prevents reordering of selected symbols
         against other such symbols or inline assembler. This enables to
         link-time optimize the Linux kernel without having to resort to
--- 5408,5416 ----
       * A new command-line option -Wbool-compare has been added for the C
         and C++ compilers, which warns about boolean expressions compared
         with an integer value different from true/false.
!      * Full support for Cilk Plus has been added to the GCC compiler. Cilk
!        Plus is an extension to the C and C++ languages to support data and
!        task parallelism.
       * A new attribute no_reorder prevents reordering of selected symbols
         against other such symbols or inline assembler. This enables to
         link-time optimize the Linux kernel without having to resort to
*************** New Languages and Language specific impr
*** 5381,5387 ****
       * A new built-in function-like macro to determine the existence of an
         attribute, __has_attribute, has been added. The equivalent built-in
         macro __has_cpp_attribute was added to C++ to support
!        [10]Feature-testing recommendations for C++. The macro
         __has_attribute is added to all C-like languages as an extension:
  
  int
--- 5439,5445 ----
       * A new built-in function-like macro to determine the existence of an
         attribute, __has_attribute, has been added. The equivalent built-in
         macro __has_cpp_attribute was added to C++ to support
!        [9]Feature-testing recommendations for C++. The macro
         __has_attribute is added to all C-like languages as an extension:
  
  int
*************** calloc (size_t x, size_t y)
*** 5455,5478 ****
  
    C++
  
!      * G++ now supports [11]C++14 variable templates.
       * -Wnon-virtual-dtor doesn't warn anymore for final classes.
       * Excessive template instantiation depth is now a fatal error. This
         prevents excessive diagnostics that usually do not help to identify
         the problem.
       * G++ and libstdc++ now implement the feature-testing macros from
!        [12]Feature-testing recommendations for C++.
       * G++ now allows typename in a template template parameter.
  
  template<template<typename> typename X> struct D; // OK
  
!      * G++ now supports [13]C++14 aggregates with non-static data member
         initializers.
  
  struct A { int i, j = i; };
  A a = { 42 }; // a.j is also 42
  
!      * G++ now supports [14]C++14 extended constexpr.
  
  constexpr int f (int i)
  {
--- 5513,5536 ----
  
    C++
  
!      * G++ now supports [10]C++14 variable templates.
       * -Wnon-virtual-dtor doesn't warn anymore for final classes.
       * Excessive template instantiation depth is now a fatal error. This
         prevents excessive diagnostics that usually do not help to identify
         the problem.
       * G++ and libstdc++ now implement the feature-testing macros from
!        [11]Feature-testing recommendations for C++.
       * G++ now allows typename in a template template parameter.
  
  template<template<typename> typename X> struct D; // OK
  
!      * G++ now supports [12]C++14 aggregates with non-static data member
         initializers.
  
  struct A { int i, j = i; };
  A a = { 42 }; // a.j is also 42
  
!      * G++ now supports [13]C++14 extended constexpr.
  
  constexpr int f (int i)
  {
*************** constexpr int f (int i)
*** 5484,5490 ****
  
  constexpr int i = f(42); // i is 42
  
!      * G++ now supports the [15]C++14 sized deallocation functions.
  
  void operator delete (void *, std::size_t) noexcept;
  void operator delete[] (void *, std::size_t) noexcept;
--- 5542,5548 ----
  
  constexpr int i = f(42); // i is 42
  
!      * G++ now supports the [14]C++14 sized deallocation functions.
  
  void operator delete (void *, std::size_t) noexcept;
  void operator delete[] (void *, std::size_t) noexcept;
*************** void operator delete[] (void *, std::siz
*** 5497,5503 ****
         namespaces) to improve code generation. These warnings can be used
         at compile time, but they are more useful in combination with
         link-time optimization.
!      * G++ no longer supports [16]N3639 variable length arrays, as they
         were removed from the C++14 working paper prior to ratification.
         GNU VLAs are still supported, so VLA support is now the same in
         C++14 mode as in C++98 and C++11 modes.
--- 5555,5561 ----
         namespaces) to improve code generation. These warnings can be used
         at compile time, but they are more useful in combination with
         link-time optimization.
!      * G++ no longer supports [15]N3639 variable length arrays, as they
         were removed from the C++14 working paper prior to ratification.
         GNU VLAs are still supported, so VLA support is now the same in
         C++14 mode as in C++98 and C++11 modes.
*************** void operator delete[] (void *, std::siz
*** 5516,5522 ****
  
      Runtime Library (libstdc++)
  
!      * A [17]Dual ABI is provided by the library. A new ABI is enabled by
         default. The old ABI is still supported and can be used by defining
         the macro _GLIBCXX_USE_CXX11_ABI to 0 before including any C++
         standard library headers.
--- 5574,5580 ----
  
      Runtime Library (libstdc++)
  
!      * A [16]Dual ABI is provided by the library. A new ABI is enabled by
         default. The old ABI is still supported and can be used by defining
         the macro _GLIBCXX_USE_CXX11_ABI to 0 before including any C++
         standard library headers.
*************** void operator delete[] (void *, std::siz
*** 5525,5531 ****
         counting.
       * A new implementation of std::list is enabled by default, with an
         O(1) size() function;
!      * [18]Full support for C++11, including the following new features:
            + std::deque and std::vector<bool> meet the allocator-aware
              container requirements;
            + movable and swappable iostream classes;
--- 5583,5589 ----
         counting.
       * A new implementation of std::list is enabled by default, with an
         O(1) size() function;
!      * [17]Full support for C++11, including the following new features:
            + std::deque and std::vector<bool> meet the allocator-aware
              container requirements;
            + movable and swappable iostream classes;
*************** void operator delete[] (void *, std::siz
*** 5548,5561 ****
         prevent the use of hexadecimal notation for floating point types
         use str.unsetf(std::ios_base::floatfield) to clear the relevant
         bits in str.flags().
!      * [19]Full experimental support for C++14, including the following
         new features:
            + std::is_final type trait;
            + heterogeneous comparison lookup in associative containers.
            + global functions cbegin, cend, rbegin, rend, crbegin, and
              crend for range access to containers, arrays and initializer
              lists.
!      * [20]Improved experimental support for the Library Fundamentals TS,
         including:
            + class std::experimental::any;
            + function template std::experimental::apply;
--- 5606,5619 ----
         prevent the use of hexadecimal notation for floating point types
         use str.unsetf(std::ios_base::floatfield) to clear the relevant
         bits in str.flags().
!      * [18]Full experimental support for C++14, including the following
         new features:
            + std::is_final type trait;
            + heterogeneous comparison lookup in associative containers.
            + global functions cbegin, cend, rbegin, rend, crbegin, and
              crend for range access to containers, arrays and initializer
              lists.
!      * [19]Improved experimental support for the Library Fundamentals TS,
         including:
            + class std::experimental::any;
            + function template std::experimental::apply;
*************** void operator delete[] (void *, std::siz
*** 5566,5578 ****
            + function template std::experimental::not_fn.
       * New random number distributions logistic_distribution and
         uniform_on_sphere_distribution as extensions.
!      * [21]GDB Xmethods for containers and std::unique_ptr.
  
    Fortran
  
       * Compatibility notice:
            + The version of the module files (.mod) has been incremented.
!           + For free-form source files [22]-Werror=line-truncation is now
              enabled by default. Note that comments exceeding the line
              length are not diagnosed. (For fixed-form source code, the
              same warning is available but turned off by default, such that
--- 5624,5636 ----
            + function template std::experimental::not_fn.
       * New random number distributions logistic_distribution and
         uniform_on_sphere_distribution as extensions.
!      * [20]GDB Xmethods for containers and std::unique_ptr.
  
    Fortran
  
       * Compatibility notice:
            + The version of the module files (.mod) has been incremented.
!           + For free-form source files [21]-Werror=line-truncation is now
              enabled by default. Note that comments exceeding the line
              length are not diagnosed. (For fixed-form source code, the
              same warning is available but turned off by default, such that
*************** void operator delete[] (void *, std::siz
*** 5586,5594 ****
              by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
              options of -std=.
       * Incomplete support for colorizing diagnostics emitted by gfortran
!        has been added. The option [23]-fdiagnostics-color controls when
         color is used in diagnostics. The default value of this option can
!        be [24]configured when building GCC. The GCC_COLORS environment
         variable can be used to customize the colors or disable coloring
         completely. Sample diagnostics output:
        $ gfortran -fdiagnostics-color=always -Wuse-without-only test.f90
--- 5644,5652 ----
              by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
              options of -std=.
       * Incomplete support for colorizing diagnostics emitted by gfortran
!        has been added. The option [22]-fdiagnostics-color controls when
         color is used in diagnostics. The default value of this option can
!        be [23]configured when building GCC. The GCC_COLORS environment
         variable can be used to customize the colors or disable coloring
         completely. Sample diagnostics output:
        $ gfortran -fdiagnostics-color=always -Wuse-without-only test.f90
*************** void operator delete[] (void *, std::siz
*** 5608,5625 ****
         public entities of the used module.
       * Formatted READ and WRITE statements now work correctly in
         locale-aware programs. For more information and potential caveats,
!        see [25]Section 5.3 Thread-safety of the runtime library in the
         manual.
!      * [26]Fortran 2003:
            + The intrinsic IEEE modules (IEEE_FEATURES, IEEE_EXCEPTIONS and
              IEEE_ARITHMETIC) are now supported.
!      * [27]Fortran 2008:
!           + [28]Coarrays: Full experimental support of Fortran 2008's
              coarrays with -fcoarray=lib except for allocatable/pointer
              components of derived-type coarrays. GCC currently only ships
              with a single-image library (libcaf_single), but multi-image
              support based on MPI and GASNet is provided by the libraries
!             of the [29]OpenCoarrays project.
       * TS18508 Additional Parallel Features in Fortran:
            + Support for the collective intrinsic subroutines CO_MAX,
              CO_MIN, CO_SUM, CO_BROADCAST and CO_REDUCE has been added,
--- 5666,5683 ----
         public entities of the used module.
       * Formatted READ and WRITE statements now work correctly in
         locale-aware programs. For more information and potential caveats,
!        see [24]Section 5.3 Thread-safety of the runtime library in the
         manual.
!      * [25]Fortran 2003:
            + The intrinsic IEEE modules (IEEE_FEATURES, IEEE_EXCEPTIONS and
              IEEE_ARITHMETIC) are now supported.
!      * [26]Fortran 2008:
!           + [27]Coarrays: Full experimental support of Fortran 2008's
              coarrays with -fcoarray=lib except for allocatable/pointer
              components of derived-type coarrays. GCC currently only ships
              with a single-image library (libcaf_single), but multi-image
              support based on MPI and GASNet is provided by the libraries
!             of the [28]OpenCoarrays project.
       * TS18508 Additional Parallel Features in Fortran:
            + Support for the collective intrinsic subroutines CO_MAX,
              CO_MIN, CO_SUM, CO_BROADCAST and CO_REDUCE has been added,
*************** void operator delete[] (void *, std::siz
*** 5634,5640 ****
  
       * GCC 5 provides a complete implementation of the Go 1.4.2 release.
       * Building GCC 5 with Go enabled will install two new programs:
!        [30]go and [31]gofmt.
  
  libgccjit
  
--- 5692,5698 ----
  
       * GCC 5 provides a complete implementation of the Go 1.4.2 release.
       * Building GCC 5 with Go enabled will install two new programs:
!        [29]go and [30]gofmt.
  
  libgccjit
  
*************** libgccjit
*** 5642,5658 ****
     embedding in other processes (such as interpreters), suitable for
     Just-In-Time compilation to machine code.
  
!    The shared library has a [32]C API and a [33]C++ wrapper API providing
     some "syntactic sugar". There are also bindings available from 3rd
!    parties for [34]Python and for [35]D.
  
!    For example, this library can be used by interpreters for [36]compiling
     functions from bytecode to machine code.
  
     The library can also be used for ahead-of-time compilation, enabling
     GCC to be plugged into a pre-existing front end. An example of using
     this to build a compiler for an esoteric language we'll refer to as
!    "brainf" can be seen [37]here.
  
     libgccjit is licensed under the GPLv3 (or at your option, any later
     version)
--- 5700,5716 ----
     embedding in other processes (such as interpreters), suitable for
     Just-In-Time compilation to machine code.
  
!    The shared library has a [31]C API and a [32]C++ wrapper API providing
     some "syntactic sugar". There are also bindings available from 3rd
!    parties for [33]Python and for [34]D.
  
!    For example, this library can be used by interpreters for [35]compiling
     functions from bytecode to machine code.
  
     The library can also be used for ahead-of-time compilation, enabling
     GCC to be plugged into a pre-existing front end. An example of using
     this to build a compiler for an esoteric language we'll refer to as
!    "brainf" can be seen [36]here.
  
     libgccjit is licensed under the GPLv3 (or at your option, any later
     version)
*************** New Targets and Target Specific Improvem
*** 5731,5737 ****
  
       * The compiler no more supports individual devices like ATmega8.
         Specifying, say, -mmcu=atmega8 triggers the usage of the
!        device-specific [38]spec file specs-atmega8 which is part of the
         installation and describes options for the sub-processes like
         compiler proper, assembler and linker. You can add support for a
         new device -mmcu=mydevice as follows:
--- 5789,5795 ----
  
       * The compiler no more supports individual devices like ATmega8.
         Specifying, say, -mmcu=atmega8 triggers the usage of the
!        device-specific [37]spec file specs-atmega8 which is part of the
         installation and describes options for the sub-processes like
         compiler proper, assembler and linker. You can add support for a
         new device -mmcu=mydevice as follows:
*************** New Targets and Target Specific Improvem
*** 5761,5767 ****
          -mn-flash=size
                  Specify the flash size of the device in units of 64 KiB,
                  rounded up to the next integer as needed. This option
!                 affects the availability of the [39]AVR address-spaces.
  
          -mskip-bug
                  Set if the device is affected by the respective silicon
--- 5819,5825 ----
          -mn-flash=size
                  Specify the flash size of the device in units of 64 KiB,
                  rounded up to the next integer as needed. This option
!                 affects the availability of the [38]AVR address-spaces.
  
          -mskip-bug
                  Set if the device is affected by the respective silicon
*************** New Targets and Target Specific Improvem
*** 5772,5786 ****
  
    IA-32/x86-64
  
!      * New [40]ISA extensions support AVX-512{BW,DQ,VL,IFMA,VBMI} of
!        Intel's CPU codenamed Skylake Server was added to GCC. That
!        includes inline assembly support, new intrinsics, and basic
!        autovectorization. These new AVX-512 extensions are available via
!        the following GCC switches: AVX-512 Vector Length EVEX feature:
!        -mavx512vl, AVX-512 Byte and Word instructions: -mavx512bw, AVX-512
!        Dword and Qword instructions: -mavx512dq, AVX-512 FMA-52
!        instructions: -mavx512ifma and for AVX-512 Vector Bit Manipulation
!        Instructions: -mavx512vbmi.
       * New ISA extensions support Intel MPX was added to GCC. This new
         extension is available via the -mmpx compiler switch. Intel MPX is
         a set of processor features which, with compiler, run-time library
--- 5830,5843 ----
  
    IA-32/x86-64
  
!      * New ISA extensions support AVX-512{BW,DQ,VL,IFMA,VBMI} of Intel's
!        CPU codenamed Skylake Server was added to GCC. That includes inline
!        assembly support, new intrinsics, and basic autovectorization.
!        These new AVX-512 extensions are available via the following GCC
!        switches: AVX-512 Vector Length EVEX feature: -mavx512vl, AVX-512
!        Byte and Word instructions: -mavx512bw, AVX-512 Dword and Qword
!        instructions: -mavx512dq, AVX-512 FMA-52 instructions: -mavx512ifma
!        and for AVX-512 Vector Bit Manipulation Instructions: -mavx512vbmi.
       * New ISA extensions support Intel MPX was added to GCC. This new
         extension is available via the -mmpx compiler switch. Intel MPX is
         a set of processor features which, with compiler, run-time library
*************** Other significant improvements
*** 5943,5949 ****
  
                                      GCC 5.2
  
!    This is the [41]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 6000,6006 ----
  
                                      GCC 5.2
  
!    This is the [39]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 5984,5990 ****
  
                                      GCC 5.3
  
!    This is the [42]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 6041,6047 ----
  
                                      GCC 5.3
  
!    This is the [40]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 6006,6019 ****
  
                                      GCC 5.4
  
!    This is the [43]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
                                      GCC 5.5
  
!    This is the [44]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 6063,6076 ----
  
                                      GCC 5.4
  
!    This is the [41]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.4 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
                                      GCC 5.5
  
!    This is the [42]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 5.5 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** Target Specific Changes
*** 6022,6102 ****
  
    IA-32/x86-64
  
!      * Support for the [45]deprecated pcommit instruction has been
         removed.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [46]GCC manuals. If that fails, the
!     [47]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 [48]gcc@gcc.gnu.org. All of [49]our lists have public
      archives.
  
!    Copyright (C) [50]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 [51]maintained by the GCC team. Last modified
!    2020-05-31[52].
  
  References
  
     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
     8. https://gcc.gnu.org/install/configure.html
!    9. https://www.cilkplus.org/
!   10. https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
!   11. http://gcc.gnu.org/projects/cxx1y.html
!   12. https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
    13. http://gcc.gnu.org/projects/cxx1y.html
    14. http://gcc.gnu.org/projects/cxx1y.html
!   15. http://gcc.gnu.org/projects/cxx1y.html
!   16. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
!   17. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
!   18. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2011
    19. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
!   20. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
!   21. https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html
!   23. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html
!   24. https://gcc.gnu.org/install/configure.html
!   25. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Thread-safety-of-the-runtime-library.html
!   26. https://gcc.gnu.org/wiki/Fortran2003Status
!   27. https://gcc.gnu.org/wiki/Fortran2008Status
!   28. https://gcc.gnu.org/wiki/Coarray
!   29. http://www.opencoarrays.org/
!   30. https://golang.org/cmd/go/
!   31. https://golang.org/cmd/gofmt/
!   32. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/index.html
!   33. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/cp/index.html
!   34. https://github.com/davidmalcolm/pygccjit
!   35. https://github.com/ibuclaw/gccjitd
!   36. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial04.html
!   37. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html
!   38. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
!   39. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
!   40. https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf
!   41. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.2
!   42. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.3
!   43. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
!   44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
!   45. https://software.intel.com/content/www/us/en/develop/blogs/deprecate-pcommit-instruction.html
!   46. https://gcc.gnu.org/onlinedocs/
!   47. mailto:gcc-help@gcc.gnu.org
!   48. mailto:gcc@gcc.gnu.org
!   49. https://gcc.gnu.org/lists.html
!   50. https://www.fsf.org/
!   51. https://gcc.gnu.org/about.html
!   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.)
--- 6079,6156 ----
  
    IA-32/x86-64
  
!      * Support for the [43]deprecated pcommit instruction has been
         removed.
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [44]GCC manuals. If that fails, the
!     [45]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 [46]gcc@gcc.gnu.org. All of [47]our lists have public
      archives.
  
!    Copyright (C) [48]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 [49]maintained by the GCC team. Last modified
!    2022-03-11[50].
  
  References
  
     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
     8. https://gcc.gnu.org/install/configure.html
!    9. https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
!   10. http://gcc.gnu.org/projects/cxx1y.html
!   11. https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
!   12. http://gcc.gnu.org/projects/cxx1y.html
    13. http://gcc.gnu.org/projects/cxx1y.html
    14. http://gcc.gnu.org/projects/cxx1y.html
!   15. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
!   16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
!   17. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2011
!   18. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
    19. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
!   20. https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html
!   21. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html
!   22. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html
!   23. https://gcc.gnu.org/install/configure.html
!   24. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Thread-safety-of-the-runtime-library.html
!   25. https://gcc.gnu.org/wiki/Fortran2003Status
!   26. https://gcc.gnu.org/wiki/Fortran2008Status
!   27. https://gcc.gnu.org/wiki/Coarray
!   28. http://www.opencoarrays.org/
!   29. https://pkg.go.dev/cmd/go
!   30. https://pkg.go.dev/cmd/gofmt
!   31. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/index.html
!   32. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/cp/index.html
!   33. https://github.com/davidmalcolm/pygccjit
!   34. https://github.com/ibuclaw/gccjitd
!   35. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial04.html
!   36. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html
!   37. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
!   38. https://gcc.gnu.org/onlinedocs/gcc/Named-Address-Spaces.html
!   39. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.2
!   40. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.3
!   41. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.4
!   42. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=5.5
!   43. https://www.intel.com/content/www/us/en/developer/articles/technical/deprecate-pcommit-instruction.html
!   44. https://gcc.gnu.org/onlinedocs/
!   45. mailto:gcc-help@gcc.gnu.org
!   46. mailto:gcc@gcc.gnu.org
!   47. https://gcc.gnu.org/lists.html
!   48. https://www.fsf.org/
!   49. https://gcc.gnu.org/about.html
!   50. 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.)
*************** References and Acknowledgements
*** 6159,6165 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
--- 6213,6219 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
*************** 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
  
--- 6243,6248 ----
*************** 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
--- 6356,6376 ----
         -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.
--- 6475,6482 ----
  // 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
--- 6569,6575 ----
         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
*************** GCC 4.9.4
*** 6799,6805 ****
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2021-03-31[34].
  
  References
  
--- 6852,6858 ----
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2021-07-28[34].
  
  References
  
*************** 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.)
--- 6892,6897 ----
*************** References and Acknowledgements
*** 6905,6911 ****
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2020-01-14[26].
  
  References
  
--- 6957,6963 ----
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2021-07-28[26].
  
  References
  
*************** 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
  
--- 6989,6994 ----
*************** 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; })
  
--- 7117,7124 ----
         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
--- 7242,7249 ----
              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
--- 7270,7276 ----
       * 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
--- 7282,7288 ----
         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;
--- 7377,7384 ----
      }
         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;
*************** GCC 4.8.5
*** 7661,7667 ****
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2020-03-26[44].
  
  References
  
--- 7712,7718 ----
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2021-07-28[44].
  
  References
  
*************** 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.)
--- 7762,7767 ----
*************** References and Acknowledgements
*** 7774,7780 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
--- 7824,7830 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
*************** 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
  
--- 7854,7859 ----
*************** 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 {
--- 8184,8190 ----
  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)
--- 8378,8384 ----
  
       * 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
--- 8422,8428 ----
         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.
--- 8434,8440 ----
            + 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.
*************** GCC 4.7.4
*** 8596,8602 ****
     provided this notice is preserved.
  
     These pages are [54]maintained by the GCC team. Last modified
!    2019-11-28[55].
  
  References
  
--- 8645,8651 ----
     provided this notice is preserved.
  
     These pages are [54]maintained by the GCC team. Last modified
!    2022-02-10[55].
  
  References
  
*************** References
*** 8633,8650 ****
    31. https://gcc.gnu.org/wiki/CoarrayLib
    32. https://gcc.gnu.org/wiki/TS29113Status
    33. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
!   34. https://golang.org/doc/go1
    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
!   42. http://www.dwarfstd.org/ShowIssue.php?issue=140425.1
!   43. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
    44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
!   45. https://golang.org/doc/go1
    46. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
    47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
    48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4
--- 8682,8699 ----
    31. https://gcc.gnu.org/wiki/CoarrayLib
    32. https://gcc.gnu.org/wiki/TS29113Status
    33. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
!   34. https://go.dev/doc/go1
    35. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
!   36. http://www.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. https://www.dwarfstd.org/ShowIssue.php?issue=100909.1
!   41. https://www.dwarfstd.org/ShowIssue.php?issue=100909.2
!   42. https://www.dwarfstd.org/ShowIssue.php?issue=140425.1
!   43. https://www.dwarfstd.org/ShowIssue.php?issue=110722.1
    44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
!   45. https://go.dev/doc/go1
    46. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
    47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
    48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4
*************** 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.)
--- 8706,8711 ----
*************** References and Acknowledgements
*** 8720,8726 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2020-01-14[24].
  
  References
  
--- 8768,8774 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
*************** 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
  
--- 8798,8803 ----
*************** 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
--- 9137,9143 ----
  
       * [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.
--- 9192,9198 ----
              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,9215 ****
              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.
  
    Go
  
!    Support for the [19]Go programming language has been added to GCC. It
!    is not enabled by default when you build GCC; use the
!    --enable-languages configure option to build it. The driver program for
!    compiling Go code is gccgo.
  
     Go is currently known to work on GNU/Linux and RTEMS. Solaris support
     is in progress. It may or may not work on other platforms.
--- 9247,9262 ----
              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.
  
    Go
  
!    Support for the Go programming language has been added to GCC. It is
!    not enabled by default when you build GCC; use the --enable-languages
!    configure option to build it. The driver program for compiling Go code
!    is gccgo.
  
     Go is currently known to work on GNU/Linux and RTEMS. Solaris support
     is in progress. It may or may not work on other platforms.
*************** Changes for GCC Developers
*** 9606,9651 ****
  
  GCC 4.6.1
  
!    This is the [20]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.6.2
  
!    This is the [21]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.6.3
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.6.4
  
!    This is the [23]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.4 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 [24]GCC manuals. If that fails, the
!     [25]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 [26]gcc@gcc.gnu.org. All of [27]our lists have public
      archives.
  
!    Copyright (C) [28]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 [29]maintained by the GCC team. Last modified
!    2019-11-28[30].
  
  References
  
--- 9653,9698 ----
  
  GCC 4.6.1
  
!    This is the [19]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.6.2
  
!    This is the [20]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.6.3
  
!    This is the [21]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 4.6.4
  
!    This is the [22]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.6.4 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 [23]GCC manuals. If that fails, the
!     [24]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 [25]gcc@gcc.gnu.org. All of [26]our lists have public
      archives.
  
!    Copyright (C) [27]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 [28]maintained by the GCC team. Last modified
!    2021-12-05[29].
  
  References
  
*************** References
*** 9667,9687 ****
    16. https://gcc.gnu.org/wiki/OOP
    17. https://gcc.gnu.org/wiki/Coarray
    18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
!   19. https://golang.org/
!   20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
!   21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
!   23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
!   24. https://gcc.gnu.org/onlinedocs/
!   25. mailto:gcc-help@gcc.gnu.org
!   26. mailto:gcc@gcc.gnu.org
!   27. https://gcc.gnu.org/lists.html
!   28. https://www.fsf.org/
!   29. https://gcc.gnu.org/about.html
!   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.)
--- 9714,9732 ----
    16. https://gcc.gnu.org/wiki/OOP
    17. https://gcc.gnu.org/wiki/Coarray
    18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
!   19. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
!   20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
!   21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
!   22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
!   23. https://gcc.gnu.org/onlinedocs/
!   24. mailto:gcc-help@gcc.gnu.org
!   25. mailto:gcc@gcc.gnu.org
!   26. https://gcc.gnu.org/lists.html
!   27. https://www.fsf.org/
!   28. https://gcc.gnu.org/about.html
!   29. 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.)
*************** References and Acknowledgements
*** 9744,9750 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2020-01-14[19].
  
  References
  
--- 9789,9795 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
*************** 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
  
--- 9814,9819 ----
*************** 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
--- 10050,10056 ----
         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
--- 10132,10138 ----
  
    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
*************** GCC 4.5.4
*** 10417,10427 ****
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2019-11-28[33].
  
  References
  
!    1. http://www.multiprecision.org/mpc/
     2. https://gcc.gnu.org/install/prerequisites.html
     3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
     4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
--- 10461,10471 ----
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2022-02-02[33].
  
  References
  
!    1. https://www.multiprecision.org/mpc/
     2. https://gcc.gnu.org/install/prerequisites.html
     3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
     4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
*************** 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.
--- 10500,10505 ----
*************** References and Acknowledgements
*** 10528,10534 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2020-01-14[22].
  
  References
  
--- 10571,10577 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2021-07-28[22].
  
  References
  
*************** 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
  
--- 10599,10604 ----
*************** GCC 4.4.7
*** 11159,11165 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2019-11-28[24].
  
  References
  
--- 11201,11207 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
*************** 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.)
--- 11231,11236 ----
*************** References and Acknowledgements
*** 11258,11264 ****
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2020-01-14[21].
  
  References
  
--- 11299,11305 ----
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2021-07-28[21].
  
  References
  
*************** 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
  
--- 11326,11331 ----
*************** GCC 4.3.6
*** 12064,12070 ****
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2019-11-28[31].
  
  References
  
--- 12104,12110 ----
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2021-07-28[31].
  
  References
  
*************** 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.)
--- 12141,12146 ----
*************** References and Acknowledgements
*** 12164,12170 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2020-01-14[19].
  
  References
  
--- 12203,12209 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
*************** 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
  
--- 12228,12233 ----
*************** Other significant improvements
*** 12493,12499 ****
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2019-11-28[12].
  
  References
  
--- 12531,12537 ----
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2021-07-28[12].
  
  References
  
*************** 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.)
--- 12549,12554 ----
*************** References and Acknowledgements
*** 12568,12574 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2020-01-14[17].
  
  References
  
--- 12605,12611 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2021-07-28[17].
  
  References
  
*************** 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
  
--- 12628,12633 ----
*************** New Languages and Language specific impr
*** 12836,12844 ****
                 o BufferedImage and GtkImage rewrites. All image drawing
                   operations should now work correctly (flipping requires
                   gtk+ >= 2.6)
-                o Future Graphics2D, image and text work is documented at:
-                  [2]http://developer.classpath.org/mediation/ClasspathGrap
-                  hicsImagesText
                 o When gtk+ 2.6 or higher is installed the default log
                   handler will produce stack traces whenever a WARNING,
                   CRITICAL or ERROR message is produced.
--- 12872,12877 ----
*************** New Languages and Language specific impr
*** 12981,12987 ****
                   most of the work is currently being done around gcj/gij
                   we want this framework to be as VM neutral as possible.
                   Early design is described in:
!                  [3]https://gcc.gnu.org/ml/java/2005-05/msg00260.html
                 o QT4 AWT peers, enable by giving configure
                   --enable-qt-peer. Included, but not ready for production
                   yet. They are explicitly disabled and not supported. But
--- 13014,13020 ----
                   most of the work is currently being done around gcj/gij
                   we want this framework to be as VM neutral as possible.
                   Early design is described in:
!                  [2]https://gcc.gnu.org/ml/java/2005-05/msg00260.html
                 o QT4 AWT peers, enable by giving configure
                   --enable-qt-peer. Included, but not ready for production
                   yet. They are explicitly disabled and not supported. But
*************** New Languages and Language specific impr
*** 12990,12996 ****
                   explicitly enable them to try them out (and they will
                   most likely contain bugs).
                 o Documentation fixes all over the place. See
!                  [4]http://developer.classpath.org/doc/
  
  New Targets and Target Specific Improvements
  
--- 13023,13029 ----
                   explicitly enable them to try them out (and they will
                   most likely contain bugs).
                 o Documentation fixes all over the place. See
!                  [3]https://developer.classpath.org/doc/
  
  New Targets and Target Specific Improvements
  
*************** New Targets and Target Specific Improvem
*** 13059,13065 ****
              instructions implicitly truncate the shift count to six bits.
       * Back-end support for the following generic features has been
         implemented:
!           + The full set of [5]built-in functions for atomic memory
              access.
            + The -fstack-protector feature.
            + The optimization pass avoiding unnecessary stores of incoming
--- 13092,13098 ----
              instructions implicitly truncate the shift count to six bits.
       * Back-end support for the following generic features has been
         implemented:
!           + The full set of [4]built-in functions for atomic memory
              access.
            + The -fstack-protector feature.
            + The optimization pass avoiding unnecessary stores of incoming
*************** Other significant improvements
*** 13095,13101 ****
  
  GCC 4.1.2
  
!    This is the [6]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.1.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 13128,13134 ----
  
  GCC 4.1.2
  
!    This is the [5]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 4.1.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 4.1.2
*** 13121,13157 ****
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [7]GCC manuals. If that fails, the
!     [8]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 [9]gcc@gcc.gnu.org. All of [10]our lists have public
!     archives.
  
!    Copyright (C) [11]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 [12]maintained by the GCC team. Last modified
!    2019-11-28[13].
  
  References
  
     1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
!    2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
!    3. https://gcc.gnu.org/ml/java/2005-05/msg00260.html
!    4. http://developer.classpath.org/doc/
!    5. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
!    6. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
!    7. https://gcc.gnu.org/onlinedocs/
!    8. mailto:gcc-help@gcc.gnu.org
!    9. mailto:gcc@gcc.gnu.org
!   10. https://gcc.gnu.org/lists.html
!   11. https://www.fsf.org/
!   12. https://gcc.gnu.org/about.html
!   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.)
--- 13154,13187 ----
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [6]GCC manuals. If that fails, the
!     [7]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 [8]gcc@gcc.gnu.org. All of [9]our lists have public archives.
  
!    Copyright (C) [10]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 [11]maintained by the GCC team. Last modified
!    2021-10-18[12].
  
  References
  
     1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
!    2. https://gcc.gnu.org/ml/java/2005-05/msg00260.html
!    3. https://developer.classpath.org/doc/
!    4. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
!    5. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
!    6. https://gcc.gnu.org/onlinedocs/
!    7. mailto:gcc-help@gcc.gnu.org
!    8. mailto:gcc@gcc.gnu.org
!    9. https://gcc.gnu.org/lists.html
!   10. https://www.fsf.org/
!   11. https://gcc.gnu.org/about.html
!   12. 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.)
*************** References and Acknowledgements
*** 13214,13220 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2020-01-14[19].
  
  References
  
--- 13244,13250 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
*************** 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
  
--- 13269,13274 ----
*************** GCC 4.0.4
*** 13741,13747 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2019-11-28[22].
  
  References
  
--- 13770,13776 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2021-07-28[22].
  
  References
  
*************** 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.)
--- 13798,13803 ----
*************** References and Acknowledgements
*** 13843,13849 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2020-01-14[23].
  
  References
  
--- 13871,13877 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2021-07-28[23].
  
  References
  
*************** 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
  
--- 13900,13905 ----
*************** GCC 3.4.6
*** 15632,15638 ****
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2019-11-28[417].
  
  References
  
--- 15659,15665 ----
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2021-07-28[417].
  
  References
  
*************** 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
--- 15672,15678 ----
     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
--- 15688,15694 ----
    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.)
--- 16082,16087 ----
*************** References and Acknowledgements
*** 16129,16135 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2019-11-28[22].
  
  References
  
--- 16155,16161 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2021-07-28[22].
  
  References
  
*************** 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
  
--- 16183,16188 ----
*************** GCC 3.3.6
*** 17505,17511 ****
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2019-11-28[557].
  
  References
  
--- 17530,17536 ----
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2021-07-28[557].
  
  References
  
*************** 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.)
--- 18093,18098 ----
*************** References and Acknowledgements
*** 18136,18142 ****
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2019-11-28[18].
  
  References
  
--- 18160,18166 ----
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2021-07-28[18].
  
  References
  
*************** 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
  
--- 18184,18189 ----
*************** GCC 3.2
*** 18760,18766 ****
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2019-11-28[252].
  
  References
  
--- 18783,18789 ----
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2021-07-28[252].
  
  References
  
*************** 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.)
--- 19041,19046 ----
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 19066,19072 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2019-11-28[15].
  
  References
  
--- 19088,19094 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2021-07-28[15].
  
  References
  
*************** 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
  
--- 19109,19114 ----
*************** 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,
--- 19326,19332 ----
            + 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,
*************** Documentation improvements
*** 19421,19427 ****
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2019-11-28[14].
  
  References
  
--- 19442,19448 ----
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2021-07-28[14].
  
  References
  
*************** 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.)
--- 19462,19467 ----
*************** Previous 3.0.x Releases
*** 19496,19502 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2019-11-28[15].
  
  References
  
--- 19516,19522 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2021-07-28[15].
  
  References
  
*************** 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
--- 19537,19542 ----
*************** Other significant improvements
*** 19688,19694 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2019-11-28[19].
  
  References
  
--- 19707,19713 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
*************** 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
--- 19732,19737 ----
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 19760,19766 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2019-11-28[8].
  
  References
  
--- 19778,19784 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2021-07-28[8].
  
  References
  
*************** 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.)
--- 19792,19797 ----
*************** References and Acknowledgements
*** 19843,19849 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2019-11-28[16].
  
  References
  
--- 19860,19866 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2021-07-28[16].
  
  References
  
*************** 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:
--- 19882,19887 ----
*************** Additional Changes in GCC 2.95.3
*** 20109,20115 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2019-11-28[23].
  
  References
  
--- 20125,20131 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2021-07-28[23].
  
  References
  
*************** 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
--- 20154,20159 ----
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 20193,20199 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2019-11-28[8].
  
  References
  
--- 20208,20214 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2021-07-28[8].
  
  References
  
*************** 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.
--- 20222,20227 ----
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 20415,20421 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2019-11-28[16].
  
  References
  
--- 20429,20435 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2021-07-28[16].
  
  References
  
*************** 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
--- 20451,20456 ----
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 20515,20521 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2019-11-28[11].
  
  References
  
--- 20528,20534 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2021-07-28[11].
  
  References
  
*************** 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
--- 20545,20550 ----
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 20570,20576 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2019-11-28[7].
  
  References
  
--- 20582,20588 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2021-07-28[7].
  
  References
  
*************** 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.
--- 20595,20600 ----
*************** http://gcc.gnu.org/egcs-1.0/index.html
*** 20767,20773 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2019-11-28[11].
  
  References
  
--- 20778,20784 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2021-07-28[11].
  
  References
  
*************** 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,
--- 20795,20800 ----
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 20834,20840 ****
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2019-11-28[9].
  
  References
  
--- 20844,20850 ----
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2021-07-28[9].
  
  References
  
*************** 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
--- 20859,20864 ----
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 20888,20894 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2019-11-28[7].
  
  References
  
--- 20897,20903 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2021-07-28[7].
  
  References
  
diff -Nrcpad gcc-10.3.0/config/ChangeLog gcc-10.4.0/config/ChangeLog
*** gcc-10.3.0/config/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/config/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,31 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* mh-darwin: Require a non-shared host configuration to
+ 	enable  mdynamic-no-pic where that is supported.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* mh-darwin: Make this specific to handling the
+ 	mdynamic-no-pic case.
+ 
+ 2021-12-16  Martin Storsjö  <martin@martin.st>
+ 
+ 	Backported from master:
+ 	2021-04-13  Martin Storsjö  <martin@martin.st>
+ 
+ 	* mh-mingw: Set __USE_MINGW_ACCESS in missed C++ flags
+ 	variables
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/config/mh-darwin gcc-10.4.0/config/mh-darwin
*** gcc-10.3.0/config/mh-darwin	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/config/mh-darwin	Tue Jun 28 08:54:27 2022
***************
*** 1,29 ****
  # The -mdynamic-no-pic ensures that the compiler executable is built without
! # position-independent-code -- the usual default on Darwin. This fix speeds
! # compiles by 3-5%.  Don't add it if the compiler doesn't also support
! # -mno-dynamic-no-pic to undo it.
! DARWIN_MDYNAMIC_NO_PIC := \
! `case ${host} in i?86-*-darwin* | powerpc-*-darwin*) \
!    $(CC) -S -xc /dev/null -o /dev/null -mno-dynamic-no-pic 2>/dev/null \
!    && echo -mdynamic-no-pic ;; esac`
! DARWIN_GCC_MDYNAMIC_NO_PIC := \
! `case ${host} in i?86-*-darwin* | powerpc-*-darwin*) \
!    $(CC) -S -xc /dev/null -o /dev/null -mno-dynamic-no-pic 2>/dev/null \
!    || echo -mdynamic-no-pic ;; esac`
  
! # ld on Darwin versions >= 10.7 defaults to PIE executables. Disable this for
! # gcc components, since it is incompatible with our pch implementation.
! DARWIN_NO_PIE := `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;`
  
! BOOT_CFLAGS += $(DARWIN_MDYNAMIC_NO_PIC)
! BOOT_LDFLAGS += $(DARWIN_NO_PIE)
  
! # Similarly, for cross-compilation.
! STAGE1_CFLAGS += $(DARWIN_MDYNAMIC_NO_PIC)
! STAGE1_LDFLAGS += $(DARWIN_NO_PIE)
  
! # Without -mno-dynamic-no-pic support, add -mdynamic-no-pic just to later
! # stages when we know it is built with gcc.
! STAGE2_CFLAGS += $(DARWIN_GCC_MDYNAMIC_NO_PIC)
! STAGE3_CFLAGS += $(DARWIN_GCC_MDYNAMIC_NO_PIC)
! STAGE4_CFLAGS += $(DARWIN_GCC_MDYNAMIC_NO_PIC)
--- 1,46 ----
  # The -mdynamic-no-pic ensures that the compiler executable is built without
! # position-independent-code -- the usual default on Darwin. This speeds compiles
! # by 8-20% (measurements made against GCC-11).
! # However, we cannot add it unless the bootstrap compiler supports
! # -mno-dynamic-no-pic to undo it, since libiberty, at least, needs this.
  
! # We use Werror, since some versions of clang report unknown command line flags
! # as a warning only.
  
! # We only need to determine this for the host tool used to build stage1 (or a
! # non-bootstrapped compiler), later stages will be built by GCC which supports
! # the required flags.
  
! # We cannot use mdynamic-no-pic when building shared host resources.
  
! ifeq (${host_shared},no)
! BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC := $(shell \
!   $(CC) -S -xc /dev/null -o /dev/null -Werror -mno-dynamic-no-pic 2>/dev/null \
!   && echo true)
! else
! BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC := false
! endif
! 
! @if gcc-bootstrap
! ifeq (${BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC},true)
! STAGE1_CFLAGS += -mdynamic-no-pic
! else
! STAGE1_CFLAGS += -fPIC
! endif
! ifeq (${host_shared},no)
! # Add -mdynamic-no-pic to later stages when we know it is built with GCC.
! BOOT_CFLAGS += -mdynamic-no-pic
! endif
! @endif gcc-bootstrap
! 
! @unless gcc-bootstrap
! ifeq (${BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC},true)
! # FIXME: we should also enable this for cross and non-bootstrap builds but
! # that needs amendment to libcc1.
! # CFLAGS += -mdynamic-no-pic
! # CXXFLAGS += -mdynamic-no-pic
! else
! CFLAGS += -fPIC
! CXXFLAGS += -fPIC
! endif
! @endunless gcc-bootstrap
diff -Nrcpad gcc-10.3.0/config/mh-mingw gcc-10.4.0/config/mh-mingw
*** gcc-10.3.0/config/mh-mingw	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/config/mh-mingw	Tue Jun 28 08:54:27 2022
***************
*** 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/configure gcc-10.4.0/configure
*** gcc-10.3.0/configure	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/configure	Tue Jun 28 08:54:27 2022
*************** OBJCOPY_FOR_TARGET
*** 609,614 ****
--- 609,615 ----
  NM_FOR_TARGET
  LIPO_FOR_TARGET
  LD_FOR_TARGET
+ DSYMUTIL_FOR_TARGET
  DLLTOOL_FOR_TARGET
  AS_FOR_TARGET
  AR_FOR_TARGET
*************** RANLIB
*** 629,634 ****
--- 630,636 ----
  NM
  LIPO
  LD
+ DSYMUTIL
  DLLTOOL
  AS
  AR
*************** LDFLAGS_FOR_BUILD
*** 649,654 ****
--- 651,657 ----
  GDC_FOR_BUILD
  GOC_FOR_BUILD
  GFORTRAN_FOR_BUILD
+ DSYMUTIL_FOR_BUILD
  DLLTOOL_FOR_BUILD
  CXX_FOR_BUILD
  CXXFLAGS_FOR_BUILD
*************** target_configargs
*** 851,856 ****
--- 854,860 ----
  AR
  AS
  DLLTOOL
+ DSYMUTIL
  LD
  LIPO
  NM
*************** GDC_FOR_TARGET
*** 871,876 ****
--- 875,881 ----
  AR_FOR_TARGET
  AS_FOR_TARGET
  DLLTOOL_FOR_TARGET
+ DSYMUTIL_FOR_TARGET
  LD_FOR_TARGET
  LIPO_FOR_TARGET
  NM_FOR_TARGET
*************** Some influential environment variables:
*** 1634,1639 ****
--- 1639,1645 ----
    AR          AR for the host
    AS          AS for the host
    DLLTOOL     DLLTOOL for the host
+   DSYMUTIL    DSYMUTIL for the host
    LD          LD for the host
    LIPO        LIPO for the host
    NM          NM for the host
*************** Some influential environment variables:
*** 1663,1668 ****
--- 1669,1676 ----
                AS for the target
    DLLTOOL_FOR_TARGET
                DLLTOOL for the target
+   DSYMUTIL_FOR_TARGET
+               DSYMUTIL for the target
    LD_FOR_TARGET
                LD for the target
    LIPO_FOR_TARGET
*************** fi
*** 4077,4083 ****
    hppa*-*)
      host_makefile_frag="config/mh-pa"
      ;;
!   *-*-darwin*)
      host_makefile_frag="config/mh-darwin"
      ;;
    powerpc-*-aix*)
--- 4085,4091 ----
    hppa*-*)
      host_makefile_frag="config/mh-pa"
      ;;
!   i?86-*-darwin[89]* | i?86-*-darwin1[0-7]* | powerpc*-*-darwin*)
      host_makefile_frag="config/mh-darwin"
      ;;
    powerpc-*-aix*)
*************** if test "${build}" != "${host}" ; then
*** 4094,4099 ****
--- 4102,4108 ----
    AS_FOR_BUILD=${AS_FOR_BUILD-as}
    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
    CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+   DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil}
    GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
    GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
    GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc}
*************** else
*** 4108,4113 ****
--- 4117,4123 ----
    AS_FOR_BUILD="\$(AS)"
    CC_FOR_BUILD="\$(CC)"
    CXX_FOR_BUILD="\$(CXX)"
+   DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)"
    GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
    GOC_FOR_BUILD="\$(GOC)"
    GDC_FOR_BUILD="\$(GDC)"
*************** done
*** 7883,7888 ****
--- 7893,7899 ----
  
  
  
+ 
  # Generate default definitions for YACC, M4, LEX and other programs that run
  # on the build machine.  These are used if the Makefile can't locate these
  # programs in objdir.
*************** fi
*** 8715,8720 ****
--- 8726,8872 ----
  
  
  
+ if test -n "$DSYMUTIL"; then
+   ac_cv_prog_DSYMUTIL=$DSYMUTIL
+ elif test -n "$ac_cv_prog_DSYMUTIL"; then
+   DSYMUTIL=$ac_cv_prog_DSYMUTIL
+ fi
+ 
+ if test -n "$ac_cv_prog_DSYMUTIL"; then
+   for ncn_progname in dsymutil; do
+     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; 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_DSYMUTIL+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$DSYMUTIL"; then
+   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ncn_progname}"
+     $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
+ DSYMUTIL=$ac_cv_prog_DSYMUTIL
+ if test -n "$DSYMUTIL"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+ $as_echo "$DSYMUTIL" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   done
+ fi
+ 
+ for ncn_progname in dsymutil; do
+   if test -n "$ncn_tool_prefix"; then
+     # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_tool_prefix}${ncn_progname}; 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_DSYMUTIL+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$DSYMUTIL"; then
+   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ncn_tool_prefix}${ncn_progname}"
+     $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
+ DSYMUTIL=$ac_cv_prog_DSYMUTIL
+ if test -n "$DSYMUTIL"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+ $as_echo "$DSYMUTIL" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   fi
+   if test -z "$ac_cv_prog_DSYMUTIL" && test $build = $host ; then
+     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; 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_DSYMUTIL+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$DSYMUTIL"; then
+   ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ncn_progname}"
+     $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
+ DSYMUTIL=$ac_cv_prog_DSYMUTIL
+ if test -n "$DSYMUTIL"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+ $as_echo "$DSYMUTIL" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   fi
+   test -n "$ac_cv_prog_DSYMUTIL" && break
+ done
+ 
+ if test -z "$ac_cv_prog_DSYMUTIL" ; then
+   set dummy dsymutil
+   if test $build = $host ; then
+     DSYMUTIL="$2"
+   else
+     DSYMUTIL="${ncn_tool_prefix}$2"
+   fi
+ fi
+ 
+ 
+ 
  if test -n "$LD"; then
    ac_cv_prog_LD=$LD
  elif test -n "$ac_cv_prog_LD"; then
*************** fi
*** 11945,11950 ****
--- 12097,12332 ----
  
  
  
+ if test -z "$ac_cv_path_DSYMUTIL_FOR_TARGET" ; then
+   if test -n "$with_build_time_tools"; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dsymutil in $with_build_time_tools" >&5
+ $as_echo_n "checking for dsymutil in $with_build_time_tools... " >&6; }
+     if test -x $with_build_time_tools/dsymutil; then
+       DSYMUTIL_FOR_TARGET=`cd $with_build_time_tools && pwd`/dsymutil
+       ac_cv_path_DSYMUTIL_FOR_TARGET=$DSYMUTIL_FOR_TARGET
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_DSYMUTIL_FOR_TARGET" >&5
+ $as_echo "$ac_cv_path_DSYMUTIL_FOR_TARGET" >&6; }
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+     fi
+   elif test $build != $host && test $have_gcc_for_target = yes; then
+     DSYMUTIL_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=dsymutil`
+     test $DSYMUTIL_FOR_TARGET = dsymutil && DSYMUTIL_FOR_TARGET=
+     test -n "$DSYMUTIL_FOR_TARGET" && ac_cv_path_DSYMUTIL_FOR_TARGET=$DSYMUTIL_FOR_TARGET
+   fi
+ fi
+ if test -z "$ac_cv_path_DSYMUTIL_FOR_TARGET" && test -n "$gcc_cv_tool_dirs"; then
+   # Extract the first word of "dsymutil", so it can be a program name with args.
+ set dummy dsymutil; 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_path_DSYMUTIL_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   case $DSYMUTIL_FOR_TARGET in
+   [\\/]* | ?:[\\/]*)
+   ac_cv_path_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # Let the user override the test with a path.
+   ;;
+   *)
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $gcc_cv_tool_dirs
+ 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_path_DSYMUTIL_FOR_TARGET="$as_dir/$ac_word$ac_exec_ext"
+     $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
+ 
+   ;;
+ esac
+ fi
+ DSYMUTIL_FOR_TARGET=$ac_cv_path_DSYMUTIL_FOR_TARGET
+ if test -n "$DSYMUTIL_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+ $as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+ fi
+ if test -z "$ac_cv_path_DSYMUTIL_FOR_TARGET" ; then
+ 
+ 
+ if test -n "$DSYMUTIL_FOR_TARGET"; then
+   ac_cv_prog_DSYMUTIL_FOR_TARGET=$DSYMUTIL_FOR_TARGET
+ elif test -n "$ac_cv_prog_DSYMUTIL_FOR_TARGET"; then
+   DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+ fi
+ 
+ if test -n "$ac_cv_prog_DSYMUTIL_FOR_TARGET"; then
+   for ncn_progname in dsymutil; do
+     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$DSYMUTIL_FOR_TARGET"; then
+   ac_cv_prog_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # 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_DSYMUTIL_FOR_TARGET="${ncn_progname}"
+     $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
+ DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+ if test -n "$DSYMUTIL_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+ $as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   done
+ fi
+ 
+ if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET" && test -n "$with_build_time_tools"; then
+   for ncn_progname in dsymutil; do
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ $as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_DSYMUTIL_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+       break
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+     fi
+   done
+ fi
+ 
+ if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET"; then
+   for ncn_progname in dsymutil; do
+     if test -n "$ncn_target_tool_prefix"; then
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$DSYMUTIL_FOR_TARGET"; then
+   ac_cv_prog_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # 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_DSYMUTIL_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+     $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
+ DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+ if test -n "$DSYMUTIL_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+ $as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+     fi
+     if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET" && test $build = $target ; then
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$DSYMUTIL_FOR_TARGET"; then
+   ac_cv_prog_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # 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_DSYMUTIL_FOR_TARGET="${ncn_progname}"
+     $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
+ DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+ if test -n "$DSYMUTIL_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+ $as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+     fi
+     test -n "$ac_cv_prog_DSYMUTIL_FOR_TARGET" && break
+   done
+ fi
+ 
+ if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET" ; then
+   set dummy dsymutil
+   if test $build = $target ; then
+     DSYMUTIL_FOR_TARGET="$2"
+   else
+     DSYMUTIL_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
+ else
+   DSYMUTIL_FOR_TARGET="$ac_cv_prog_DSYMUTIL_FOR_TARGET"
+ fi
+ 
+ else
+   DSYMUTIL_FOR_TARGET=$ac_cv_path_DSYMUTIL_FOR_TARGET
+ fi
+ 
+ 
+ 
+ 
  if test -z "$ac_cv_path_LD_FOR_TARGET" ; then
    if test -n "$with_build_time_tools"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld in $with_build_time_tools" >&5
*************** $as_echo "pre-installed in $ac_dir" >&6;
*** 14727,14732 ****
--- 15109,15145 ----
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
  $as_echo "host tool" >&6; }
    else
+     # We need a cross tool
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+ $as_echo "pre-installed" >&6; }
+   fi
+ fi
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target dsymutil" >&5
+ $as_echo_n "checking where to find the target dsymutil... " >&6; }
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$DSYMUTIL_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+     ac_dir=`dirname $DSYMUTIL_FOR_TARGET`
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+ $as_echo "pre-installed in $ac_dir" >&6; }
+   else
+     # Canadian cross, just use what we found
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+ $as_echo "pre-installed" >&6; }
+   fi
+ else
+   if expr "x$DSYMUTIL_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+     ac_dir=`dirname $DSYMUTIL_FOR_TARGET`
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+ $as_echo "pre-installed in $ac_dir" >&6; }
+   elif test "x$target" = "x$host"; then
+     # We can use an host tool
+     DSYMUTIL_FOR_TARGET='$(DSYMUTIL)'
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+ $as_echo "host tool" >&6; }
+   else
      # We need a cross tool
      { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
  $as_echo "pre-installed" >&6; }
diff -Nrcpad gcc-10.3.0/configure.ac gcc-10.4.0/configure.ac
*** gcc-10.3.0/configure.ac	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/configure.ac	Tue Jun 28 08:54:27 2022
*************** case "${host}" in
*** 1333,1339 ****
    hppa*-*)	
      host_makefile_frag="config/mh-pa"
      ;;
!   *-*-darwin*)
      host_makefile_frag="config/mh-darwin"
      ;;
    powerpc-*-aix*)
--- 1333,1339 ----
    hppa*-*)	
      host_makefile_frag="config/mh-pa"
      ;;
!   i?86-*-darwin[[89]]* | i?86-*-darwin1[[0-7]]* | powerpc*-*-darwin*)
      host_makefile_frag="config/mh-darwin"
      ;;
    powerpc-*-aix*)
*************** if test "${build}" != "${host}" ; then
*** 1350,1355 ****
--- 1350,1356 ----
    AS_FOR_BUILD=${AS_FOR_BUILD-as}
    CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
    CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+   DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil}
    GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
    GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
    GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc}
*************** else
*** 1364,1369 ****
--- 1365,1371 ----
    AS_FOR_BUILD="\$(AS)"
    CC_FOR_BUILD="\$(CC)"
    CXX_FOR_BUILD="\$(CXX)"
+   DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)"
    GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
    GOC_FOR_BUILD="\$(GOC)"
    GDC_FOR_BUILD="\$(GDC)"
*************** AC_SUBST(CFLAGS_FOR_BUILD)
*** 3378,3383 ****
--- 3380,3386 ----
  AC_SUBST(CXXFLAGS_FOR_BUILD)
  AC_SUBST(CXX_FOR_BUILD)
  AC_SUBST(DLLTOOL_FOR_BUILD)
+ AC_SUBST(DSYMUTIL_FOR_BUILD)
  AC_SUBST(GFORTRAN_FOR_BUILD)
  AC_SUBST(GOC_FOR_BUILD)
  AC_SUBST(GDC_FOR_BUILD)
*************** esac
*** 3457,3462 ****
--- 3460,3466 ----
  NCN_STRICT_CHECK_TOOLS(AR, ar)
  NCN_STRICT_CHECK_TOOLS(AS, as)
  NCN_STRICT_CHECK_TOOLS(DLLTOOL, dlltool)
+ NCN_STRICT_CHECK_TOOLS(DSYMUTIL, dsymutil)
  NCN_STRICT_CHECK_TOOLS(LD, ld)
  NCN_STRICT_CHECK_TOOLS(LIPO, lipo)
  NCN_STRICT_CHECK_TOOLS(NM, nm)
*************** NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TA
*** 3496,3501 ****
--- 3500,3506 ----
  ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar)
  ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as)
  ACX_CHECK_INSTALLED_TARGET_TOOL(DLLTOOL_FOR_TARGET, dlltool)
+ ACX_CHECK_INSTALLED_TARGET_TOOL(DSYMUTIL_FOR_TARGET, dsymutil)
  ACX_CHECK_INSTALLED_TARGET_TOOL(LD_FOR_TARGET, ld)
  ACX_CHECK_INSTALLED_TARGET_TOOL(LIPO_FOR_TARGET, lipo)
  ACX_CHECK_INSTALLED_TARGET_TOOL(NM_FOR_TARGET, nm)
*************** GCC_TARGET_TOOL(c++ for libstdc++, RAW_C
*** 3521,3526 ****
--- 3526,3532 ----
  		[gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs],
  		c++)
  GCC_TARGET_TOOL(dlltool, DLLTOOL_FOR_TARGET, DLLTOOL, [binutils/dlltool])
+ GCC_TARGET_TOOL(dsymutil, DSYMUTIL_FOR_TARGET, DSYMUTIL)
  GCC_TARGET_TOOL(gcc, GCC_FOR_TARGET, , [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/])
  GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN,
  		[gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran)
diff -Nrcpad gcc-10.3.0/contrib/ChangeLog gcc-10.4.0/contrib/ChangeLog
*** gcc-10.3.0/contrib/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/contrib/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,85 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-git-customization.sh: Sync from master.
+ 	* git-descr.sh: New file.
+ 	* git-undescr.sh: New file.
+ 
+ 2022-01-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_commit.py: Sync from master.
+ 	* gcc-changelog/test_email.py: Likewise.
+ 	* gcc-changelog/test_patches.txt: Likewise.
+ 
+ 2022-01-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* git-backport.py: Sync from master.
+ 	* git-commit-mklog.py: Likewise.
+ 	* git-fix-changelog.py: New file.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from master:
+ 	2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* git-backport.py: Support renaming of .cc files.
+ 
+ 2021-11-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_check_commit.py: Sync from master.
+ 	* gcc-changelog/git_commit.py: Likewise.
+ 	* gcc-changelog/git_email.py: Likewise.
+ 	* gcc-changelog/git_update_version.py: Likewise.
+ 	* gcc-changelog/test_email.py: Likewise.
+ 	* gcc-changelog/test_patches.txt: Likewise.
+ 
+ 2021-06-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* mklog.py: New file.
+ 	* test_mklog.py: New file.
+ 
+ 2021-06-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* git-commit-mklog.py: New file.
+ 
+ 2021-05-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* gcc-changelog/git_email.py: Remove use of non-strict mode.
+ 
+ 2021-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* download_prerequisites: Update mpfr version to 3.1.6.
+ 	* prerequisites.md5: Update.
+ 	* prerequisites.sha512: Likewise.
+ 
+ 2021-05-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_check_commit.py: Sync from master.
+ 	* gcc-changelog/git_commit.py: Likewise.
+ 	* gcc-changelog/git_email.py: Likewise.
+ 	* gcc-changelog/git_repository.py: Likewise.
+ 	* gcc-changelog/git_update_version.py: Likewise.
+ 	* gcc-changelog/test_email.py: Likewise.
+ 	* gcc-changelog/test_patches.txt: Likewise.
+ 
+ 2021-04-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-changelog/git_commit.py: Sync with master.
+ 	* gcc-changelog/git_email.py: Likewise.
+ 	* gcc-changelog/git_update_version.py: Likewise.
+ 	* gcc-changelog/setup.cfg: Likewise.
+ 	* gcc-changelog/test_email.py: Likewise.
+ 	* gcc-changelog/test_patches.txt: Likewise.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/contrib/download_prerequisites gcc-10.4.0/contrib/download_prerequisites
*** gcc-10.3.0/contrib/download_prerequisites	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/download_prerequisites	Tue Jun 28 08:54:27 2022
*************** version='(unversioned)'
*** 28,34 ****
  # `contrib/prerequisites.md5` with the new checksums.
  
  gmp='gmp-6.1.0.tar.bz2'
! mpfr='mpfr-3.1.4.tar.bz2'
  mpc='mpc-1.0.3.tar.gz'
  isl='isl-0.18.tar.bz2'
  
--- 28,34 ----
  # `contrib/prerequisites.md5` with the new checksums.
  
  gmp='gmp-6.1.0.tar.bz2'
! mpfr='mpfr-3.1.6.tar.bz2'
  mpc='mpc-1.0.3.tar.gz'
  isl='isl-0.18.tar.bz2'
  
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_check_commit.py gcc-10.4.0/contrib/gcc-changelog/git_check_commit.py
*** gcc-10.3.0/contrib/gcc-changelog/git_check_commit.py	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/gcc-changelog/git_check_commit.py	Tue Jun 28 08:54:27 2022
*************** from git_repository import parse_git_rev
*** 23,41 ****
  parser = argparse.ArgumentParser(description='Check git ChangeLog format '
                                   'of a commit')
  parser.add_argument('revisions', default='HEAD', nargs='?',
!                     help='Git revisions (e.g. hash~5..hash or just hash)')
  parser.add_argument('-g', '--git-path', default='.',
                      help='Path to git repository')
  parser.add_argument('-p', '--print-changelog', action='store_true',
                      help='Print final changelog entires')
! parser.add_argument('-n', '--non-strict-mode', action='store_true',
!                     help='Use non-strict mode (allow changes in ChangeLog and '
!                     'other automatically updated files).')
  args = parser.parse_args()
  
  retval = 0
! for git_commit in parse_git_revisions(args.git_path, args.revisions,
!                                       not args.non_strict_mode):
      res = 'OK' if git_commit.success else 'FAILED'
      print('Checking %s: %s' % (git_commit.original_info.hexsha, res))
      if git_commit.success:
--- 23,40 ----
  parser = argparse.ArgumentParser(description='Check git ChangeLog format '
                                   'of a commit')
  parser.add_argument('revisions', default='HEAD', nargs='?',
!                     help='Git revisions (e.g. hash~5..hash or just hash) - '
!                     'if not specified: HEAD')
  parser.add_argument('-g', '--git-path', default='.',
                      help='Path to git repository')
  parser.add_argument('-p', '--print-changelog', action='store_true',
                      help='Print final changelog entires')
! parser.add_argument('-v', '--verbose', action='store_true',
!                     help='Print verbose information')
  args = parser.parse_args()
  
  retval = 0
! for git_commit in parse_git_revisions(args.git_path, args.revisions):
      res = 'OK' if git_commit.success else 'FAILED'
      print('Checking %s: %s' % (git_commit.original_info.hexsha, res))
      if git_commit.success:
*************** for git_commit in parse_git_revisions(ar
*** 44,49 ****
--- 43,50 ----
      else:
          for error in git_commit.errors:
              print('ERR: %s' % error)
+             if args.verbose and error.details:
+                 print(error.details)
          retval = 1
  
  exit(retval)
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_commit.py gcc-10.4.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-10.4.0/contrib/gcc-changelog/git_commit.py	Tue Jun 28 08:54:27 2022
***************
*** 19,26 ****
  import difflib
  import os
  import re
  
! changelog_locations = {
      'c++tools',
      'config',
      'contrib',
--- 19,27 ----
  import difflib
  import os
  import re
+ import sys
  
! default_changelog_locations = {
      'c++tools',
      'config',
      'contrib',
*************** ignored_prefixes = {
*** 133,138 ****
--- 134,140 ----
      'gcc/go/gofrontend/',
      'gcc/testsuite/gdc.test/',
      'gcc/testsuite/go.test/test/',
+     'libffi/',
      'libgo/',
      'libphobos/libdruntime/',
      'libphobos/src/',
*************** author_line_regex = \
*** 155,161 ****
          re.compile(r'^(?P<datetime>\d{4}-\d{2}-\d{2})\ {2}(?P<name>.*  <.*>)')
  additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.*  <.*>)')
  changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?')
! pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?([0-9]+)$')
  dr_regex = re.compile(r'\tDR ([0-9]+)$')
  star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
  end_of_location_regex = re.compile(r'[\[<(:]')
--- 157,165 ----
          re.compile(r'^(?P<datetime>\d{4}-\d{2}-\d{2})\ {2}(?P<name>.*  <.*>)')
  additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.*  <.*>)')
  changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?')
! subject_pr_regex = re.compile(r'(^|\W)PR\s+(?P<component>[a-zA-Z+-]+)/(?P<pr>\d{4,7})')
! subject_pr2_regex = re.compile(r'[(\[]PR\s*(?P<pr>\d{4,7})[)\]]')
! pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?(?P<pr>[0-9]+)$')
  dr_regex = re.compile(r'\tDR ([0-9]+)$')
  star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
  end_of_location_regex = re.compile(r'[\[<(:]')
*************** def decode_path(path):
*** 193,206 ****
  
  
  class Error:
!     def __init__(self, message, line=None):
          self.message = message
          self.line = line
  
      def __repr__(self):
          s = self.message
          if self.line:
!             s += ':"%s"' % self.line
          return s
  
  
--- 197,211 ----
  
  
  class Error:
!     def __init__(self, message, line=None, details=None):
          self.message = message
          self.line = line
+         self.details = details
  
      def __repr__(self):
          s = self.message
          if self.line:
!             s += ': "%s"' % self.line
          return s
  
  
*************** class ChangeLogEntry:
*** 214,219 ****
--- 219,225 ----
          self.lines = []
          self.files = []
          self.file_patterns = []
+         self.parentheses_stack = []
  
      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')
  
--- 229,242 ----
          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 GitInfo:
*** 280,286 ****
  
  
  class GitCommit:
!     def __init__(self, info, strict=True, commit_to_info_hook=None):
          self.original_info = info
          self.info = info
          self.message = None
--- 292,298 ----
  
  
  class GitCommit:
!     def __init__(self, info, commit_to_info_hook=None, ref_name=None):
          self.original_info = info
          self.info = info
          self.message = None
*************** class GitCommit:
*** 290,303 ****
--- 302,320 ----
          self.top_level_authors = []
          self.co_authors = []
          self.top_level_prs = []
+         self.subject_prs = set()
          self.cherry_pick_commit = None
          self.revert_commit = None
          self.commit_to_info_hook = commit_to_info_hook
+         self.init_changelog_locations(ref_name)
  
          # Skip Update copyright years commits
          if self.info.lines and self.info.lines[0] == 'Update copyright years.':
              return
  
+         if self.info.lines and len(self.info.lines) > 1 and self.info.lines[1]:
+             self.errors.append(Error('Expected empty second line in commit message', info.lines[0]))
+ 
          # Identify first if the commit is a Revert commit
          for line in self.info.lines:
              m = revert_regex.match(line)
*************** class GitCommit:
*** 307,324 ****
          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])]
          if len(project_files) == len(self.info.modified_files):
              # All modified files are only MISC files
              return
!         elif project_files and strict:
!             self.errors.append(Error('ChangeLog, DATESTAMP, BASE-VER and '
!                                      'DEV-PHASE updates should be done '
!                                      'separately from normal commits'))
              return
  
          all_are_ignored = (len(project_files) + len(ignored_files)
--- 324,359 ----
          if self.revert_commit:
              self.info = self.commit_to_info_hook(self.revert_commit)
  
+         # The following happens for get_email.py:
+         if not self.info:
+             return
+ 
+         self.check_commit_email()
+ 
+         # Extract PR numbers form the subject line
+         # Match either [PRnnnn] / (PRnnnn) or PR component/nnnn
+         if self.info.lines and not self.revert_commit:
+             self.subject_prs = {m.group('pr') for m in subject_pr2_regex.finditer(info.lines[0])}
+             for m in subject_pr_regex.finditer(info.lines[0]):
+                 if not m.group('component') in bug_components:
+                     self.errors.append(Error('invalid PR component in subject', info.lines[0]))
+                 self.subject_prs.add(m.group('pr'))
+ 
+         # 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])]
          if len(project_files) == len(self.info.modified_files):
              # All modified files are only MISC files
              return
!         elif project_files:
!             err = 'ChangeLog, DATESTAMP, BASE-VER and DEV-PHASE updates ' \
!                   'should be done separately from normal commits\n' \
!                   '(note: ChangeLog entries will be automatically ' \
!                   'added by a cron job)'
!             self.errors.append(Error(err))
              return
  
          all_are_ignored = (len(project_files) + len(ignored_files)
*************** class GitCommit:
*** 328,338 ****
--- 363,377 ----
              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:
                  self.check_mentioned_files()
                  self.check_for_correct_changelog()
+         if self.subject_prs:
+             self.errors.append(Error('PR %s in subject but not in changelog' %
+                                      ', '.join(self.subject_prs), self.info.lines[0]))
  
      @property
      def success(self):
*************** class GitCommit:
*** 343,360 ****
          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):
          if name.startswith('\t'):
              name = name[1:]
          if name.endswith(':'):
              name = name[:-1]
          if name.endswith('/'):
              name = name[:-1]
!         return name if name in changelog_locations else None
  
      @classmethod
      def format_git_author(cls, author):
--- 382,404 ----
          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
  
!     def find_changelog_location(self, name):
          if name.startswith('\t'):
              name = name[1:]
          if name.endswith(':'):
              name = name[:-1]
          if name.endswith('/'):
              name = name[:-1]
!         return name if name in self.changelog_locations else None
  
      @classmethod
      def format_git_author(cls, author):
*************** class GitCommit:
*** 374,379 ****
--- 418,434 ----
                  modified_files.append((parts[2], 'A'))
          return modified_files
  
+     def init_changelog_locations(self, ref_name):
+         self.changelog_locations = list(default_changelog_locations)
+         if ref_name:
+             version = sys.maxsize
+             if 'releases/gcc-' in ref_name:
+                 version = int(ref_name.split('-')[-1])
+             if version >= 12:
+                 # HSA and BRIG were removed in GCC 12
+                 self.changelog_locations.remove('gcc/brig')
+                 self.changelog_locations.remove('libhsail-rt')
+ 
      def parse_lines(self, all_are_ignored):
          body = self.info.lines
  
*************** class GitCommit:
*** 382,388 ****
                  continue
              if (changelog_regex.match(b) or self.find_changelog_location(b)
                      or star_prefix_regex.match(b) or pr_regex.match(b)
!                     or dr_regex.match(b) or author_line_regex.match(b)):
                  self.changes = body[i:]
                  return
          if not all_are_ignored:
--- 437,444 ----
                  continue
              if (changelog_regex.match(b) or self.find_changelog_location(b)
                      or star_prefix_regex.match(b) or pr_regex.match(b)
!                     or dr_regex.match(b) or author_line_regex.match(b)
!                     or b.lower().startswith(CO_AUTHORED_BY_PREFIX)):
                  self.changes = body[i:]
                  return
          if not all_are_ignored:
*************** 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('/'),
--- 456,465 ----
              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:
*** 428,434 ****
                      else:
                          author_tuple = (m.group('name'), None)
                  elif pr_regex.match(line):
!                     component = pr_regex.match(line).group('component')
                      if not component:
                          self.errors.append(Error('missing PR component', line))
                          continue
--- 486,494 ----
                      else:
                          author_tuple = (m.group('name'), None)
                  elif pr_regex.match(line):
!                     m = pr_regex.match(line)
!                     component = m.group('component')
!                     pr = m.group('pr')
                      if not component:
                          self.errors.append(Error('missing PR component', line))
                          continue
*************** class GitCommit:
*** 437,442 ****
--- 497,504 ----
                          continue
                      else:
                          pr_line = line.lstrip()
+                     if pr in self.subject_prs:
+                         self.subject_prs.remove(pr)
                  elif dr_regex.match(line):
                      pr_line = line.lstrip()
  
*************** 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:
--- 552,559 ----
                  else:
                      m = star_prefix_regex.match(line)
                      if m:
!                         if (len(m.group('spaces')) != 1 and
!                                 not last_entry.parentheses_stack):
                              msg = 'one space should follow asterisk'
                              self.errors.append(Error(msg, line))
                          else:
*************** class GitCommit:
*** 502,507 ****
--- 565,571 ----
                                          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 ****
--- 573,590 ----
                              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.parentheses_stack.append(line)
+             elif c == ')':
+                 if not last_entry.parentheses_stack:
+                     msg = 'bad wrapping of parenthesis'
+                     self.errors.append(Error(msg, line))
+                 else:
+                     del last_entry.parentheses_stack[-1]
  
      def parse_file_names(self):
          for entry in self.changelog_entries:
*************** class GitCommit:
*** 532,537 ****
--- 608,619 ----
                      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.parentheses_stack:
+                 msg = 'bad parentheses wrapping'
+                 self.errors.append(Error(msg, entry.parentheses_stack[-1]))
+ 
      def get_file_changelog_location(self, changelog_file):
          for file in self.info.modified_files:
              if file[0] == changelog_file:
*************** class GitCommit:
*** 549,555 ****
                  for file in entry.files:
                      location = self.get_file_changelog_location(file)
                      if (location == ''
!                        or (location and location in changelog_locations)):
                          if changelog and changelog != location:
                              msg = 'could not deduce ChangeLog file, ' \
                                    'not unique location'
--- 631,637 ----
                  for file in entry.files:
                      location = self.get_file_changelog_location(file)
                      if (location == ''
!                        or (location and location in self.changelog_locations)):
                          if changelog and changelog != location:
                              msg = 'could not deduce ChangeLog file, ' \
                                    'not unique location'
*************** class GitCommit:
*** 569,579 ****
                  return True
          return False
  
!     @classmethod
!     def get_changelog_by_path(cls, path):
          components = path.split('/')
          while components:
!             if '/'.join(components) in changelog_locations:
                  break
              components = components[:-1]
          return '/'.join(components)
--- 651,660 ----
                  return True
          return False
  
!     def get_changelog_by_path(self, path):
          components = path.split('/')
          while components:
!             if '/'.join(components) in self.changelog_locations:
                  break
              components = components[:-1]
          return '/'.join(components)
*************** class GitCommit:
*** 592,598 ****
              assert not entry.folder.endswith('/')
              for file in entry.files:
                  if not self.is_changelog_filename(file):
!                     mentioned_files.add(os.path.join(entry.folder, file))
              for pattern in entry.file_patterns:
                  mentioned_patterns.append(os.path.join(entry.folder, pattern))
  
--- 673,684 ----
              assert not entry.folder.endswith('/')
              for file in entry.files:
                  if not self.is_changelog_filename(file):
!                     item = os.path.join(entry.folder, file)
!                     if item in mentioned_files:
!                         msg = 'same file specified multiple times'
!                         self.errors.append(Error(msg, file))
!                     else:
!                         mentioned_files.add(item)
              for pattern in entry.file_patterns:
                  mentioned_patterns.append(os.path.join(entry.folder, pattern))
  
*************** class GitCommit:
*** 602,610 ****
          for file in sorted(mentioned_files - changed_files):
              msg = 'unchanged file mentioned in a ChangeLog'
              candidates = difflib.get_close_matches(file, changed_files, 1)
              if candidates:
                  msg += f' (did you mean "{candidates[0]}"?)'
!             self.errors.append(Error(msg, file))
          for file in sorted(changed_files - mentioned_files):
              if not self.in_ignored_location(file):
                  if file in self.new_files:
--- 688,698 ----
          for file in sorted(mentioned_files - changed_files):
              msg = 'unchanged file mentioned in a ChangeLog'
              candidates = difflib.get_close_matches(file, changed_files, 1)
+             details = None
              if candidates:
                  msg += f' (did you mean "{candidates[0]}"?)'
!                 details = '\n'.join(difflib.Differ().compare([file], [candidates[0]])).rstrip()
!             self.errors.append(Error(msg, file, details))
          for file in sorted(changed_files - mentioned_files):
              if not self.in_ignored_location(file):
                  if file in self.new_files:
*************** class GitCommit:
*** 630,638 ****
                          self.changelog_entries.append(entry)
                      # strip prefix of the file
                      assert file.startswith(entry.folder)
!                     file = file[len(entry.folder):].lstrip('/')
!                     entry.lines.append('\t* %s: New file.' % file)
!                     entry.files.append(file)
                  else:
                      used_pattern = [p for p in mentioned_patterns
                                      if file.startswith(p)]
--- 718,732 ----
                          self.changelog_entries.append(entry)
                      # strip prefix of the file
                      assert file.startswith(entry.folder)
!                     # do not allow auto-addition of New files
!                     # for the top-level folder
!                     if entry.folder:
!                         file = file[len(entry.folder):].lstrip('/')
!                         entry.lines.append('\t* %s: New file.' % file)
!                         entry.files.append(file)
!                     else:
!                         msg = 'new file in the top-level folder not mentioned in a ChangeLog'
!                         self.errors.append(Error(msg, file))
                  else:
                      used_pattern = [p for p in mentioned_patterns
                                      if file.startswith(p)]
*************** class GitCommit:
*** 721,723 ****
--- 815,826 ----
          print('Errors:')
          for error in self.errors:
              print(error)
+ 
+     def check_commit_email(self):
+         # Parse 'Martin Liska  <mliska@suse.cz>'
+         email = self.info.author.split(' ')[-1].strip('<>')
+ 
+         # Verify that all characters are ASCII
+         # TODO: Python 3.7 provides a nicer function: isascii
+         if len(email) != len(email.encode()):
+             self.errors.append(Error(f'non-ASCII characters in git commit email address ({email})'))
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_email.py gcc-10.4.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-10.4.0/contrib/gcc-changelog/git_email.py	Tue Jun 28 08:54:27 2022
***************
*** 17,22 ****
--- 17,23 ----
  # <http://www.gnu.org/licenses/>.  */
  
  import os
+ import re
  import sys
  from itertools import takewhile
  
*************** from unidiff import PatchSet, PatchedFil
*** 28,43 ****
  
  DATE_PREFIX = 'Date: '
  FROM_PREFIX = 'From: '
  unidiff_supports_renaming = hasattr(PatchedFile(), 'is_rename')
  
  
  class GitEmail(GitCommit):
!     def __init__(self, filename, strict=False):
          self.filename = filename
          diff = PatchSet.from_filename(filename)
          date = None
          author = None
  
          with open(self.filename, 'r') as f:
              lines = f.read().splitlines()
          lines = list(takewhile(lambda line: line != '---', lines))
--- 29,48 ----
  
  DATE_PREFIX = 'Date: '
  FROM_PREFIX = 'From: '
+ SUBJECT_PREFIX = 'Subject: '
+ subject_patch_regex = re.compile(r'^\[PATCH( \d+/\d+)?\] ')
  unidiff_supports_renaming = hasattr(PatchedFile(), 'is_rename')
  
  
  class GitEmail(GitCommit):
!     def __init__(self, filename):
          self.filename = filename
          diff = PatchSet.from_filename(filename)
          date = None
          author = None
+         subject = ''
  
+         subject_last = False
          with open(self.filename, 'r') as f:
              lines = f.read().splitlines()
          lines = list(takewhile(lambda line: line != '---', lines))
*************** class GitEmail(GitCommit):
*** 46,53 ****
                  date = parse(line[len(DATE_PREFIX):])
              elif line.startswith(FROM_PREFIX):
                  author = GitCommit.format_git_author(line[len(FROM_PREFIX):])
          header = list(takewhile(lambda line: line != '', lines))
!         body = lines[len(header) + 1:]
  
          modified_files = []
          for f in diff:
--- 51,71 ----
                  date = parse(line[len(DATE_PREFIX):])
              elif line.startswith(FROM_PREFIX):
                  author = GitCommit.format_git_author(line[len(FROM_PREFIX):])
+             elif line.startswith(SUBJECT_PREFIX):
+                 subject = line[len(SUBJECT_PREFIX):]
+                 subject_last = True
+             elif subject_last and line.startswith(' '):
+                 subject += line
+             elif line == '':
+                 break
+             else:
+                 subject_last = False
+ 
+         if subject:
+             subject = subject_patch_regex.sub('', subject)
          header = list(takewhile(lambda line: line != '', lines))
!         # Note: commit message consists of email subject, empty line, email body
!         message = [subject] + lines[len(header):]
  
          modified_files = []
          for f in diff:
*************** class GitEmail(GitCommit):
*** 66,81 ****
                  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)
  
  
! # With zero arguments, process every patch file in the ./patches directory.
! # With one argument, process the named patch file.
! # Patch files must be in 'git format-patch' format.
  if __name__ == '__main__':
      if len(sys.argv) == 1:
          allfiles = []
          for root, _dirs, files in os.walk('patches'):
--- 84,112 ----
                  t = 'A'
              else:
                  t = 'M'
!             modified_files.append((target if t != 'D' else source, t))
!         git_info = GitInfo(None, date, author, message, modified_files)
!         super().__init__(git_info,
                           commit_to_info_hook=lambda x: None)
  
  
! def show_help():
!     print("""usage: git_email.py [--help] [patch file ...]
! 
! Check git ChangeLog format of a patch
! 
! With zero arguments, process every patch file in the
! ./patches directory.
! With one argument, process the named patch file.
! 
! Patch files must be in 'git format-patch' format.""")
!     sys.exit(0)
! 
! 
  if __name__ == '__main__':
+     if len(sys.argv) == 2 and (sys.argv[1] == '-h' or sys.argv[1] == '--help'):
+         show_help()
+ 
      if len(sys.argv) == 1:
          allfiles = []
          for root, _dirs, files in os.walk('patches'):
*************** if __name__ == '__main__':
*** 97,103 ****
          print()
          print('Successfully parsed: %d/%d' % (success, len(allfiles)))
      else:
!         email = GitEmail(sys.argv[1], False)
          if email.success:
              print('OK')
              email.print_output()
--- 128,134 ----
          print()
          print('Successfully parsed: %d/%d' % (success, len(allfiles)))
      else:
!         email = GitEmail(sys.argv[1])
          if email.success:
              print('OK')
              email.print_output()
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_repository.py gcc-10.4.0/contrib/gcc-changelog/git_repository.py
*** gcc-10.3.0/contrib/gcc-changelog/git_repository.py	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/gcc-changelog/git_repository.py	Tue Jun 28 08:54:27 2022
*************** except ImportError:
*** 29,35 ****
  from git_commit import GitCommit, GitInfo, decode_path
  
  
! def parse_git_revisions(repo_path, revisions, strict=True):
      repo = Repo(repo_path)
  
      def commit_to_info(commit):
--- 29,35 ----
  from git_commit import GitCommit, GitInfo, decode_path
  
  
! def parse_git_revisions(repo_path, revisions, ref_name=None):
      repo = Repo(repo_path)
  
      def commit_to_info(commit):
*************** def parse_git_revisions(repo_path, revis
*** 72,78 ****
          commits = [repo.commit(revisions)]
  
      for commit in commits:
!         git_commit = GitCommit(commit_to_info(commit.hexsha), strict=strict,
!                                commit_to_info_hook=commit_to_info)
          parsed_commits.append(git_commit)
      return parsed_commits
--- 72,79 ----
          commits = [repo.commit(revisions)]
  
      for commit in commits:
!         git_commit = GitCommit(commit_to_info(commit.hexsha),
!                                commit_to_info_hook=commit_to_info,
!                                ref_name=ref_name)
          parsed_commits.append(git_commit)
      return parsed_commits
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/git_update_version.py gcc-10.4.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-10.4.0/contrib/gcc-changelog/git_update_version.py	Tue Jun 28 08:54:27 2022
*************** from git_repository import parse_git_rev
*** 26,31 ****
--- 26,37 ----
  
  current_timestamp = datetime.datetime.now().strftime('%Y%m%d\n')
  
+ # Skip the following commits, they cannot be correctly processed
+ IGNORED_COMMITS = (
+         'c2be82058fb40f3ae891c68d185ff53e07f14f45',
+         '04a040d907a83af54e0a98bdba5bfabc0ef4f700',
+         '2e96b5f14e4025691b57d2301d71aa6092ed44bc')
+ 
  
  def read_timestamp(path):
      with open(path) as f:
*************** def prepend_to_changelog_files(repo, fol
*** 54,60 ****
              repo.git.add(full_path)
  
  
! active_refs = ['master', 'releases/gcc-8', 'releases/gcc-9', 'releases/gcc-10']
  
  parser = argparse.ArgumentParser(description='Update DATESTAMP and generate '
                                   'ChangeLog entries')
--- 60,67 ----
              repo.git.add(full_path)
  
  
! active_refs = ['master', 'releases/gcc-9', 'releases/gcc-10',
!                'releases/gcc-11']
  
  parser = argparse.ArgumentParser(description='Update DATESTAMP and generate '
                                   'ChangeLog entries')
*************** repo = Repo(args.git_path)
*** 74,80 ****
  origin = repo.remotes['origin']
  
  
! def update_current_branch():
      commit = repo.head.commit
      commit_count = 1
      while commit:
--- 81,87 ----
  origin = repo.remotes['origin']
  
  
! def update_current_branch(ref_name):
      commit = repo.head.commit
      commit_count = 1
      while commit:
*************** def update_current_branch():
*** 97,103 ****
          if len(head.parents) == 2:
              head = head.parents[1]
          commits = parse_git_revisions(args.git_path, '%s..%s'
!                                       % (commit.hexsha, head.hexsha))
          for git_commit in reversed(commits):
              prepend_to_changelog_files(repo, args.git_path, git_commit,
                                         not args.dry_mode)
--- 104,111 ----
          if len(head.parents) == 2:
              head = head.parents[1]
          commits = parse_git_revisions(args.git_path, '%s..%s'
!                                       % (commit.hexsha, head.hexsha), ref_name)
!         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)
*************** else:
*** 140,145 ****
              branch.checkout()
              origin.pull(rebase=True)
              print('branch pulled and checked out')
!             update_current_branch()
              assert not repo.index.diff(None)
              print('branch is done\n', flush=True)
--- 148,153 ----
              branch.checkout()
              origin.pull(rebase=True)
              print('branch pulled and checked out')
!             update_current_branch(name)
              assert not repo.index.diff(None)
              print('branch is done\n', flush=True)
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/setup.cfg gcc-10.4.0/contrib/gcc-changelog/setup.cfg
*** gcc-10.3.0/contrib/gcc-changelog/setup.cfg	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/gcc-changelog/setup.cfg	Tue Jun 28 08:54:27 2022
***************
*** 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-10.4.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-10.4.0/contrib/gcc-changelog/test_email.py	Tue Jun 28 08:54:27 2022
*************** class TestGccChangelog(unittest.TestCase
*** 62,78 ****
              assert t.endswith('.patch')
              os.remove(t)
  
!     def get_git_email(self, filename, strict=False):
          with tempfile.NamedTemporaryFile(mode='w+', suffix='.patch',
                                           delete=False) as f:
              f.write('\n'.join(self.patches[filename]))
              self.temps.append(f.name)
!         return GitEmail(f.name, strict)
  
!     def from_patch_glob(self, name, strict=False):
          files = [f for f in self.patches.keys() if f.startswith(name)]
          assert len(files) == 1
!         return self.get_git_email(files[0], strict)
  
      def test_simple_patch_format(self):
          email = self.get_git_email('0577-aarch64-Add-an-and.patch')
--- 62,78 ----
              assert t.endswith('.patch')
              os.remove(t)
  
!     def get_git_email(self, filename):
          with tempfile.NamedTemporaryFile(mode='w+', suffix='.patch',
                                           delete=False) as f:
              f.write('\n'.join(self.patches[filename]))
              self.temps.append(f.name)
!         return GitEmail(f.name)
  
!     def from_patch_glob(self, name):
          files = [f for f in self.patches.keys() if f.startswith(name)]
          assert len(files) == 1
!         return self.get_git_email(files[0])
  
      def test_simple_patch_format(self):
          email = self.get_git_email('0577-aarch64-Add-an-and.patch')
*************** class TestGccChangelog(unittest.TestCase
*** 247,253 ****
          assert email.changelog_entries[1].prs == []
  
      def test_multiple_prs_not_added(self):
!         email = self.from_patch_glob('0001-Add-patch_are')
          assert not email.errors
          assert email.changelog_entries[0].prs == ['PR target/93492']
          assert email.changelog_entries[1].prs == ['PR target/12345']
--- 247,253 ----
          assert email.changelog_entries[1].prs == []
  
      def test_multiple_prs_not_added(self):
!         email = self.from_patch_glob('0002-Add-patch_are')
          assert not email.errors
          assert email.changelog_entries[0].prs == ['PR target/93492']
          assert email.changelog_entries[1].prs == ['PR target/12345']
*************** class TestGccChangelog(unittest.TestCase
*** 255,272 ****
          assert email.changelog_entries[2].folder == 'gcc/testsuite'
  
      def test_strict_mode(self):
!         email = self.from_patch_glob('0001-Add-patch_are',
!                                      True)
          msg = 'ChangeLog, DATESTAMP, BASE-VER and DEV-PHASE updates should ' \
                'be done separately from normal commits'
!         assert email.errors[0].message == msg
  
      def test_strict_mode_normal_patch(self):
!         email = self.get_git_email('0001-Just-test-it.patch', True)
          assert not email.errors
  
      def test_strict_mode_datestamp_only(self):
!         email = self.get_git_email('0002-Bump-date.patch', True)
          assert not email.errors
  
      def test_wrong_changelog_entry(self):
--- 255,271 ----
          assert email.changelog_entries[2].folder == 'gcc/testsuite'
  
      def test_strict_mode(self):
!         email = self.from_patch_glob('0001-Add-patch_are')
          msg = 'ChangeLog, DATESTAMP, BASE-VER and DEV-PHASE updates should ' \
                'be done separately from normal commits'
!         assert email.errors[0].message.startswith(msg)
  
      def test_strict_mode_normal_patch(self):
!         email = self.get_git_email('0001-Just-test-it.patch')
          assert not email.errors
  
      def test_strict_mode_datestamp_only(self):
!         email = self.get_git_email('0002-Bump-date.patch')
          assert not email.errors
  
      def test_wrong_changelog_entry(self):
*************** class TestGccChangelog(unittest.TestCase
*** 404,406 ****
--- 403,453 ----
          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'
+         assert email.errors[0].line == '	* config/i386/i386.md (*fix_trunc<mode>_i387_1,'
+ 
+     def test_changelog_removal(self):
+         email = self.from_patch_glob('0001-ChangeLog-removal.patch')
+         assert not email.errors
+ 
+     def test_long_filenames(self):
+         email = self.from_patch_glob('0001-long-filenames')
+         assert not email.errors
+ 
+     def test_multi_same_file(self):
+         email = self.from_patch_glob('0001-OpenMP-Fix-SIMT')
+         assert email.errors[0].message == 'same file specified multiple times'
+ 
+     def test_pr_only_in_subject(self):
+         email = self.from_patch_glob('0001-rs6000-Support-doubleword')
+         assert (email.errors[0].message ==
+                 'PR 100085 in subject but not in changelog')
+ 
+     def test_wrong_pr_comp_in_subject(self):
+         email = self.from_patch_glob('pr-wrong-comp.patch')
+         assert email.errors[0].message == 'invalid PR component in subject'
+ 
+     def test_copyright_years(self):
+         email = self.from_patch_glob('copyright-years.patch')
+         assert not email.errors
+ 
+     def test_non_ascii_email(self):
+         email = self.from_patch_glob('non-ascii-email.patch')
+         assert (email.errors[0].message ==
+                 'non-ASCII characters in git commit email address (jbglaw@ług-owl.de)')
+ 
+     def test_new_file_in_root_folder(self):
+         email = self.from_patch_glob('toplev-new-file.patch')
+         assert (email.errors[0].message ==
+                 'new file in the top-level folder not mentioned in a ChangeLog')
diff -Nrcpad gcc-10.3.0/contrib/gcc-changelog/test_patches.txt gcc-10.4.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-10.4.0/contrib/gcc-changelog/test_patches.txt	Tue Jun 28 08:54:27 2022
*************** xxxx-xx-xx  Claudiu Zissulescu  <claziss
*** 68,80 ****
   create mode 100644 gcc/testsuite/gcc.target/arc/uncached-7.c
   create mode 100644 gcc/testsuite/gcc.target/arc/uncached-8.c
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 91dfcd71a4b..2cc61d68cf3 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
  index 22475f2732e..e1a865f02e6 100644
  --- a/gcc/config/arc/arc.c
--- 68,73 ----
*************** index cf7aa8d83c9..46cb254ed28 100644
*** 89,101 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 16ddef07516..991934272e0 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/gcc.target/arc/arc.exp b/gcc/testsuite/gcc.target/arc/arc.exp
  index 8d1844edd22..501d4589c53 100644
  --- a/gcc/testsuite/gcc.target/arc/arc.exp
--- 82,87 ----
*************** without any data fields.
*** 199,218 ****
   4 files changed, 36 insertions(+)
   create mode 100644 gcc/testsuite/g++.dg/tree-ssa/pr93667.C
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 77c2a9ad810..6b53f9a2f07 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 9b4fe11a6f6..8033fa0a3bb 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr93667.C b/gcc/testsuite/g++.dg/tree-ssa/pr93667.C
  new file mode 100644
  index 00000000000..d875f53d9ec
--- 185,190 ----
*************** Subject: [PATCH 0413/2034] SRA: Total sc
*** 275,294 ****
   5 files changed, 537 insertions(+), 184 deletions(-)
   create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr92706-2.c
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 16247a59304..61da54df346 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 05518848829..38758207989 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/gcc.dg/guality/pr59776.c b/gcc/testsuite/gcc.dg/guality/pr59776.c
  index 382abb622bb..6c1c8165b70 100644
  --- a/gcc/testsuite/gcc.dg/guality/pr59776.c
--- 247,252 ----
*************** Subject: [PATCH 0334/2034] Do not genera
*** 333,345 ****
   gcc/testsuite/gcc.target/i386/pr81213.c |  4 ++--
   4 files changed, 19 insertions(+), 17 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 45075840824..59806baa757 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config/i386/i386-features.c b/gcc/config/i386/i386-features.c
  index e580b26b995..b49e6f8d408 100644
  --- a/gcc/config/i386/i386-features.c
--- 291,296 ----
*************** index e580b26b995..b49e6f8d408 100644
*** 347,359 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 2de060843d9..22a37dd1ab2 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/gcc.target/i386/pr81213.c b/gcc/testsuite/gcc.target/i386/pr81213.c
  index 13e15d5fef0..89c47529861 100644
  --- a/gcc/testsuite/gcc.target/i386/pr81213.c
--- 298,303 ----
*************** Co-Authored-By: Jakub Jelinek <jakub@red
*** 396,408 ****
   8 files changed, 142 insertions(+), 22 deletions(-)
   create mode 100644 gcc/testsuite/g++.dg/pr94314-4.C
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 74dbeeb44c6..9e499ec9c86 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
  index c73b8f810f0..8f541a28b6e 100644
  --- a/gcc/cgraphclones.c
--- 340,345 ----
*************** index c73b8f810f0..8f541a28b6e 100644
*** 410,422 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 756f1d759e6..94d2312022d 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/g++.dg/pr94314-2.C b/gcc/testsuite/g++.dg/pr94314-2.C
  index 36b93ed6d4d..998ce601767 100644
  --- a/gcc/testsuite/g++.dg/pr94314-2.C
--- 347,352 ----
*************** https://gcc.gnu.org/ml/gcc-patches/2020-
*** 492,504 ****
   3 files changed, 24 insertions(+), 5 deletions(-)
   create mode 100644 gcc/testsuite/g++.dg/template/pr90916.C
  
- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
- index 004ce0fdcdf..3cc7c48b490 100644
- --- a/gcc/cp/ChangeLog
- +++ b/gcc/cp/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
  index fa82ecad233..4fdc74f9ca8 100644
  --- a/gcc/cp/pt.c
--- 422,427 ----
*************** not broken, but this is both safer and s
*** 539,551 ****
   libgomp/plugin/plugin-gcn.c | 8 ++++++++
   2 files changed, 17 insertions(+)
  
- diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog
- index c524abbbfb6..ee1764d4ae3 100644
- --- a/libgomp/ChangeLog
- +++ b/libgomp/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/libgomp/plugin/plugin-gcn.c b/libgomp/plugin/plugin-gcn.c
  index dc72c90962c..4c6a4c03b6e 100644
  --- a/libgomp/plugin/plugin-gcn.c
--- 462,467 ----
*************** ChangeLog:
*** 578,590 ****
   gcc/tree-into-ssa.c | 59 ++++++++++++++++++++++++++++++++++++---------
   2 files changed, 55 insertions(+), 12 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 8c17e5992d2..262f0d6506f 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
  index c27bf2ce121..6528acac31a 100644
  --- a/gcc/tree-into-ssa.c
--- 494,499 ----
*************** just the C-family ones that defined a fo
*** 683,695 ****
   17 files changed, 146 insertions(+), 95 deletions(-)
   create mode 100644 gcc/testsuite/g++.dg/cpp/pr80005.C
  
- diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
- index 09ba2c8b40f..fdddb98a74d 100644
- --- a/gcc/c-family/ChangeLog
- +++ b/gcc/c-family/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
  index a6308921dc9..70a12055e27 100644
  --- a/gcc/c-family/c-cppbuiltin.c
--- 592,597 ----
*************** index a6308921dc9..70a12055e27 100644
*** 697,709 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index a526e32ac89..67d5f2e9e28 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/g++.dg/cpp/pr80005.C b/gcc/testsuite/g++.dg/cpp/pr80005.C
  new file mode 100644
  index 00000000000..cc752616782
--- 599,604 ----
*************** index dd15cd6af3c..82fd602f9f1 100644
*** 732,744 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
- index 3249b93fe88..27a841bbdce 100644
- --- a/libcpp/ChangeLog
- +++ b/libcpp/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/libcpp/directives.c b/libcpp/directives.c
  index 983206a5838..10735c8c668 100644
  --- a/libcpp/directives.c
--- 627,632 ----
*************** Subject: [PATCH 0004/2034] tree-opt: Fix
*** 825,837 ****
   gcc/tree-ssa-forwprop.c | 6 +++---
   2 files changed, 12 insertions(+), 3 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index a195863212e..f7df07343d1 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
  index aac31d02b6c..56c470f6ecf 100644
  --- a/gcc/tree-ssa-forwprop.c
--- 713,718 ----
*************** Subject: [PATCH 0735/2034] PR 87488: Add
*** 898,910 ****
   gcc/pretty-print.h     |   5 +-
   11 files changed, 328 insertions(+), 26 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index e6eb6ab4c21..22f990a3088 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config.in b/gcc/config.in
  index 48292861842..01fb18dbbb5 100644
  --- a/gcc/config.in
--- 779,784 ----
*************** gcc/ChangeLog
*** 1000,1012 ****
   gcc/cfgloopanal.c | 5 ++++-
   2 files changed, 9 insertions(+), 1 deletion(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 07e5bebe909..f3301b16464 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
  index 392b1c337c4..0b33e8272a7 100644
  --- a/gcc/cfgloopanal.c
--- 874,879 ----
*************** Subject: [PATCH 0735/2034] PR 87488: Add
*** 1073,1085 ****
   gcc/pretty-print.h     |   5 +-
   11 files changed, 328 insertions(+), 26 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index e6eb6ab4c21..22f990a3088 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config.in b/gcc/config.in
  index 48292861842..01fb18dbbb5 100644
  --- a/gcc/config.in
--- 940,945 ----
*************** co-authored-by: John Miller2 <jm2@exampl
*** 1187,1199 ****
   8 files changed, 142 insertions(+), 22 deletions(-)
   create mode 100644 gcc/testsuite/g++.dg/pr94314-4.C
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 74dbeeb44c6..9e499ec9c86 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
  index c73b8f810f0..8f541a28b6e 100644
  --- a/gcc/cgraphclones.c
--- 1047,1052 ----
*************** index c73b8f810f0..8f541a28b6e 100644
*** 1201,1213 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 756f1d759e6..94d2312022d 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/g++.dg/pr94314-2.C b/gcc/testsuite/g++.dg/pr94314-2.C
  index 36b93ed6d4d..998ce601767 100644
  --- a/gcc/testsuite/g++.dg/pr94314-2.C
--- 1054,1059 ----
*************** if it isn't a REG or SUBREG of REG.
*** 1299,1311 ****
   4 files changed, 51 insertions(+), 19 deletions(-)
   create mode 100644 gcc/testsuite/gcc.dg/pr94291.c
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index a1ab9fb4ef3..12803e90b0a 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/combine.c b/gcc/combine.c
  index 58366a6d331..cff76cd3303 100644
  --- a/gcc/combine.c
--- 1145,1150 ----
*************** index 58366a6d331..cff76cd3303 100644
*** 1313,1325 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 71b5a14bcbe..3cbf891d58d 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/gcc.dg/pr94291.c b/gcc/testsuite/gcc.dg/pr94291.c
  new file mode 100644
  index 00000000000..7daa2b01166
--- 1152,1157 ----
*************** index e85a8e8813e..fb776ba5a0e 100644
*** 1390,1402 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
- index c429b49e68c..69ea1fdc4f3 100644
- --- a/gcc/c-family/ChangeLog
- +++ b/gcc/c-family/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c
  index ac936d5bbbb..a101312c581 100644
  --- a/gcc/c-family/c-attribs.c
--- 1222,1227 ----
*************** index c212a1a57dc..3dccef39701 100644
*** 1432,1441 ****
  @@ -1 +1,2 @@
  
  +
! diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
! index 176aa117904..185f9ea725e 100644
! --- a/gcc/testsuite/ChangeLog
! +++ b/gcc/testsuite/ChangeLog
  @@ -1 +1,2 @@
  
  +
--- 1257,1378 ----
  @@ -1 +1,2 @@
  
  +
! diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
! new file mode 100644
! index 00000000000..f60bf46cfe3
! --- /dev/null
! +++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
! @@ -0,0 +1 @@
! +
! diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
! new file mode 100644
! index 00000000000..90f88c78be7
! --- /dev/null
! +++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
! @@ -0,0 +1 @@
! +
! diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
! new file mode 100644
! index 00000000000..4490e5c15ca
! --- /dev/null
! +++ b/gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
! @@ -0,0 +1 @@
! +
! diff --git a/gcc/varasm.c b/gcc/varasm.c
! index 271a67abf56..f062e48071f 100644
! --- a/gcc/varasm.c
! +++ b/gcc/varasm.c
! @@ -1 +1,2 @@
! 
! +
! -- 
! 2.26.2
! 
! === 0002-Add-patch_area_size-and-patch_area_entry-to-crtl.patch ===
! From 6607bdd99994c834f92fce924abdaea3405f62dc Mon Sep 17 00:00:00 2001
! From: "H.J. Lu" <hjl.tools@gmail.com>
! Date: Fri, 1 May 2020 21:03:10 -0700
! Subject: [PATCH] Add patch_area_size and patch_area_entry to crtl
! 
! Currently patchable area is at the wrong place.  It is placed immediately
! after function label and before .cfi_startproc.  A backend should be able
! to add a pseudo patchable area instruction durectly into RTL.  This patch
! adds patch_area_size and patch_area_entry to crtl so that the patchable
! area info is available in RTL passes.
! 
! It also limits patch_area_size and patch_area_entry to 65535, which is
! a reasonable maximum size for patchable area.
! 
! gcc/
! 
! 	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.
! 
! gcc/c-family/
! 
! 	PR target/12345
! 	* c-attribs.c (handle_patchable_function_entry_attribute): Limit
! 	value to USHRT_MAX (65535).
! 
! ---
!  gcc/ChangeLog                                 | 14 ++++++++
!  gcc/c-family/ChangeLog                        |  6 ++++
!  gcc/c-family/c-attribs.c                      |  9 +++++
!  gcc/cfgexpand.c                               | 33 +++++++++++++++++++
!  gcc/doc/invoke.texi                           |  1 +
!  gcc/emit-rtl.h                                |  6 ++++
!  gcc/opts.c                                    |  4 ++-
!  gcc/testsuite/ChangeLog                       |  7 ++++
!  .../patchable_function_entry-error-1.c        |  9 +++++
!  .../patchable_function_entry-error-2.c        |  9 +++++
!  .../patchable_function_entry-error-3.c        | 17 ++++++++++
!  gcc/varasm.c                                  | 30 ++---------------
!  12 files changed, 116 insertions(+), 29 deletions(-)
!  create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
!  create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
!  create mode 100644 gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
! 
! diff --git a/gcc/c-family/c-attribs.c b/gcc/c-family/c-attribs.c
! index ac936d5bbbb..a101312c581 100644
! --- a/gcc/c-family/c-attribs.c
! +++ b/gcc/c-family/c-attribs.c
! @@ -1 +1,2 @@
! 
! +
! diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
! index a7ec77d5c85..86efa22bf60 100644
! --- a/gcc/cfgexpand.c
! +++ b/gcc/cfgexpand.c
! @@ -1 +1,2 @@
! 
! +
! diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
! index 527d362533a..767d1f07801 100644
! --- a/gcc/doc/invoke.texi
! +++ b/gcc/doc/invoke.texi
! @@ -1 +1,2 @@
! 
! +
! diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
! index a878efe3cf7..3d6565c8a30 100644
! --- a/gcc/emit-rtl.h
! +++ b/gcc/emit-rtl.h
! @@ -1 +1,2 @@
! 
! +
! diff --git a/gcc/opts.c b/gcc/opts.c
! index c212a1a57dc..3dccef39701 100644
! --- a/gcc/opts.c
! +++ b/gcc/opts.c
  @@ -1 +1,2 @@
  
  +
*************** gcc/cp/ChangeLog
*** 1497,1509 ****
   3 files changed, 40 insertions(+), 18 deletions(-)
   create mode 100644 gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
  
- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
- index 640e4948130..4b6691a77f0 100644
- --- a/gcc/cp/ChangeLog
- +++ b/gcc/cp/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
  index 7bf249cee5c..2fe7b66707c 100644
  --- a/gcc/cp/pt.c
--- 1434,1439 ----
*************** Subject: [PATCH 0030/2034] 	PR c++/92746
*** 1531,1536 ****
--- 1461,1467 ----
  Another place that needs to specially handle Concepts TS function-style
  concepts.
  
+ 	PR c++/92746
  	* except.c (check_noexcept_r): Handle concept-check.
  ---
   gcc/cp/ChangeLog                            | 3 +++
*************** concepts.
*** 1539,1551 ****
   3 files changed, 11 insertions(+)
   create mode 100644 gcc/testsuite/g++.dg/concepts/fn-concept3.C
  
- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
- index 59646c70fa4..4729e3d331d 100644
- --- a/gcc/cp/ChangeLog
- +++ b/gcc/cp/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cp/except.c b/gcc/cp/except.c
  index e073bd4d2bc..55b4b6af442 100644
  --- a/gcc/cp/except.c
--- 1470,1475 ----
*************** Subject: [PATCH 0129/2034] Add PR number
*** 1573,1585 ****
   gcc/ChangeLog | 1 +
   1 file changed, 1 insertion(+)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 6c6d586ca75..49ca5f92dec 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  -- 
  2.26.1
  
--- 1497,1502 ----
*************** gcc/testsuite/
*** 1616,1628 ****
   6 files changed, 132 insertions(+)
   create mode 100644 gcc/testsuite/gcc.target/aarch64/movk_2.c
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index efbbbf08225..cea8ffee99c 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
  index 24cc65a383a..d29975a8921 100644
  --- a/gcc/config/aarch64/aarch64-protos.h
--- 1533,1538 ----
*************** index 90eebce85c0..9c1f17d0f85 100644
*** 1644,1656 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 601bc336290..cdb26581b9c 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/gcc.target/aarch64/movk_2.c b/gcc/testsuite/gcc.target/aarch64/movk_2.c
  new file mode 100644
  index 00000000000..a0477ad5d42
--- 1554,1559 ----
*************** already).
*** 1836,1848 ****
   gcc/testsuite/g++.dg/tree-ssa/pr27830.C |  2 ++
   4 files changed, 47 insertions(+), 5 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 06f7eda0033..93c3076eb86 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config/rs6000/rs6000-call.c b/gcc/config/rs6000/rs6000-call.c
  index e08621ace27..a9ae7ab70ca 100644
  --- a/gcc/config/rs6000/rs6000-call.c
--- 1739,1744 ----
*************** index e08621ace27..a9ae7ab70ca 100644
*** 1850,1862 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 684e408c1a5..245c1512c76 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr27830.C b/gcc/testsuite/g++.dg/tree-ssa/pr27830.C
  index 01c7fc18783..551ebc428cd 100644
  --- a/gcc/testsuite/g++.dg/tree-ssa/pr27830.C
--- 1746,1751 ----
*************** index c212a1a57dc..3dccef39701 100644
*** 1969,1981 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 176aa117904..185f9ea725e 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c b/gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
  new file mode 100644
  index 00000000000..f60bf46cfe3
--- 1858,1863 ----
*************** Subject: [PATCH 0004/2034] tree-opt: Fix
*** 2082,2094 ****
   gcc/tree-ssa-forwprop.c | 6 +++---
   2 files changed, 12 insertions(+), 3 deletions(-)
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index a195863212e..f7df07343d1 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
  index aac31d02b6c..56c470f6ecf 100644
  --- a/gcc/tree-ssa-forwprop.c
--- 1964,1969 ----
*************** index aac31d02b6c..56c470f6ecf 100644
*** 2103,2109 ****
  From 5194b51ed9714808d88827531e91474895b6c706 Mon Sep 17 00:00:00 2001
  From: Jason Merrill <jason@redhat.com>
  Date: Thu, 16 Jan 2020 16:55:39 -0500
! Subject: [PATCH 0121/2034] PR c++/93286 - ICE with __is_constructible and
   variadic template.
  
  Here we had been recursing in tsubst_copy_and_build if type2 was a TREE_LIST
--- 1978,1984 ----
  From 5194b51ed9714808d88827531e91474895b6c706 Mon Sep 17 00:00:00 2001
  From: Jason Merrill <jason@redhat.com>
  Date: Thu, 16 Jan 2020 16:55:39 -0500
! Subject: [PATCH 0121/2034] PR c++/12345 - ICE with __is_constructible and
   variadic template.
  
  Here we had been recursing in tsubst_copy_and_build if type2 was a TREE_LIST
*************** gcc/testsuite/ChangeLog:
*** 2125,2137 ****
   3 files changed, 89 insertions(+), 7 deletions(-)
   create mode 100644 gcc/testsuite/g++.dg/ext/is_constructible4.C
  
- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
- index 3ca5d7a11b4..c37e461bcc5 100644
- --- a/gcc/cp/ChangeLog
- +++ b/gcc/cp/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
  index 9bb8cc13e5f..872f8ff8f52 100644
  --- a/gcc/cp/pt.c
--- 2000,2005 ----
*************** Subject: [PATCH 0043/2034] Compare TREE_
*** 2210,2222 ****
   create mode 100644 gcc/testsuite/g++.dg/lto/odr-8_0.C
   create mode 100644 gcc/testsuite/g++.dg/lto/odr-8_1.C
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 38165123654..33ca91a6467 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
  index f0031957375..b609a77701d 100644
  --- a/gcc/ipa-devirt.c
--- 2078,2083 ----
*************** index f0031957375..b609a77701d 100644
*** 2224,2236 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 8e3b9105188..dc42601794b 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/g++.dg/lto/odr-8_0.C b/gcc/testsuite/g++.dg/lto/odr-8_0.C
  new file mode 100644
  index 00000000000..59f51399fac
--- 2085,2090 ----
*************** gcc/testsuite/ChangeLog:
*** 2302,2314 ****
   create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-3.c
   create mode 100755 gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-4.c
  
- diff --git a/gcc/ChangeLog b/gcc/ChangeLog
- index 9a949980699..49dcecb6777 100644
- --- a/gcc/ChangeLog
- +++ b/gcc/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
  index f0e0461b7f0..f50c4857e1c 100644
  --- a/gcc/config/aarch64/aarch64-builtins.c
--- 2156,2161 ----
*************** index b9843b83c5f..83720d9802a 100644
*** 2344,2356 ****
  @@ -1 +1,2 @@
  
  +
- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
- index 0d8aa6063a7..8b01aa06a40 100644
- --- a/gcc/testsuite/ChangeLog
- +++ b/gcc/testsuite/ChangeLog
- @@ -1 +1,2 @@
- 
- +
  diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdot-3-1.c
  new file mode 100755
  index 00000000000..ac4f821e771
--- 2191,2196 ----
*************** index 00000000000..56c67f58752
*** 3398,3401 ****
--- 3238,3573 ----
  -- 
  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(+)
+ 
+ -- 
+ 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 @@
+  
+ +
+ 
+ === 0001-OpenMP-Fix-SIMT ===
+ From 33b647956caa977d1ae489f9baed9cef70b4f382 Mon Sep 17 00:00:00 2001
+ From: Tobias Burnus <tobias@codesourcery.com>
+ Date: Fri, 7 May 2021 12:11:51 +0200
+ Subject: [PATCH] OpenMP: Fix SIMT for complex/float reduction with && and ||
+ 
+ libgomp/ChangeLog:
+ 
+ 	* testsuite/libgomp.c-c++-common/reduction-5.c: New test, testing
+ 	complex/floating-point || + && reduction with 'omp target'.
+ 	* testsuite/libgomp.c-c++-common/reduction-5.c: Likewise.
+ ---
+ diff --git a/libgomp/testsuite/libgomp.c-c++-common/reduction-5.c b/libgomp/testsuite/libgomp.c-c++-common/reduction-5.c
+ new file mode 100644
+ index 00000000000..21540512e23
+ --- /dev/null
+ +++ b/libgomp/testsuite/libgomp.c-c++-common/reduction-5.c
+ @@ -0,0 +1,1 @@
+ +
+ diff --git a/libgomp/testsuite/libgomp.c-c++-common/reduction-6.c b/libgomp/testsuite/libgomp.c-c++-common/reduction-6.c
+ new file mode 100644
+ index 00000000000..21540512e23
+ --- /dev/null
+ +++ b/libgomp/testsuite/libgomp.c-c++-common/reduction-6.c
+ @@ -0,0 +1,1 @@
+ +
+ -- 
+ 2.25.1
+ === 0001-rs6000-Support-doubleword ===
+ From f700e4b0ee3ef53b48975cf89be26b9177e3a3f3 Mon Sep 17 00:00:00 2001
+ From: Xionghu Luo <luoxhu@linux.ibm.com>
+ Date: Tue, 8 Jun 2021 21:48:12 -0500
+ Subject: [PATCH] rs6000: Support doubleword swaps removal in rot64 load store
+  [PR100085]
+ 
+ gcc/testsuite/ChangeLog:
+ 
+ 	* gcc.target/powerpc/pr100085.c: New test.
+ ---
+ diff --git a/gcc/testsuite/gcc.target/powerpc/pr100085.c b/gcc/testsuite/gcc.target/powerpc/pr100085.c
+ new file mode 100644
+ index 00000000000..7d8b147b127
+ --- /dev/null
+ +++ b/gcc/testsuite/gcc.target/powerpc/pr100085.c
+ @@ -0,0 +1,1 @@
+ +
+ -- 
+ 2.25.1
+ === pr-wrong-comp.patch ===
+ From 5194b51ed9714808d88827531e91474895b6c706 Mon Sep 17 00:00:00 2001
+ From: Jason Merrill <jason@redhat.com>
+ Date: Thu, 16 Jan 2020 16:55:39 -0500
+ Subject: [PATCH 0121/2034] PR some/93286 - ICE with __is_constructible and
+  variadic template.
+ 
+ gcc/testsuite/ChangeLog:
+ 
+ 	PR c++/93286
+ 	* gcc.target/powerpc/pr100085.c: New test.
+ ---
+ diff --git a/gcc/testsuite/gcc.target/powerpc/pr100085.c b/gcc/testsuite/gcc.target/powerpc/pr100085.c
+ new file mode 100644
+ index 00000000000..7d8b147b127
+ --- /dev/null
+ +++ b/gcc/testsuite/gcc.target/powerpc/pr100085.c
+ @@ -0,0 +1,1 @@
+ +
+ -- 
+ 2.25.1
+ ==== copyright-years.patch ===
+ From 99dee82307f1e163e150c9c810452979994047ce Mon Sep 17 00:00:00 2001
+ From: Jakub Jelinek <jakub@redhat.com>
+ Date: Mon, 4 Jan 2021 10:26:59 +0100
+ Subject: [PATCH] Update copyright years.
+ 
+ ---
+ diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c
+ new file mode 100644
+ index 6f67552d075..32478f070e8 100644
+ --- a/lto-plugin/lto-plugin.c
+ +++ b/lto-plugin/lto-plugin.c
+ @@ -0,0 +1,1 @@
+ +
+ -- 
+ 2.25.1
+ 
+ === non-ascii-email.patch ===
+ From f42e95a830ab48e59389065ce79a013a519646f1 Mon Sep 17 00:00:00 2001
+ From: Jan-Benedict Glaw <jbglaw@ług-owl.de>
+ Date: Mon, 13 Sep 2021 12:08:25 +0200
+ Subject: [PATCH] Fix multi-statment macro
+ 
+ INIT_CUMULATIVE_ARGS() expands to multiple statements, which will break right
+ after an `if` statement. Wrap it into a block.
+ 
+ gcc/ChangeLog:
+ 
+ 	* config/alpha/vms.h (INIT_CUMULATIVE_ARGS): Wrap multi-statment
+ 	define into a block.
+ ---
+  gcc/config/alpha/vms.h | 10 +++++++---
+  1 file changed, 7 insertions(+), 3 deletions(-)
+ 
+ diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h
+ index 2a9917cde62..0033b0004b3 100644
+ --- a/gcc/config/alpha/vms.h
+ +++ b/gcc/config/alpha/vms.h
+ @@ -0,0 +1,1 @@
+ +
+ -- 
+ 
+ === toplev-new-file.patch ===
+ From 05e37b6e65027188f08e6374c7d356d75b54738e Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Mon, 24 Jan 2022 12:46:27 +0100
+ Subject: [PATCH] New file.
+ 
+ ChangeLog:
+ 
+ 	* Makefile.in: Update.
+ 
+ gcc/ChangeLog:
+ 
+ 	* ipa-icf.cc: Update.
+ ---
+  Makefile.am     | 1 +
+  Makefile.in     | 1 +
+  gcc/ipa-icf.cc  | 1 +
+  gcc/ipa-icf2.cc | 1 +
+  4 files changed, 4 insertions(+)
+  create mode 100644 Makefile.am
+  create mode 100644 gcc/ipa-icf2.cc
  
+ diff --git a/Makefile.am b/Makefile.am
+ new file mode 100644
+ index 00000000000..f0129caae3d
+ --- /dev/null
+ +++ b/Makefile.am
+ @@ -0,0 +1 @@
+ +new file.
+ diff --git a/Makefile.in b/Makefile.in
+ index 79c77fccf0f..7a090030119 100644
+ --- a/Makefile.in
+ +++ b/Makefile.in
+ @@ -1,4 +1,5 @@
+  
+ +
+  # Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'.
+  #
+  # Makefile for directory with subdirs to build.
+ diff --git a/gcc/ipa-icf.cc b/gcc/ipa-icf.cc
+ index 765ae746745..15735b6684f 100644
+ --- a/gcc/ipa-icf.cc
+ +++ b/gcc/ipa-icf.cc
+ @@ -1,3 +1,4 @@
+ +
+  /* Interprocedural Identical Code Folding pass
+     Copyright (C) 2014-2022 Free Software Foundation, Inc.
+  
+ diff --git a/gcc/ipa-icf2.cc b/gcc/ipa-icf2.cc
+ new file mode 100644
+ index 00000000000..c49c556e0e4
+ --- /dev/null
+ +++ b/gcc/ipa-icf2.cc
+ @@ -0,0 +1 @@
+ +tt
+ -- 
+ 2.34.1
+ 
+ From 80c9d63af350b280bfccb82adb3867c25a25e6d0 Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Mon, 24 Jan 2022 12:17:09 +0100
+ Subject: [PATCH] Add Makefile.am file.
+ 
+ Foo bar.
+ 
+ ChangeLog:
+ 
+ ---
+  Makefile.am | 0
+  1 file changed, 0 insertions(+), 0 deletions(-)
+  create mode 100644 Makefile.am
+ 
+ diff --git a/Makefile.am b/Makefile.am
+ new file mode 100644
+ index 00000000000..d6459e00543
+ --- /dev/null
+ +++ b/Makefile.am
+ @@ -0,0 +1 @@
+ +xxx
+ -- 
+ 2.34.1
diff -Nrcpad gcc-10.3.0/contrib/gcc-git-customization.sh gcc-10.4.0/contrib/gcc-git-customization.sh
*** gcc-10.3.0/contrib/gcc-git-customization.sh	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/gcc-git-customization.sh	Tue Jun 28 08:54:27 2022
*************** git config alias.svn-rev '!f() { rev=$1;
*** 22,35 ****
  
  # Add git commands to convert git commit to monotonically increasing revision number
  # and vice versa
! 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"
  
  # 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.*$'
  
  set_user=$(git config --get "user.name")
  set_email=$(git config --get "user.email")
  
--- 22,45 ----
  
  # Add git commands to convert git commit to monotonically increasing revision number
  # and vice versa
! git config alias.gcc-descr '!f() { "`git rev-parse --show-toplevel`/contrib/git-descr.sh" $@; } ; f'
! git config alias.gcc-undescr '!f() { "`git rev-parse --show-toplevel`/contrib/git-undescr.sh" $@; } ; 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-fix-changelog '!f() { "`git rev-parse --show-toplevel`/contrib/git-fix-changelog.py" $@; } ; f'
! git config alias.gcc-mklog '!f() { "`git rev-parse --show-toplevel`/contrib/mklog.py" $@; } ; f'
! git config alias.gcc-commit-mklog '!f() { "`git rev-parse --show-toplevel`/contrib/git-commit-mklog.py" "$@"; }; 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 ****
--- 132,148 ----
  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/git-backport.py gcc-10.4.0/contrib/git-backport.py
*** gcc-10.3.0/contrib/git-backport.py	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/git-backport.py	Tue Jun 28 08:54:27 2022
***************
*** 20,65 ****
  # Boston, MA 02110-1301, USA.
  
  import argparse
  import subprocess
  
  if __name__ == '__main__':
!     parser = argparse.ArgumentParser(description='Backport a git revision and '
!                                      'stash all ChangeLog files.')
      parser.add_argument('revision', help='Revision')
      args = parser.parse_args()
  
!     r = subprocess.run('git cherry-pick -x %s' % args.revision, shell=True)
!     if r.returncode == 0:
!         cmd = 'git show --name-only --pretty="" -- "*ChangeLog"'
!         changelogs = subprocess.check_output(cmd, shell=True, encoding='utf8')
!         changelogs = changelogs.strip()
!         if changelogs:
!             for changelog in changelogs.split('\n'):
!                 subprocess.check_output('git checkout HEAD~ %s' % changelog,
!                                         shell=True)
!         subprocess.check_output('git commit --amend --no-edit', shell=True)
!     else:
!         # 1) remove all ChangeLog files from conflicts
!         out = subprocess.check_output('git diff --name-only --diff-filter=U',
!                                       shell=True,
!                                       encoding='utf8')
!         conflicts = out.strip().split('\n')
!         changelogs = [c for c in conflicts if c.endswith('ChangeLog')]
!         if changelogs:
!             cmd = 'git checkout --theirs %s' % ' '.join(changelogs)
!             subprocess.check_output(cmd, shell=True)
!         # 2) remove all ChangeLog files from index
!         cmd = 'git diff --name-only --diff-filter=M HEAD'
!         out = subprocess.check_output(cmd, shell=True, encoding='utf8')
!         out = out.strip().split('\n')
!         modified = [c for c in out if c.endswith('ChangeLog')]
!         for m in modified:
!             subprocess.check_output('git reset %s' % m, shell=True)
!             subprocess.check_output('git checkout %s' % m, shell=True)
! 
!         # try to continue
!         if len(conflicts) == len(changelogs):
!             cmd = 'git -c core.editor=true cherry-pick --continue'
!             subprocess.check_output(cmd, shell=True)
!         else:
!             print('Please resolve all remaining file conflicts.')
--- 20,35 ----
  # Boston, MA 02110-1301, USA.
  
  import argparse
+ import os
  import subprocess
  
+ script_folder = os.path.dirname(os.path.abspath(__file__))
+ fixup_script = os.path.join(script_folder, 'git-fix-changelog.py')
+ 
  if __name__ == '__main__':
!     parser = argparse.ArgumentParser(description='Backport a git revision.')
      parser.add_argument('revision', help='Revision')
      args = parser.parse_args()
  
!     subprocess.run('git cherry-pick -x %s' % args.revision, shell=True)
!     subprocess.run(fixup_script, shell=True)
diff -Nrcpad gcc-10.3.0/contrib/git-commit-mklog.py gcc-10.4.0/contrib/git-commit-mklog.py
*** gcc-10.3.0/contrib/git-commit-mklog.py	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/contrib/git-commit-mklog.py	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,59 ----
+ #!/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.
+ #
+ # The script is wrapper for git commit-mklog alias where it parses
+ # -b/--pr-numbers argument and passes it via environment variable
+ # to mklog.py script.
+ 
+ import argparse
+ import os
+ import subprocess
+ 
+ if __name__ == '__main__':
+     children_args = []
+     myenv = os.environ.copy()
+ 
+     parser = argparse.ArgumentParser(description='git-commit-mklog wrapped')
+     parser.add_argument('-b', '--pr-numbers', action='store',
+                         type=lambda arg: arg.split(','), nargs='?',
+                         help='Add the specified PRs (comma separated)')
+     parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
+                         help='Download title of mentioned PRs')
+     parser.add_argument('--co',
+                         help='Add Co-Authored-By trailer (comma separated)')
+     args, unknown_args = parser.parse_known_args()
+ 
+     myenv['GCC_FORCE_MKLOG'] = '1'
+     mklog_args = []
+     if args.pr_numbers:
+         mklog_args.append(f'-b {",".join(args.pr_numbers)}')
+     if args.fill_up_bug_titles:
+         mklog_args.append('-p')
+ 
+     if mklog_args:
+         myenv['GCC_MKLOG_ARGS'] = ' '.join(mklog_args)
+ 
+     if args.co:
+         for author in args.co.split(','):
+             unknown_args.append(f'--trailer "Co-Authored-By: {author}"')
+ 
+     commit_args = ' '.join(unknown_args)
+     subprocess.run(f'git commit {commit_args}', shell=True, env=myenv)
diff -Nrcpad gcc-10.3.0/contrib/git-descr.sh gcc-10.4.0/contrib/git-descr.sh
*** gcc-10.3.0/contrib/git-descr.sh	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/contrib/git-descr.sh	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,37 ----
+ #!/bin/sh
+ 
+ # Script to describe a GCC revision based on git hash
+ 
+ short=no
+ long=no
+ c=master
+ 
+ for arg in "$@"
+ do
+     case "$arg" in
+       --short) short=yes long=no
+ 	;;
+       --long|--full) long=yes short=no
+ 	;;
+       *) c=$arg
+     esac
+ done
+ 
+ if test x$short = xyes; then
+     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');
+ elif test x$long = xyes; then
+     r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\(tags/\)\?basepoints/gcc-,r,p')
+ else
+     r=$(git describe --all --abbrev=14 --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 $c);
+ 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;
diff -Nrcpad gcc-10.3.0/contrib/git-fix-changelog.py gcc-10.4.0/contrib/git-fix-changelog.py
*** gcc-10.3.0/contrib/git-fix-changelog.py	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/contrib/git-fix-changelog.py	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,92 ----
+ #!/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.
+ #
+ # The script tries to fix commit message where ChangeLog entries
+ # can point to .cc renamed files.
+ 
+ import argparse
+ import os
+ import subprocess
+ import tempfile
+ 
+ DESCRIPTION = 'Fix up ChangeLog of the current commit.'
+ 
+ script_folder = os.path.dirname(os.path.abspath(__file__))
+ verify_script = os.path.join(script_folder,
+                              'gcc-changelog/git_check_commit.py')
+ 
+ 
+ def replace_file_in_changelog(lines, filename, fixed):
+     # consider all componenets of a path: gcc/ipa-icf.cc
+     while filename:
+         for i, line in enumerate(lines):
+             if filename in line:
+                 lines[i] = line.replace(filename, fixed)
+                 return
+ 
+         parts = filename.split('/')
+         if len(parts) == 1:
+             return
+         filename = '/'.join(parts[1:])
+         fixed = '/'.join(fixed.split('/')[1:])
+ 
+ 
+ if __name__ == '__main__':
+     parser = argparse.ArgumentParser(description=DESCRIPTION)
+     args = parser.parse_args()
+ 
+     # Update commit message if change for a .cc file was taken
+     r = subprocess.run(f'{verify_script} HEAD', shell=True, encoding='utf8',
+                        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+     if r.returncode != 0:
+         lines = r.stdout.splitlines()
+         cmd = 'git show -s --format=%B'
+         commit_message = subprocess.check_output(cmd, shell=True,
+                                                  encoding='utf8').strip()
+         commit_message = commit_message.splitlines()
+ 
+         # Parse the following lines:
+         # ERR: unchanged file mentioned in a ChangeLog \
+         # (did you mean "gcc/ipa-icf.cc"?): "gcc/ipa-icf.c"
+         replaced = 0
+         for line in lines:
+             if ('unchanged file mentioned' in line and
+                     'did you mean' in line):
+                 filename = line.split()[-1].strip('"')
+                 fixed = line[line.index('did you mean'):]
+                 fixed = fixed[fixed.index('"') + 1:]
+                 fixed = fixed[:fixed.index('"')]
+ 
+                 if filename.count('/') == fixed.count('/'):
+                     replace_file_in_changelog(commit_message, filename, fixed)
+                     replaced += 1
+ 
+         if replaced:
+             with tempfile.NamedTemporaryFile('w', encoding='utf8',
+                                              delete=False) as w:
+                 w.write('\n'.join(commit_message))
+                 w.close()
+                 subprocess.check_output(f'git commit --amend -F {w.name}',
+                                         shell=True, encoding='utf8')
+                 os.unlink(w.name)
+                 print(f'Commit message updated: {replaced} file(s) renamed.')
+         else:
+             print('Commit message has not been updated.')
diff -Nrcpad gcc-10.3.0/contrib/git-undescr.sh gcc-10.4.0/contrib/git-undescr.sh
*** gcc-10.3.0/contrib/git-undescr.sh	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/contrib/git-undescr.sh	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,13 ----
+ #!/bin/sh
+ 
+ # Script to undescribe a GCC revision
+ 
+ o=$(git config --get gcc-config.upstream);
+ r=$(echo $1 | sed -n 's,^r\([0-9]\+\)-[0-9]\+\(-g[0-9a-f]\+\)\?$,\1,p');
+ n=$(echo $1 | sed -n 's,^r[0-9]\+-\([0-9]\+\)\(-g[0-9a-f]\+\)\?$,\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);
diff -Nrcpad gcc-10.3.0/contrib/header-tools/ChangeLog gcc-10.4.0/contrib/header-tools/ChangeLog
*** gcc-10.3.0/contrib/header-tools/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/contrib/header-tools/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/contrib/mklog.py gcc-10.4.0/contrib/mklog.py
*** gcc-10.3.0/contrib/mklog.py	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/contrib/mklog.py	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,356 ----
+ #!/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]+)')
+ prnum_regex = re.compile(r'PR (?P<comp>[a-z+-]+)/(?P<num>[0-9]+)')
+ dr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<dr>DR [0-9]+)')
+ dg_regex = re.compile(r'{\s+dg-(error|warning)')
+ pr_filename_regex = re.compile(r'(^|[\W_])[Pp][Rr](?P<pr>\d{4,})')
+ 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,component'
+ 
+ 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))
+ 
+ firstpr = ''
+ 
+ 
+ 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 idx, pr in enumerate(prs):
+         pr_id = pr.split('/')[-1]
+         r = requests.get(bugzilla_url % pr_id)
+         bugs = r.json()['bugs']
+         if len(bugs) == 1:
+             prs[idx] = 'PR %s/%s' % (bugs[0]['component'], pr_id)
+             out = '%s - %s\n' % (prs[idx], bugs[0]['summary'])
+             if out not in output:
+                 output.append(out)
+     if output:
+         output.append('')
+     return '\n'.join(output)
+ 
+ 
+ def generate_changelog(data, no_functions=False, fill_pr_titles=False,
+                        additional_prs=None):
+     changelogs = {}
+     changelog_list = []
+     prs = []
+     out = ''
+     diff = PatchSet(data)
+     global firstpr
+ 
+     if additional_prs:
+         prs = [pr for pr in additional_prs if pr not in prs]
+     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.
+             this_file_prs = []
+             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)
+                         this_file_prs.append(pr.split('/')[-1])
+                 else:
+                     m = dr_regex.search(line.value)
+                     if m:
+                         dr = m.group('dr')
+                         if dr not in prs:
+                             prs.append(dr)
+                             this_file_prs.append(dr.split('/')[-1])
+                     elif dg_regex.search(line.value):
+                         # Found dg-warning/dg-error line
+                         break
+             # PR number in the file name
+             fname = os.path.basename(file.path)
+             m = pr_filename_regex.search(fname)
+             if m:
+                 pr = m.group('pr')
+                 pr2 = 'PR ' + pr
+                 if pr not in this_file_prs and pr2 not in prs:
+                     prs.append(pr2)
+ 
+     if prs:
+         firstpr = prs[0]
+ 
+     if fill_pr_titles:
+         out += get_pr_titles(prs)
+ 
+     # print list of PR entries before ChangeLog entries
+     if prs:
+         if not out:
+             out += '\n'
+         for pr in prs:
+             out += '\t%s\n' % pr
+         out += '\n'
+ 
+     # 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'
+         # 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('-b', '--pr-numbers', action='store',
+                         type=lambda arg: arg.split(','), nargs='?',
+                         help='Add the specified PRs (comma separated)')
+     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, args.pr_numbers)
+         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 not start or not start[0]:
+                     # initial commit subject line 'component: [PRnnnnn]'
+                     m = prnum_regex.match(firstpr)
+                     if m:
+                         title = f'{m.group("comp")}: [PR{m.group("num")}]'
+                         start.insert(0, title)
+                 if start:
+                     # append 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/prerequisites.md5 gcc-10.4.0/contrib/prerequisites.md5
*** gcc-10.3.0/contrib/prerequisites.md5	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/prerequisites.md5	Tue Jun 28 08:54:27 2022
***************
*** 1,4 ****
  86ee6e54ebfc4a90b643a65e402c4048  gmp-6.1.0.tar.bz2
! b8a2f6b0e68bef46e53da2ac439e1cf4  mpfr-3.1.4.tar.bz2
  d6a1d5f8ddea3abd2cc3e98f58352d26  mpc-1.0.3.tar.gz
  11436d6b205e516635b666090b94ab32  isl-0.18.tar.bz2
--- 1,4 ----
  86ee6e54ebfc4a90b643a65e402c4048  gmp-6.1.0.tar.bz2
! 320c28198def956aeacdb240b46b8969  mpfr-3.1.6.tar.bz2
  d6a1d5f8ddea3abd2cc3e98f58352d26  mpc-1.0.3.tar.gz
  11436d6b205e516635b666090b94ab32  isl-0.18.tar.bz2
diff -Nrcpad gcc-10.3.0/contrib/prerequisites.sha512 gcc-10.4.0/contrib/prerequisites.sha512
*** gcc-10.3.0/contrib/prerequisites.sha512	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/contrib/prerequisites.sha512	Tue Jun 28 08:54:27 2022
***************
*** 1,4 ****
  3c82aeab9c1596d4da8afac2eec38e429e84f3211e1a572cf8fd2b546493c44c039b922a1133eaaa48bd7f3e11dbe795a384e21ed95cbe3ecc58d7ac02246117  gmp-6.1.0.tar.bz2
! 51066066ff2c12ed2198605ecf68846b0c96b548adafa5b80e0c786d0df488411a5e8973358fce7192dc977ad4e68414cf14500e3c39746de62465eb145bb819  mpfr-3.1.4.tar.bz2
  0028b76df130720c1fad7de937a0d041224806ce5ef76589f19c7b49d956071a683e2f20d154c192a231e69756b19e48208f2889b0c13950ceb7b3cfaf059a43  mpc-1.0.3.tar.gz
  85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94  isl-0.18.tar.bz2
--- 1,4 ----
  3c82aeab9c1596d4da8afac2eec38e429e84f3211e1a572cf8fd2b546493c44c039b922a1133eaaa48bd7f3e11dbe795a384e21ed95cbe3ecc58d7ac02246117  gmp-6.1.0.tar.bz2
! 0c310dd7956be527884f8059c195a5aca1042b089d0927ac6341e6310b1250a7059bc61aaaab4dfb76c6ab8b67e440878ca203f72674529bbcb46770ed9b6885  mpfr-3.1.6.tar.bz2
  0028b76df130720c1fad7de937a0d041224806ce5ef76589f19c7b49d956071a683e2f20d154c192a231e69756b19e48208f2889b0c13950ceb7b3cfaf059a43  mpc-1.0.3.tar.gz
  85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94  isl-0.18.tar.bz2
diff -Nrcpad gcc-10.3.0/contrib/reghunt/ChangeLog gcc-10.4.0/contrib/reghunt/ChangeLog
*** gcc-10.3.0/contrib/reghunt/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/contrib/reghunt/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/contrib/regression/ChangeLog gcc-10.4.0/contrib/regression/ChangeLog
*** gcc-10.3.0/contrib/regression/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/contrib/regression/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/contrib/test_mklog.py gcc-10.4.0/contrib/test_mklog.py
*** gcc-10.3.0/contrib/test_mklog.py	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/contrib/test_mklog.py	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,487 ----
+ #!/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 = '''\
+ 
+ 	PR 50209
+ 
+ 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
+ 
+ 	PR target/95046
+ 
+ gcc/testsuite/ChangeLog:
+ 
+ 	* 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 = '''\
+ 
+ 	DR 2237
+ 
+ gcc/testsuite/ChangeLog:
+ 
+ 	* 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/fixincludes/ChangeLog gcc-10.4.0/fixincludes/ChangeLog
*** gcc-10.3.0/fixincludes/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/fixincludes/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/BASE-VER gcc-10.4.0/gcc/BASE-VER
*** gcc-10.3.0/gcc/BASE-VER	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/BASE-VER	Tue Jun 28 08:54:27 2022
***************
*** 1 ****
! 10.3.0
--- 1 ----
! 10.4.0
diff -Nrcpad gcc-10.3.0/gcc/ChangeLog gcc-10.4.0/gcc/ChangeLog
*** gcc-10.3.0/gcc/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,2973 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/tilepro/gen-mul-tables.cc (tilegx_emit): Adjust loop
+ 	condition to avoid overflow.
+ 
+ 2022-06-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105209
+ 	* config/alpha/alpha-protos.h (alpha_store_data_bypass_p): New.
+ 	* config/alpha/alpha.c (alpha_store_data_bypass_p): New function.
+ 	(alpha_store_data_bypass_p_1): Ditto.
+ 	* config/alpha/ev4.md: Use alpha_store_data_bypass_p instead
+ 	of generic store_data_bypass_p.
+ 	(ev4_ist_c): Remove insn reservation.
+ 
+ 2022-06-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105970
+ 	* config/i386/i386.c (ix86_function_arg): Assert that
+ 	the mode of pointer argumet is equal to ptr_mode, not Pmode.
+ 
+ 2022-06-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backported from master:
+ 	2022-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/104829
+ 	* config/rs6000/rs6000.c (rs6000_machine_from_flags): Don't output
+ 	"ppc" and "ppc64" based on rs6000_cpu.
+ 
+ 2022-06-20  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backported from master:
+ 	2022-03-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_machine_from_flags): Restructure a
+ 	bit.  Handle most older CPUs.
+ 
+ 2022-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/105998
+ 	* varasm.c (narrowing_initializer_constant_valid_p): Check
+ 	SCALAR_INT_MODE_P instead of INTEGRAL_MODE_P, also break on
+ 	! INTEGRAL_TYPE_P and do the same check also on op{0,1}'s type.
+ 
+ 2022-06-20  Jan Hubicka  <jh@suse.cz>
+ 
+ 	Backported from master:
+ 	2022-06-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/105739
+ 	* ipa-prop.c (ipa_load_from_parm_agg): Punt on volatile loads.
+ 
+ 2022-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105729
+ 	* fold-const.c (fold_unary_loc): Don't optimize (X &) ((Y *) z + w)
+ 	to (X &) z + w if -fsanitize=null during GENERIC folding.
+ 
+ 2022-06-16  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2022-06-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/105981
+ 	* config/arm/arm.c (gen_cpymem_ldrd_strd): Rename low_reg and hi_reg
+ 	to first_reg and second_reg respectively.  Initialize them correctly
+ 	when generating big-endian code.
+ 
+ 2022-06-15  Simon Wright  <simon@pushface.org>
+ 
+ 	Backported from master:
+ 	2022-06-12  Simon Wright  <simon@pushface.org>
+ 
+ 	PR target/104871
+ 	* config/darwin-driver.c (darwin_find_version_from_kernel): If the OS
+ 	version is darwin20 (macOS 11) or greater, truncate the version to the
+ 	major number.
+ 
+ 2022-06-15  Mark Mentovai  <mark@mentovai.com>
+ 
+ 	Backported from master:
+ 	2022-06-12  Mark Mentovai  <mark@mentovai.com>
+ 
+ 	* config/darwin-c.c: Make -mmacosx-version-min more future-proof.
+ 
+ 2022-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105726
+ 	* gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
+ 	Constrain array-of-flexarray case more.
+ 
+ 2022-06-14  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/104637
+ 	* lra-assigns.c (lra_split_hard_reg_for): Split hard regs as many
+ 	as possible on one subpass.
+ 
+ 2022-06-13  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR rtl-optimization/104777
+ 	* rtl.c (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if
+ 	ASM_OPERANDS_LABEL_VEC has at least one element.
+ 
+ 2022-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-14  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* Makefile.in: Remove variables related to applying no-PIE
+ 	to the exes on $build.
+ 	* configure: Regenerate.
+ 	* configure.ac: Remove configuration related to applying
+ 	no-PIE to the exes on $build.
+ 
+ 2022-06-06  Alan Modra  <amodra@gmail.com>
+ 
+ 	Backported from master:
+ 	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.
+ 
+ 2022-05-31  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.
+ 	(darwin_label_is_anonymous_local_objc_name): Make
+ 	protocol class methods linker-visible.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-11-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR fortran/102992
+ 	* config/darwin.h (TARGET_DTORS_FROM_CXA_ATEXIT): New.
+ 	* doc/tm.texi: Regenerated.
+ 	* doc/tm.texi.in: Add TARGET_DTORS_FROM_CXA_ATEXIT hook.
+ 	* ipa.c (cgraph_build_static_cdtor_1): Return the built
+ 	function decl.
+ 	(build_cxa_atexit_decl): New.
+ 	(build_dso_handle_decl): New.
+ 	(build_cxa_dtor_registrations): New.
+ 	(compare_cdtor_tu_order): New.
+ 	(build_cxa_atexit_fns): New.
+ 	(ipa_cdtor_merge): If dtors_from_cxa_atexit is set,
+ 	process the DTORs/CTORs accordingly.
+ 	(pass_ipa_cdtor_merge::gate): Also run if
+ 	dtors_from_cxa_atexit is set.
+ 	* target.def (dtors_from_cxa_atexit): New hook.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/100152
+ 	* config/i386/i386-expand.c (ix86_expand_call): If a call is
+ 	to a non-local-binding, or local but to a public symbol, then
+ 	assume that it might be indirected via the lazy symbol binder.
+ 	Mark R10 and R10 as clobbered in that case.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 	    Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/104117
+ 	* config/rs6000/rs6000.c (darwin_rs6000_legitimate_lo_sum_const_p):
+ 	Check for UNSPEC_MACHOPIC_OFFSET wrappers on symbolic addresses when
+ 	emitting PIC code.
+ 	(legitimate_lo_sum_address_p): Likewise.
+ 	(rs6000_legitimize_address): Do not apply the TLS processing to
+ 	Darwin.
+ 	* config/rs6000/darwin.md (@machopic_high_<mode>): New.
+ 	(@machopic_low_<mode>): New.
+ 	* config/rs6000/predicates.md (macho_pic_address): New.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/80556
+ 	* config/darwin-driver.c (darwin_driver_init): Handle exported
+ 	symbols and symbol lists (suppress automatic export of the TLS
+ 	symbols).
+ 	* config/darwin.c (darwin_rename_builtins): Remove workaround.
+ 	* config/darwin.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
+ 	(REAL_LIBGCC_SPEC): Handle revised library uses.
+ 	* config/darwin.opt (nodefaultexport): New.
+ 	* config/i386/darwin.h (PR80556_WORKAROUND): Remove.
+ 	* config/i386/darwin32-biarch.h (PR80556_WORKAROUND): Likewise.
+ 	* config/i386/darwin64-biarch.h (PR80556_WORKAROUND): Likewise.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin-driver.c (darwin_driver_init): Revise comments, handle
+ 	filelist and framework options in specs instead of code. Exit from the
+ 	option handling early if the command line is definitely enpty.
+ 	* config/darwin.h (SUBTARGET_DRIVER_SELF_SPECS): Update to handle link
+ 	specs that are really driver ones. Remove setting for the default content
+ 	of weak_reference_mismatches
+ 	(DARWIN_CC1_SPEC): Likewise.
+ 	(CPP_SPEC): Likewise.
+ 	(SYSROOT_SPEC): Append space.
+ 	(LINK_SYSROOT_SPEC): Remove most driver link specs.
+ 	(STANDARD_STARTFILE_PREFIX_2): Update link-related specs.
+ 	(STARTFILE_SPEC): Likewise.
+ 	(ASM_MMACOSX_VERSION_MIN_SPEC): Fix line wrap.
+ 	(ASM_SPEC): Update driver-related specs.
+ 	(ASM_FINAL_SPEC): Likewise.
+ 	(LINK_COMMAND_SPEC_A): Update 'r' handling to skip gomp and itm when r
+ 	or nodefaultlibs is given.
+ 	(DSYMUTIL_SPEC): Do not call dsymutil for '-r' link lines.
+ 	Update ordering of exclusions, remove duplicate 'v' addition
+ 	(collect2 will add this from the main command line).
+ 	* config/darwin.opt: Remove now unused option aliases.
+ 	* config/i386/darwin.h (EXTRA_ASM_OPTS): Ensure space after opt.
+ 	(ASM_SPEC): Update driver-related specs.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (LINK_COMMAND_SPEC_A): Use Darwin10
+ 	unwinder shim as a convenience library.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* collect2.c (is_lto_object_file): Release simple-object
+ 	resources, close files.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-11-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (ASM_GENERATE_INTERNAL_LABEL): Add LTRAMP
+ 	to the list of symbol prefixes that must be made linker-
+ 	visible.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-27  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (finalize_ctors): Add a section-start linker-
+ 	visible symbol.
+ 	(finalize_dtors): Likewise.
+ 	* config/darwin.h (MIN_LD64_INIT_TERM_START_LABELS): New.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_file_end): Reset and reclaim the
+ 	section names table at the end of compile.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	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.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure.ac: Handle --with-dsymutil in the same way as we
+ 	do for the assembler and linker.  (DEFAULT_DSYMUTIL): New.
+ 	Extract the type and version for the dsymutil configured or
+ 	found by the default searches.
+ 	* config.in: Regenerated.
+ 	* configure: Regenerated.
+ 	* collect2.c (do_dsymutil): Handle locating dsymutil in the
+ 	same way as for the assembler and  linker.
+ 	* config/darwin.h (DSYMUTIL): Delete.
+ 	* gcc.c: Report a configured dsymutil correctly.
+ 	* exec-tool.in: Allow for dsymutil.
+ 	* doc/install.texi: Document --with-dsymutil.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h (FIXED_R13): Add for PPC64.
+ 	(FIRST_SAVED_GP_REGNO): Save from R13 even when it is one
+ 	of the fixed regs.
+ 
+ 2022-05-29  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-12-18  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	* config/darwin-driver.c: Make version code more future-proof.
+ 	* config.gcc: Homogeneize darwin versions.
+ 	* configure.ac: Homogeneize darwin versions.
+ 	* configure: Regenerate.
+ 
+ 2022-05-29  Saagar Jha  <saagar@saagarjha.com>
+ 
+ 	Backported from master:
+ 	2021-10-27  Saagar Jha  <saagar@saagarjha.com>
+ 
+ 	* config.gcc: Adjust for Darwin21.
+ 	* config/darwin-c.c (macosx_version_as_macro): Likewise.
+ 	* config/darwin-driver.c (validate_macosx_version_min):
+ 	Likewise.
+ 	(darwin_find_version_from_kernel): Likewise.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/100340
+ 	* config.in: Regenerate.
+ 	* config/i386/darwin.h (EXTRA_ASM_OPTS): New
+ 	(ASM_SPEC): Pass options to disable branch shortening where
+ 	needed.
+ 	* configure: Regenerate.
+ 	* configure.ac: Detect versions of 'as' that support the
+ 	optimisation which has the bug.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2022-03-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.c (darwin_fold_builtin): Make fcode an int to
+ 	avoid a mismatch with DECL_MD_FUNCTION_CODE().
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105250
+ 	* fold-const.c (fold_convertible_p): Revert
+ 	r12-7979-geaaf77dd85c333, instead check for size equality
+ 	of the vector types involved.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105140
+ 	* fold-const.c (fold_convertible_p): Allow a TYPE_P arg.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105163
+ 	* tree-ssa-reassoc.c (repropagate_negates): Avoid propagating
+ 	negated abnormals.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105173
+ 	* tree-ssa-reassoc.c (find_insert_point): Get extra
+ 	insert_before output argument and compute it.
+ 	(insert_stmt_before_use): Adjust.
+ 	(rewrite_expr_tree): Likewise.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105431
+ 	* tree-ssa-math-opts.c (powi_as_mults_1): Make n unsigned.
+ 	(powi_as_mults): Use absu_hwi.
+ 	(gimple_expand_builtin_powi): Remove now pointless n != -n
+ 	check.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105368
+ 	* tree-ssa-math-opts.c (powi_cost): Use absu_hwi.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/105559
+ 	* cfgrtl.c (delete_insn_and_edges): Only perform search to BB_END
+ 	for non-debug insns.
+ 
+ 2022-05-23  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	PR target/104257
+ 	* config/rs6000/bmi2intrin.h: Uglify local variables.
+ 	* config/rs6000/emmintrin.h: Likewise.
+ 	* config/rs6000/mm_malloc.h: Likewise.
+ 	* config/rs6000/mmintrin.h: Likewise.
+ 	* config/rs6000/pmmintrin.h: Likewise.
+ 	* config/rs6000/tmmintrin.h: Likewise.
+ 	* config/rs6000/xmmintrin.h: Likewise.
+ 
+ 2022-05-16  Sebastian Pop  <spop@amazon.com>
+ 
+ 	PR target/105162
+ 	* config/aarch64/aarch64-protos.h (atomic_ool_names): Increase dimension
+ 	of str array.
+ 	* config/aarch64/aarch64.c (aarch64_atomic_ool_func): Call
+ 	memmodel_from_int and handle MEMMODEL_SYNC_*.
+ 	(DEF0): Add __aarch64_*_sync functions.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105396
+ 	* asan.c (asan_redzone_buffer::emit_redzone_byte): Handle the case
+ 	where offset is bigger than off but smaller than m_prev_offset + 32
+ 	bits by pushing one or more 0 bytes.  Sink the
+ 	m_shadow_bytes.safe_push (value); flush_if_full (); statements from
+ 	all cases to the end of the function.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105333
+ 	* rtlanal.c (replace_rtx): Use simplify_subreg or
+ 	simplify_unary_operation if CONST_SCALAR_INT_P rather than just
+ 	CONST_INT_P.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105257
+ 	* config/sparc/sparc.c (epilogue_renumber): If ORIGINAL_REGNO,
+ 	use gen_raw_REG instead of gen_rtx_REG and copy over also
+ 	ORIGINAL_REGNO.  Use return 0; instead of /* fallthrough */.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105214
+ 	* config/i386/i386-expand.c (ix86_emit_i387_log1p): Call
+ 	do_pending_stack_adjust.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105211
+ 	* builtins.c (expand_builtin_int_roundingfn_2): If mathfn_built_in_1
+ 	fails for TREE_TYPE (arg), retry it with
+ 	TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (fndecl))) and if even that
+ 	fails, emit call normally.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105189
+ 	* fold-const.c (make_range_step): Fix up handling of
+ 	(unsigned) x +[low, -] ranges for signed x if low fits into
+ 	typeof (x).
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104985
+ 	* combine.c (struct undo): Add where.regno member.
+ 	(do_SUBST_MODE): Rename to ...
+ 	(subst_mode): ... this.  Change first argument from rtx * into int,
+ 	operate on regno_reg_rtx[regno] and save regno into where.regno.
+ 	(SUBST_MODE): Remove.
+ 	(try_combine): Use subst_mode instead of SUBST_MODE, change first
+ 	argument from regno_reg_rtx[whatever] to whatever.  For UNDO_MODE, use
+ 	regno_reg_rtx[undo->where.regno] instead of *undo->where.r.
+ 	(undo_to_marker): For UNDO_MODE, use regno_reg_rtx[undo->where.regno]
+ 	instead of *undo->where.r.
+ 	(simplify_set): Use subst_mode instead of SUBST_MODE, change first
+ 	argument from regno_reg_rtx[whatever] to whatever.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105123
+ 	* config/i386/i386-expand.c (ix86_expand_vector_init_general): Avoid
+ 	using word as target for expand_simple_binop when doing ASHIFT and
+ 	IOR.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105093
+ 	* ubsan.c (instrument_object_size): If t is equal to inner and
+ 	is a decl other than global var, punt.  When emitting call to
+ 	UBSAN_OBJECT_SIZE ifn, make sure base is addressable.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105094
+ 	* gimple-ssa-store-merging.c (mem_valid_for_store_merging): Punt if
+ 	bitsize <= 0 rather than just == 0.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104971
+ 	* config/i386/i386-expand.c
+ 	(ix86_expand_builtin) <case IX86_BUILTIN_READ_FLAGS>: If ignore,
+ 	don't push/pop anything and just return const0_rtx.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104910
+ 	* config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Copy
+ 	imm rtx.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104814
+ 	* ifcvt.c (find_if_case_1, find_if_case_2): Punt if test_bb doesn't
+ 	end with onlyjump_p.  Assume BB_END (test_bb) is always non-NULL.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104711
+ 	* doc/invoke.texi (-Wextra): Document that -Wshift-negative-value
+ 	is enabled by it only for C++11 to C++17 rather than for C++03 or
+ 	later.
+ 	(-Wshift-negative-value): Similarly (except here we stated
+ 	that it is enabled for C++11 or later).
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104775
+ 	* config/s390/s390.md (*cmp_and_trap_unsigned_int<mode>): Use
+ 	S constraint instead of T in the last alternative.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 		    Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/104675
+ 	* match.pd (t * 2U / 2 -> t & (~0 / 2), t / 2U * 2 -> t & ~1):
+ 	Restrict simplifications to INTEGRAL_TYPE_P.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104681
+ 	* config/rs6000/vector.md (movmisalign<mode>): Use rs6000_emit_move.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104675
+ 	* match.pd (-A - 1 -> ~A, -1 - A -> ~A): Don't simplify for
+ 	COMPLEX_TYPE.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/102656
+ 	* asan.c (instrument_derefs): If inner is a RESULT_DECL and access is
+ 	known to be within bounds, treat it like automatic variables.
+ 	If instrumenting access and inner is {VAR,PARM,RESULT}_DECL from
+ 	current function and !TREE_STATIC which is not TREE_ADDRESSABLE, mark
+ 	it addressable.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104557
+ 	* valtrack.c (debug_lowpart_subreg): Don't call gen_rtx_raw_SUBREG
+ 	if expr has VOIDmode.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104544
+ 	* combine.c (try_combine): When looking for insn whose links
+ 	should be updated from i3 to i2, don't stop on debug insns, instead
+ 	skip over them.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104517
+ 	* omp-low.c (task_cpyfns): New variable.
+ 	(delete_omp_context): Don't call finalize_task_copyfn from here.
+ 	(create_task_copyfn): Push task_stmt into task_cpyfns.
+ 	(execute_lower_omp): Call finalize_task_copyfn here on entries from
+ 	task_cpyfns vector and release the vector.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/104449
+ 	* asan.c: Include tree-eh.h.
+ 	(handle_builtin_alloca): Handle the case when __builtin_alloca or
+ 	__builtin_alloca_with_align can throw.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104502
+ 	* config/i386/i386.md (cvtsd2ss splitter): If operands[1] is xmm16+
+ 	and AVX512VL isn't available, move operands[1] to operands[0] first.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104446
+ 	* combine.c (subst): Don't substitute CONST_INTs into RTX_AUTOINC
+ 	operands.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102140
+ 	* config/rs6000/rs6000.c (vspltis_shifted): Return false also if
+ 	split1 pass has finished already.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104263
+ 	* gimple-ssa-store-merging.c (get_status_for_store_merging): For
+ 	cfun->can_throw_non_call_exceptions && cfun->eh test whether
+ 	last non-debug stmt in the bb is store_valid_for_store_merging_p
+ 	rather than last stmt.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/102478
+ 	* optabs.c (prepare_cmp_insn): If !can_create_pseudo_p (), don't
+ 	force_reg constants and for -fnon-call-exceptions fail if copy_to_reg
+ 	would be needed.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/102860
+ 	* match.pd (x %[fl] y -> x % y): New simplification for
+ 	unsigned integral types.
+ 	* optabs-tree.c (optab_for_tree_code): Return unknown_optab
+ 	for {CEIL,FLOOR,ROUND}_{DIV,MOD}_EXPR with VECTOR_TYPE.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103908
+ 	* ifcvt.c (bb_valid_for_noce_process_p): Punt on bbs ending with
+ 	asm goto.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103860
+ 	* shrink-wrap.c (try_shrink_wrapping): Make sure can_get_prologue is
+ 	called on pro even if nothing further is pushed into vec.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103837
+ 	* loop-invariant.c (can_move_invariant_reg): Ignore DEBUG_INSNs in
+ 	the decisions whether to return false or continue and right before
+ 	returning true reset those debug insns that previously caused
+ 	returning false.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/103435
+ 	* gimple-ssa-store-merging.c (find_bswap_or_nop_finalize): Avoid UB if
+ 	n->range - rsize == 8, just clear both *cmpnop and *cmpxchg in that
+ 	case.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/103384
+ 	* omp-general.c (omp_context_selector_matches): For ACCEL_COMPILER,
+ 	return 0 for kind(host) and continue for kind(nohost).
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/102431
+ 	* gimplify.c (replace_reduction_placeholders): Remove.
+ 	(note_no_context_vars): New function.
+ 	(gimplify_omp_loop): For OMP_PARALLEL's BIND_EXPR create a new
+ 	BLOCK.  Use copy_tree_body_r with walk_tree instead of unshare_expr
+ 	and replace_reduction_placeholders for duplication of
+ 	OMP_CLAUSE_REDUCTION_{INIT,MERGE} expressions.  Ensure all mentioned
+ 	automatic vars have DECL_CONTEXT set to non-NULL before doing so
+ 	and reset it afterwards for those vars and their corresponding
+ 	vars.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/103192
+ 	* tree-ssa-loop-im.c (move_computations_worker): Use
+ 	reset_flow_sensitive_info instead of manually clearing
+ 	SSA_NAME_RANGE_INFO and do it for all SSA_NAMEs, not just ones
+ 	with integral types.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/103205
+ 	* config/i386/sync.md (atomic_bit_test_and_set<mode>,
+ 	atomic_bit_test_and_complement<mode>,
+ 	atomic_bit_test_and_reset<mode>): Use OPTAB_WIDEN instead of
+ 	OPTAB_DIRECT.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/101378
+ 	* dwarf2out.c (field_byte_offset): Do the PCC_BITFIELD_TYPE_MATTERS
+ 	handling only for DECL_BIT_FIELD_TYPE decls.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/102441
+ 	* var-tracking.c (add_stores): For cselib_sp_derived_value_p values
+ 	use MO_VAL_SET if loc is not sp.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102498
+ 	* config/i386/i386.c (standard_80387_constant_p): Don't recognize
+ 	special 80387 instruction XFmode constants if flag_rounding_math.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/88578
+ 	PR c++/102295
+ 	* varasm.c (output_constructor_regular_field): Instead of assertion
+ 	that array_size_for_constructor result is equal to size of
+ 	TREE_TYPE (local->val) in bytes, assert that the type size is greater
+ 	or equal to array_size_for_constructor result and use type size as
+ 	fieldsize.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102224
+ 	* config/i386/i386.md (xorsign<mode>3): If operands[1] is equal to
+ 	operands[2], emit abs<mode>2 instead.
+ 	(@xorsign<mode>3_1): Add early-clobber for output operand.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/101905
+ 	* dwarf2out.c (gen_variable_die): Add DW_AT_location for global
+ 	register variables already during early_dwarf if possible.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101624
+ 	* ubsan.c (maybe_instrument_pointer_overflow,
+ 	instrument_object_size): Only test DECL_REGISTER on VAR_DECLs,
+ 	PARM_DECLs or RESULT_DECLs.
+ 	* sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/101562
+ 	* expmed.c (store_integral_bit_field): Only use movstrict_optab
+ 	if the operand isn't paradoxical.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101535
+ 	* gimplify.c (omp_check_private): Properly skip ORT_TARGET_DATA
+ 	contexts in which decl isn't privatized and for ORT_TARGET return
+ 	false if decl is mapped.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/101384
+ 	* config/rs6000/rs6000.c (vspltis_constant): Accept EASY_VECTOR_MSB
+ 	only if step and copies are equal to 1.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/94366
+ 	* omp-low.c (lower_rec_input_clauses): Rename is_fp_and_or to
+ 	is_truth_op, set it for TRUTH_*IF_EXPR regardless of new_var's type,
+ 	use boolean_type_node instead of integer_type_node as NE_EXPR type.
+ 	(lower_reduction_clauses): Likewise.
+ 
+ 2022-05-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-low.c (lower_rec_input_clauses, lower_reduction_clauses): Handle
+ 	&& and || with floating-point and complex arguments.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR go/101407
+ 	* godump.c (godump_str_hash): New type.
+ 	(godump_container::pot_dummy_types): Use string_hash instead of
+ 	ptr_hash in the hash_set.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/101266
+ 	* dwarf2out.c (loc_list_from_tree_1): Handle COMPOUND_LITERAL_EXPR.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101210
+ 	* match.pd ((intptr_t)x eq/ne CST to x eq/ne (typeof x) CST): Don't
+ 	perform the optimization in GENERIC when sanitizing and x has a
+ 	reference type.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101167
+ 	* omp-low.c (lower_omp_regimplify_p): Regimplify also PARM_DECLs
+ 	and RESULT_DECLs that have DECL_HAS_VALUE_EXPR_P set.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/100785
+ 	* cfgexpand.c (expand_asm_stmt): If errors are emitted,
+ 	remove all inputs, outputs and clobbers from the asm and
+ 	set template to "".
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101062
+ 	* stor-layout.c (finish_bitfield_layout): Don't add bitfield
+ 	representatives in QUAL_UNION_TYPE.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101062
+ 	* stor-layout.c (finish_bitfield_representative): For fields in unions
+ 	assume nextf is always NULL.
+ 	(finish_bitfield_layout): Compute bit field representatives also in
+ 	unions, but handle it as if each bitfield was the only field in the
+ 	aggregate.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/101046
+ 	* expr.c (expand_expr_real_2) <case VEC_PACK_FIX_TRUNC_EXPR,
+ 	case VEC_PACK_TRUNC_EXPR>: Clear subtarget when changing mode.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/101008
+ 	* simplify-rtx.c (relational_result): New function.
+ 	(simplify_logical_relational_operation,
+ 	simplify_relational_operation): Use it.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/100887
+ 	* fold-const.c (fold_read_from_vector): Return NULL if trying to
+ 	read from a CONSTRUCTOR with vector type elements.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/100898
+ 	* tree-inline.c (copy_bb): Only use gimple_call_arg_ptr if memcpy
+ 	should copy any arguments.  Don't call gimple_call_num_args
+ 	on id->call_stmt or call_stmt more than once.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/100887
+ 	* config/i386/i386-expand.c (ix86_expand_vector_init): Handle
+ 	concatenation from half-sized modes with TImode elements.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/100580
+ 	* function.c (push_dummy_function): Set DECL_ARTIFICIAL and
+ 	DECL_ASSEMBLER_NAME on the fn_decl.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/100342
+ 	* regcprop.c (copy_value): When copying a source reg in a wider
+ 	mode than it has recorded for the value, adjust recorded destination
+ 	mode too or punt if !REG_CAN_CHANGE_MODE_P.
+ 
+ 2022-05-10  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	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).
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/100508
+ 	* cfgexpand.c (expand_debug_expr): For DEBUG_EXPR_DECL with vector
+ 	type, don't reuse DECL_RTL if it has different mode, instead force
+ 	creation of a new DEBUG_EXPR.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/100471
+ 	* omp-low.c (lower_omp_task_reductions): For OMP_TASKLOOP, if data
+ 	is 0, bypass the reduction loop including
+ 	GOMP_taskgroup_reduction_unregister call.
+ 
+ 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/105292
+ 	* config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Return
+ 	true only for 8-byte vector modes.
+ 
+ 2022-05-06  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-05-06   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/102059
+ 	* config/rs6000/rs6000.c (rs6000_can_inline_p): Ignore -mpower8-fusion
+ 	option for inlining purposes.
+ 
+ 2022-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105198
+ 	* tree-predcom.c (find_looparound_phi): Check whether
+ 	the found memory location of the entry value is clobbered
+ 	inbetween the value we want to use and loop entry.
+ 
+ 2022-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104402
+ 	* gimple-expr.c (is_gimple_condexpr): _Complex typed
+ 	compares are not valid.
+ 	* tree-cfg.c (verify_gimple_assign_ternary): For COND_EXPR
+ 	check is_gimple_condexpr.
+ 
+ 2022-04-27  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	Backported from master:
+ 	2022-04-25  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/105339
+ 	* config/i386/avx512fintrin.h (_mm512_scalef_round_pd):
+ 	Add parentheses for parameters and djust format.
+ 	(_mm512_mask_scalef_round_pd): Ditto.
+ 	(_mm512_maskz_scalef_round_pd): Ditto.
+ 	(_mm512_scalef_round_ps): Ditto.
+ 	(_mm512_mask_scalef_round_ps): Ditto.
+ 	(_mm512_maskz_scalef_round_ps): Ditto.
+ 	(_mm_scalef_round_sd): Use _mm_undefined_pd.
+ 	(_mm_scalef_round_ss): Use _mm_undefined_ps.
+ 	(_mm_mask_scalef_round_sd): New macro.
+ 	(_mm_mask_scalef_round_ss): Ditto.
+ 	(_mm_maskz_scalef_round_sd): Ditto.
+ 	(_mm_maskz_scalef_round_ss): Ditto.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100786
+ 	* gimple-fold.c (get_symbol_constant_value): Only return
+ 	values of compatible type to the symbol.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103361
+ 	* gimple-loop-jam.c (adjust_unroll_factor): Use lambda_int
+ 	for the dependence distance.
+ 	* tree-data-ref.c (print_lambda_vector): Properly print a lambda_int.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103596
+ 	* tree-ssa-sccvn.c (eliminate_dom_walker::eliminate_stmt):
+ 	Note we are not propagating into a PHI argument to may_propagate_copy.
+ 	* tree-ssa-propagate.h (may_propagate_copy): Add
+ 	argument specifying whether we propagate into a PHI arg.
+ 	* tree-ssa-propagate.c (may_propagate_copy): Likewise.
+ 	When not doing so we can replace an abnormal with
+ 	something else.
+ 	(may_propagate_into_stmt): Update may_propagate_copy calls.
+ 	(replace_exp_1): Move propagation checking code to
+ 	propagate_value and rename to ...
+ 	(replace_exp): ... this and elide previous wrapper.
+ 	(propagate_value): Perform checking with adjusted
+ 	may_propagate_copy call and dispatch to replace_exp.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/104337
+ 	* tree-nrv.c (pass_nrv::execute): Remove tieing result and found
+ 	together via DECL_ABSTRACT_ORIGIN.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104786
+ 	* cfgexpand.c (expand_asm_stmt): Do not generate a copy
+ 	for VLAs without an upper size bound.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105226
+ 	* tree-vect-loop-manip.c (vect_loop_versioning): Verify
+ 	we can split the exit of an outer loop we choose to version.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105070
+ 	* tree-switch-conversion.h
+ 	(bit_test_cluster::hoist_edge_and_branch_if_true): Add location
+ 	argument.
+ 	* tree-switch-conversion.c
+ 	(bit_test_cluster::hoist_edge_and_branch_if_true): Annotate
+ 	cond with location.
+ 	(bit_test_cluster::emit): Annotate all generated expressions
+ 	with location.
+ 
+ 2022-04-05  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2022-03-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/103083
+ 	* ipa-prop.h (ipa_ancestor_jf_data): New flag keep_null;
+ 	(ipa_get_jf_ancestor_keep_null): New function.
+ 	* ipa-prop.c (ipa_set_ancestor_jf): Initialize keep_null field of the
+ 	ancestor function.
+ 	(compute_complex_assign_jump_func): Pass false to keep_null
+ 	parameter of ipa_set_ancestor_jf.
+ 	(compute_complex_ancestor_jump_func): Pass true to keep_null
+ 	parameter of ipa_set_ancestor_jf.
+ 	(update_jump_functions_after_inlining): Carry over keep_null from the
+ 	original ancestor jump-function or merge them.
+ 	(ipa_write_jump_function): Stream keep_null flag.
+ 	(ipa_read_jump_function): Likewise.
+ 	(ipa_print_node_jump_functions_for_edge): Print the new flag.
+ 	* ipa-cp.c (class ipcp_bits_lattice): Make various getters const.  New
+ 	member function known_nonzero_p.
+ 	(ipcp_bits_lattice::known_nonzero_p): New.
+ 	(ipcp_bits_lattice::meet_with_1): New parameter drop_all_ones,
+ 	observe it.
+ 	(ipcp_bits_lattice::meet_with): Likewise.
+ 	(propagate_bits_across_jump_function): Simplify.  Pass true in
+ 	drop_all_ones when it is necessary.
+ 	(propagate_aggs_across_jump_function): Take care of keep_null
+ 	flag.
+ 	(ipa_get_jf_ancestor_result): Propagate NULL accross keep_null
+ 	jump functions.
+ 
+ 2022-03-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-03-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105052
+ 	* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>wv4hi3):
+ 	Replace "Yv" with "x".
+ 	(ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
+ 	(ssse3_psign<mode>3): Likewise.
+ 
+ 2022-03-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-03-04  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/87496
+ 	PR target/104208
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Make the
+ 	ISA 2.06 requirement for -mabi=ieeelongdouble conditional on
+ 	-mlong-double-128.
+ 	Move the -mabi=ieeelongdouble and -mabi=ibmlongdouble error checking
+ 	from here...
+ 	* common/config/rs6000/rs6000-common.c (rs6000_handle_option):
+ 	... to here.
+ 
+ 2022-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/104453
+ 	* config/i386/i386.c (ix86_gimple_fold_builtin): Guard shift
+ 	folding for NULL LHS.
+ 
+ 2022-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104511
+ 	* tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
+ 	touching DFP <-> FP conversions.
+ 
+ 2022-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/100784
+ 	* config/i386/i386.c (ix86_gimple_fold_builtin): Check for
+ 	LHS before folding __builtin_ia32_shufpd and friends.
+ 
+ 2022-03-12  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/99708
+ 	* config/rs6000/rs6000-c.c: Revert 2022-03-05 patch.
+ 
+ 2022-03-06  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/104253
+ 	* config/rs6000/rs6000.c (init_float128_ibm): Update the
+ 	conversion functions used to convert IFmode types.  Backport
+ 	change made to the master branch on 2022-02-14.
+ 
+ 2022-03-06  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/99708
+ 	* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
+ 	__SIZEOF_IBM128__ if the IBM 128-bit long double type is created.
+ 	Define __SIZEOF_FLOAT128__ if the IEEE 128-bit floating point type
+ 	is created.  Backport change to master branch on 2022-02-17.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103237
+ 	* tree-vect-loop.c (vect_is_simple_reduction): Fail for
+ 	double reductions with multiple inner loop LC PHI nodes.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/103181
+ 	PR middle-end/103248
+ 	* tree-eh.c (operation_could_trap_helper_p): Properly
+ 	check vector constants for a zero element for integer
+ 	division.  Separate floating point and integer division code.
+ 	Properly handle fixed-point RDIV_EXPR.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102798
+ 	* tree-vect-data-refs.c (vect_create_addr_base_for_vector_ref):
+ 	Only copy points-to info to newly generated SSA names.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/102762
+ 	* tree-inline.c (copy_bb): Avoid underflowing nargs.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100923
+ 	* tree-ssa-sccvn.c (valueize_refs_1): Take a pointer to
+ 	the operand vector to be valueized.
+ 	(valueize_refs): Likewise.
+ 	(valueize_shared_reference_ops_from_ref): Adjust.
+ 	(valueize_shared_reference_ops_from_call): Likewise.
+ 	(vn_reference_lookup_3): Likewise.
+ 	(vn_reference_lookup_pieces): Likewise.  Re-valueize
+ 	with honoring availability when we are about to create
+ 	the ao_ref and valueized before.
+ 	(vn_reference_lookup): Likewise.
+ 	(vn_reference_insert_pieces): Adjust.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101158
+ 	* tree-vect-slp.c (vect_build_slp_tree_1): Move same operand
+ 	checking after checking for matching operation.
+ 
+ 2022-02-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103627
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Move the
+ 	hunk affecting VSX and ALTIVEC to appropriate place.
+ 
+ 2022-02-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103627
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Disable
+ 	MMA if !TARGET_VSX.
+ 
+ 2022-02-14  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	Backported from master:
+ 	2022-02-08  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/t-riscv (riscv-sr.o): Add $(TM_H) dependency.
+ 
+ 2022-02-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	Backported from master:
+ 	2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/ppc-asm.h: Support __PCREL__ code.
+ 
+ 2022-02-10  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-02-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104469
+ 	* config/i386/sse.md (vec_unpacks_float_lo_v4si):
+ 	Change operand 1 constraint to register_operand.
+ 
+ 2022-02-09  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104458
+ 	* config/i386/i386-expand.c (ix86_split_idivmod):
+ 	Force operands[2] and operands[3] into a register..
+ 
+ 2022-02-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104451
+ 	* config/i386/sse.md (<insn><mode>3): lowpart_subreg
+ 	operands[2] from SImode to QImode.
+ 
+ 2022-02-03  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	PR target/104090
+ 	* config/rs6000/rs6000.c (rs6000_machine_from_flags): Use also
+ 	rs6000_cpu.
+ 
+ 2022-02-02  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	Backported from master:
+ 	2022-02-01  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR middle-end/95115
+ 	* fold-const.c (const_binop): Do not fold NaN result from
+ 	  non-NaN operands.
+ 
+ 2022-01-15  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-16  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/102976
+ 	* config/rs6000/mma.md (*vsx_assemble_pair): Add early-clobber for
+ 	output operand.
+ 	(*mma_assemble_acc): Likewise.
+ 
+ 2022-01-15  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/mma.md (UNSPEC_VSX_ASSEMBLE): New unspec.
+ 	(vsx_assemble_pair): Use mma_assemble_input_operand.
+ 	Expand into UNSPEC_VSX_ASSEMBLE wrapper.
+ 	(*vsx_assemble_pair): New define_insn_and_split.
+ 	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Handle
+ 	UNSPEC_VSX_ASSEMBLE.
+ 
+ 2022-01-15  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-09-14  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/mma.md (unspecv): Add UNSPECV_MMA_XXSETACCZ.
+ 	(*movpxi): Remove 'O' alternative.
+ 	(mma_xxsetaccz): Change to define_insn.  Use UNSPECV_MMA_XXSETACCZ.
+ 	Add comment.
+ 	* config/rs6000/rs6000.c (rs6000_rtx_costs): Handle UNSPEC_VOLATILE.
+ 
+ 2022-01-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* ipa-param-manipulation.c (ipa_dump_adjusted_parameters): Dump
+ 	reverse flag as "reverse" for the sake of consistency.
+ 	* ipa-sra.c: Fix copyright year.
+ 	(ipa_sra_function_summaries::duplicate): Copy the reverse flag.
+ 	(dump_isra_access): Tweak dump line.
+ 	(isra_write_node_summary): Write the reverse flag.
+ 	(isra_read_node_info): Read it.
+ 	(pull_accesses_from_callee): Test its consistency and copy it.
+ 
+ 2022-01-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/103465
+ 	* coretypes.h (unwind_info_type): Swap UI_SEH and UI_TARGET.
+ 
+ 2021-12-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-12-15  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/103661
+ 	* config/i386/i386-builtins.c (fold_builtin_cpu): Compare to 0
+ 	as API expects that non-zero values are returned (do that
+ 	it mask == 31).
+ 	For "avx512vbmi2" argument, we return now 1 << 31, which is a
+ 	negative integer value.
+ 
+ 2021-12-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-30  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/102347
+ 	* config/rs6000/rs6000-call.c (rs6000_builtin_decl): Remove builtin mask
+ 	check.
+ 
+ 2021-12-01  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-11-30  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/103267
+ 	* ipa-sra.c (scan_function): Also check ECF_LOOPING_CONST_OR_PURE flag.
+ 
+ 2021-11-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/103274
+ 	* config/i386/i386.c (ix86_output_call_insn): Beef up comment about
+ 	nops emitted with SEH.
+ 	* 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 is a call.
+ 
+ 2021-11-25  Jan Hubicka  <jh@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-11-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/103052
+ 	* ipa-pure-const.c (propagate_pure_const): Fix merging of loping flag.
+ 
+ 2021-11-23  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/101985
+ 	* config/rs6000/altivec.h (vec_cpsgn): Swap operand order.
+ 
+ 2021-11-22  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-19  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* config/s390/s390.md (define_peephole2): Variable insn points
+ 	to the first matched insn.  Use peep2_next_insn(1) to refer to
+ 	the second matched insn.
+ 
+ 2021-11-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-11  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* doc/invoke.texi: Change references to "future cpu" to "power10",
+ 	"-mcpu=future" to "-mcpu=power10".  Adjust words for float128.
+ 
+ 2021-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/102714
+ 	* ipa-sra.c (ptr_parm_has_nonarg_uses): Fix volatileness
+ 	check.
+ 
+ 2021-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100672
+ 	* fold-const.c (fold_negate_expr_1): Use element_precision.
+ 	(negate_expr_p): Likewise.
+ 
+ 2021-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100253
+ 	* tree-vect-stmts.c (vectorizable_load): Do not assume
+ 	element alignment when DR_MISALIGNMENT is -1.
+ 	(vectorizable_store): Likewise.
+ 
+ 2021-11-08  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-10-26  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/102789
+ 	* tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
+ 	update inits of simd_lane_access.
+ 
+ 2021-11-03  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/102842
+ 	* lra-constraints.c (match_reload): Ignore out in checking values
+ 	of outs.
+ 	(curr_insn_transform): Collect outputs before doing reloads of operands.
+ 
+ 2021-11-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-10-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/102505
+ 	* tree-sra.c (totally_scalarize_subtree): Check that the
+ 	encountered field fits within the acces we would like to put it
+ 	in.
+ 
+ 2021-10-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/invoke.texi (%X): Remove obsolete reference to -Wl.
+ 
+ 2021-10-27  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/102761
+ 	* config/i386/i386.c (ix86_print_operand_address):
+ 	Error out for non-address_operand asm operands.
+ 
+ 2021-10-26  Piotr Kubaj  <pkubaj@FreeBSD.org>
+ 
+ 	Backported from master:
+ 	2021-10-16  Piotr Kubaj  <pkubaj@FreeBSD.org>
+ 
+ 	* configure.ac: Treat powerpc64*-*-freebsd* the same as
+ 	powerpc64-*-freebsd*.
+ 	* configure: Regenerate.
+ 
+ 2021-10-24  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md: Don't use 'G' constraint in integer move patterns.
+ 
+ 2021-10-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-10-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/98667
+ 	* doc/invoke.texi: Document -fcf-protection requires i686 or
+ 	new.
+ 
+ 2021-10-15  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md: Consistently use "rG" constraint for copy
+ 	instruction in move patterns.
+ 
+ 2021-10-14  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (cbranchsf4): Disable if TARGET_SOFT_FLOAT.
+ 	(cbranchdf4): Likewise.
+ 	Add missing move patterns for TARGET_SOFT_FLOAT.
+ 
+ 2021-10-13  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (muldi3): Add support for inlining 64-bit
+ 	multiplication on 32-bit PA 1.1 and 2.0 targets.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102046
+ 	* tree-vect-slp.c (vect_build_slp_tree_2): Conservatively
+ 	update ->any_pattern when swapping operands.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101925
+ 	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Set
+ 	reverse on COMPONENT_REF and ARRAY_REF according to
+ 	what reverse_storage_order_for_component_p does.
+ 	(vn_reference_eq): Compare reversed on reference ops.
+ 	(reverse_storage_order_for_component_p): New overload.
+ 	(vn_reference_lookup_3): Check reverse_storage_order_for_component_p
+ 	on the reference looked up.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101373
+ 	PR tree-optimization/101868
+ 	* tree-ssa-pre.c (prune_clobbered_mems): Also prune trapping
+ 	references when the BB may not return.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101824
+ 	* tree-nested.c (get_frame_field): Mark the COMPONENT_REF as
+ 	volatile in case the variable was.
+ 
+ 2021-10-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/102588
+ 	* config/sparc/sparc-modes.def (OI): New integer mode.
+ 
+ 2021-10-11  Diane Meirowitz  <diane.meirowitz@oracle.com>
+ 
+ 	Backported from master:
+ 	2021-10-11  Diane Meirowitz  <diane.meirowitz@oracle.com>
+ 
+ 	* doc/invoke.texi: Add link to UndefinedBehaviorSanitizer
+ 	documentation, mention UBSAN_OPTIONS, similar to what is done
+ 	for AddressSanitizer.
+ 
+ 2021-10-11  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/102622
+ 	* tree-ssa-phiopt.c (conditional_replacement): Set neg
+ 	to false for one bit signed types.
+ 
+ 2021-10-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* explow.c: Include langhooks.h.
+ 	(set_stack_check_libfunc): Build a proper function type.
+ 
+ 2021-10-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR c++/64697
+ 	* config/i386/i386.c (legitimate_pic_address_disp_p): For PE-COFF do
+ 	not return true for external weak function symbols in medium model.
+ 
+ 2021-09-22  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-09-22  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* ipa-fnsummary.c (inline_read_section): Unpack a dummy bit
+ 	to keep consistent with the side of streaming out.
+ 
+ 2021-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backported from master:
+ 	2021-09-08  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/102107
+ 	* config/rs6000/rs6000-logue.c (rs6000_emit_epilogue): For ELFv2 use
+ 	r11 instead of r12 for restoring CR.
+ 
+ 2021-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backported from master:
+ 	2021-09-03  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/102107
+ 	* config/rs6000/rs6000-logue.c (rs6000_emit_prologue): On ELFv2 use r11
+ 	instead of r12 for CR save, in all cases.
+ 
+ 2021-09-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR rtl-optimization/102306
+ 	* combine.c (try_combine): Abort the combination if we are about to
+ 	duplicate volatile references.
+ 
+ 2021-09-16  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc-opts.h (enum sparc_processor_type): Add LEON5
+ 	* config/sparc/sparc.c (struct processor_costs): Add LEON5 costs
+ 	(leon5_adjust_cost): Increase cost of store with data dependency
+ 	on ALU instruction and FPU anti-dependencies.
+ 	(sparc_option_override): Add LEON5 costs
+ 	(sparc_adjust_cost): Add LEON5 cost adjustments
+ 	* config/sparc/sparc.h: Add LEON5
+ 	* config/sparc/sparc.md: Include LEON5 scheduling information
+ 	* config/sparc/sparc.opt: Add LEON5
+ 	* doc/invoke.texi: Add LEON5
+ 	* config/sparc/leon5.md: New file.
+ 
+ 2021-09-16  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.md (stack_protect_setsi): Add NOP to prevent
+ 	sensitive sequence for B2BST errata workaround.
+ 
+ 2021-09-16  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (sparc_do_work_around_errata): Do not begin
+ 	functions with atomic instruction in the UT700 errata workaround.
+ 
+ 2021-09-16  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (next_active_non_empty_insn): New function
+ 	that returns next active non empty assembly instruction.
+ 	(sparc_do_work_around_errata): Use new function.
+ 
+ 2021-09-16  Daniel Cederman  <cederman@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (store_insn_p): Add predicate for store
+ 	attributes.
+ 	(load_insn_p): Add predicate for load attributes.
+ 	(sparc_do_work_around_errata): Use new predicates.
+ 
+ 2021-09-16  Andreas Larsson  <andreas@gaisler.com>
+ 
+ 	* config/sparc/sparc.c (dump_target_flag_bits): Print bit names for
+ 	LEON and LEON3.
+ 
+ 2021-09-14  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-09-07  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR target/97142
+ 	* config/rs6000/rs6000.md (fmod<mode>3): New define_expand.
+ 	(remainder<mode>3): Likewise.
+ 
+ 2021-09-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/60318
+ 	* doc/trouble.texi (Copy Assignment): Fix description of
+ 	behaviour and fix code in example.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101394
+ 	* tree-ssa-pre.c (do_pre_regular_insertion): Avoid inserting
+ 	copies from abnormals for a full redundancy.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101291
+ 	* cfgloopmanip.c (loop_version): Set the loop copy of the
+ 	versioned loop to the new loop.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101173
+ 	PR tree-optimization/101280
+ 	* gimple-loop-interchange.cc
+ 	(tree_loop_interchange::valid_data_dependences): Properly
+ 	guard all dependence checks with DDR_REVERSED_P or its
+ 	inverse.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101105
+ 	* tree-vect-data-refs.c (vect_prune_runtime_alias_test_list):
+ 	Only ignore steps when they are equal or scalar order is preserved.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101009
+ 	* tree-data-ref.c (build_classic_dist_vector_1): Make sure
+ 	to set *init_b to true when we encounter a constant equal
+ 	index pair.
+ 	(compute_affine_dependence): Also dump the actual DR_REF.
+ 
+ 2021-09-03  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-08-19  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/101849
+ 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Cast
+ 	pointer to __vector_pair *.
+ 
+ 2021-09-03  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-07-07  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (mma_init_builtins): Use VSX_BUILTIN_LXVP
+ 	and VSX_BUILTIN_STXVP.
+ 
+ 2021-09-03  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-07-02  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (BU_MMA_PAIR_LD, BU_MMA_PAIR_ST):
+ 	New macros.
+ 	(__builtin_vsx_lxvp, __builtin_vsx_stxvp): New built-ins.
+ 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Expand
+ 	lxvp and stxvp built-ins.
+ 	(mma_init_builtins): Handle lxvp and stxvp built-ins.
+ 	(builtin_function_type): Likewise.
+ 	* doc/extend.texi (__builtin_vsx_lxvp, __builtin_mma_stxvp): Document.
+ 
+ 2021-09-03  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.c (mma_init_builtins): Test for
+ 	MMA_BUILTIN_DISASSEMBLE_ACC and VSX_BUILTIN_DISASSEMBLE_PAIR.
+ 	(rs6000_gimple_fold_mma_builtin): Likewise.
+ 
+ 2021-08-31  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-08-31  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* tree.c (walk_tree_1) <OMP_CLAUSE_TILE>: Handle three operands.
+ 
+ 2021-08-27  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/101472
+ 	* config/i386/sse.md: (<avx512>scattersi<mode>): Add mask operand to
+ 	UNSPEC_VSIBADDR.
+ 	(<avx512>scattersi<mode>): Likewise.
+ 	(*avx512f_scattersi<VI48F:mode>): Merge mask operand to set_dest.
+ 	(*avx512f_scatterdi<VI48F:mode>): Likewise
+ 
+ 2021-08-25  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/101471
+ 	* config/i386/avx512dqintrin.h (_mm512_fpclass_ps_mask): Fix
+ 	macro define in O0.
+ 	(_mm512_mask_fpclass_ps_mask): Ditto.
+ 
+ 2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102035
+ 	* config/arm/arm.md (attribute arch): Add fix_vlldm.
+ 	(arch_enabled): Use it.
+ 	* config/arm/vfp.md (lazy_store_multiple_insn): Add alternative to
+ 	use when erratum mitigation is needed.
+ 
+ 2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102035
+ 	* config/arm/arm.opt (mfix-cmse-cve-2021-35465): New option.
+ 	* doc/invoke.texi (Arm Options): Document it.
+ 	* config/arm/arm-cpus.in (quirk_vlldm): New feature bit.
+ 	(ALL_QUIRKS): Add quirk_vlldm.
+ 	(cortex-m33): Add quirk_vlldm.
+ 	(cortex-m35p, cortex-m55): Likewise.
+ 	* config/arm/arm.c (arm_option_override): Enable fix_vlldm if
+ 	targetting an affected CPU and not explicitly controlled on
+ 	the command line.
+ 
+ 2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/vfp.md (lazy_store_multiple_insn): Rewrite as valid RTL.
+ 	(lazy_load_multiple_insn): Likewise.
+ 
+ 2021-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/97565
+ 	* tree-ssa-structalias.c (ipa_pta_execute): Check in_other_partition
+ 	in addition to has_gimple_body.
+ 
+ 2021-08-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/101723
+ 	* config/arm/arm-cpus.in (generic-armv7-a): Add quirk to suppress
+ 	writing .cpu directive in asm output.
+ 	* config/arm/arm.c (arm_identify_fpu_from_isa): New variable.
+ 	(arm_last_printed_arch_string): Delete.
+ 	(arm_last-printed_fpu_string): Delete.
+ 	(arm_configure_build_target): If use of floating-point/SIMD is
+ 	disabled, remove all fp/simd related features from the target ISA.
+ 	(last_arm_targ_options): New variable.
+ 	(arm_print_asm_arch_directives): Add new parameters.  Change order
+ 	of emitted directives and handle all cases here.
+ 	(arm_file_start): Always call arm_print_asm_arch_directives, move
+ 	all generation of .arch/.arch_extension here.
+ 	(arm_file_end): Call arm_print_asm_arch.
+ 	(arm_declare_function_name): Call arm_print_asm_arch_directives
+ 	instead of printing .arch/.fpu directives directly.
+ 
+ 2021-08-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.c (arm_configure_build_target): Don't call
+ 	arm_option_reconfigure_globals.
+ 	(arm_option_restore): Call arm_option_reconfigure_globals after
+ 	reconfiguring the target.
+ 	* config/arm/arm-c.c (arm_pragma_target_parse): Likewise.
+ 
+ 2021-08-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.c (arm_configure_build_target): Ensure the target's
+ 	arch_name is always set.
+ 
+ 2021-08-23  Christophe Lyon  <christophe.lyon@foss.st.com>
+ 
+ 	Backported from master:
+ 	2021-08-23  Christophe Lyon  <christophe.lyon@foss.st.com>
+ 
+ 	* config/arm/arm_mve.h: Fix __arm_vctp16q return type.
+ 
+ 2021-08-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-27  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/100767
+ 	* config/arm/arm.c (arm_configure_build_target): Remove parameter
+ 	opts_set, directly check opts parameters for being non-null.
+ 	(arm_option_restore): Update call to arm_configure_build_target.
+ 	(arm_option_override): Likewise.
+ 	(arm_can_inline_p): Likewise.
+ 	(arm_valid_target_attribute_tree): Likewise.
+ 	* config/arm/arm-c.c (arm_pragma_target_parse): Likewise.
+ 	* config/arm/arm-protos.h (arm_configure_build_target): Adjust
+ 	prototype.
+ 
+ 2021-08-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-03  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* doc/invoke.texi: Document -mtune=neoverse-512tvb and
+ 	-mcpu=neoverse-512tvb.
+ 	* config/aarch64/aarch64-cores.def (neoverse-512tvb): New entry.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 
+ 2021-08-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/100305
+ 	* config/aarch64/constraints.md (Utq): Require the address to
+ 	be valid for both the element mode and for V2DImode.
+ 
+ 2021-08-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/100788
+ 	* coverage.c (coverage_begin_function): Update function
+ 	  beginning when #line macro is used.
+ 
+ 2021-07-31  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	Backported from master:
+ 	2021-07-30  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR target/94780
+ 	* config/mips/mips.c (mips_atomic_assign_expand_fenv): Use
+ 	  TARGET_EXPR instead of MODIFY_EXPR.
+ 
+ 2021-07-28  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/99295
+ 	* doc/extend.texi (attribute malloc): Reword and clarify nonaliasing
+ 	property.
+ 
+ 2021-07-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-07-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/101066
+ 	* ipa-sra.c (class isra_call_summary): New member
+ 	m_before_any_store, initialize it in the constructor.
+ 	(isra_call_summary::dump): Dump the new field.
+ 	(ipa_sra_call_summaries::duplicate): Copy it.
+ 	(process_scan_results): Set it.
+ 	(isra_write_edge_summary): Stream it.
+ 	(isra_read_edge_summary): Likewise.
+ 	(param_splitting_across_edge): Only override
+ 	safe_to_import_accesses if m_before_any_store is set.
+ 
+ 2021-07-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/100182
+ 	* config/i386/sync.md (define_peephole2 atomic_storedi_fpu):
+ 	Remove.
+ 	(define_peephole2 atomic_loaddi_fpu): Ditto.
+ 
+ 2021-07-19  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/101129
+ 	* config/rs6000/rs6000-p8swap.c (has_part_mult): New.
+ 	(rs6000_analyze_swaps): Insns containing a subreg of a mult are
+ 	not swappable.
+ 
+ 2021-07-19  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-07-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/i386/i386.c (asm_preferred_eh_data_format): Always use the
+ 	PIC encodings for PE-COFF targets.
+ 
+ 2021-06-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-06-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/101175
+ 	* config/i386/i386.md (bsr_rex64): Add zero-flag setting RTX.
+ 	(bsr): Ditto.
+ 	(*bsrhi): Remove.
+ 	(clz<mode>2): Update RTX pattern for additions.
+ 
+ 2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/100856
+ 	* common/config/arm/arm-common.c (arm_canon_arch_option_1): New function
+ 	derived from arm_canon_arch.
+ 	(arm_canon_arch_option): Call it.
+ 	(arm_canon_arch_multilib_option): New function.
+ 	* config/arm/arm-cpus.in (IGNORE_FOR_MULTILIB): New fgroup.
+ 	* config/arm/arm.h (arm_canon_arch_multilib_option): New prototype.
+ 	(CANON_ARCH_MULTILIB_SPEC_FUNCTION): New macro.
+ 	(MULTILIB_ARCH_CANONICAL_SPECS): New macro.
+ 	(DRIVER_SELF_SPECS): Add MULTILIB_ARCH_CANONICAL_SPECS.
+ 	* config/arm/arm.opt (mlibarch): New option.
+ 	* config/arm/t-rmprofile (MULTILIB_MATCHES): For armv8*-m, replace use
+ 	of march on RHS with mlibarch.
+ 
+ 2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-06-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/101016
+ 	* config/arm/arm_mve.h (__arm_vld1q): Change __ARM_mve_coerce(p0,
+ 	int8_t const *) to __ARM_mve_coerce1(p0, int8_t *) in the argument for
+ 	the polymorphic variants matching code.
+ 	(__arm_vld1q_z): Likewise.
+ 	(__arm_vld2q): Likewise.
+ 	(__arm_vld4q): Likewise.
+ 	(__arm_vldrbq_gather_offset): Likewise.
+ 	(__arm_vldrbq_gather_offset_z): Likewise.
+ 
+ 2021-06-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/100777
+ 	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Use
+ 	create_tmp_reg_or_ssa_name().
+ 
+ 2021-06-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-06-10  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.def (build_pair): New built-in.
+ 	(build_acc): Likewise.
+ 	* config/rs6000/rs6000-call.c (mma_expand_builtin): Swap assemble
+ 	source operands in little-endian mode.
+ 	(rs6000_gimple_fold_mma_builtin): Handle VSX_BUILTIN_BUILD_PAIR.
+ 	(mma_init_builtins): Likewise.
+ 	* config/rs6000/rs6000.c (rs6000_split_multireg_move): Handle endianness
+ 	ordering for the MMA assemble and build source operands.
+ 	* doc/extend.texi (__builtin_vsx_build_acc, __builtin_mma_build_pair):
+ 	Document.
+ 	(__builtin_mma_assemble_acc, __builtin_mma_assemble_pair): Remove
+ 	documentation.
+ 
+ 2021-06-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-05-31  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/99842
+ 	* config/rs6000/predicates.md(mma_assemble_input_operand): Allow
+ 	indexed form addresses.
+ 
+ 2021-06-17  Marius Hillenbrand  <mhillen@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-06-17  Marius Hillenbrand  <mhillen@linux.ibm.com>
+ 
+ 	PR target/100871
+ 	* config/s390/vecintrin.h (vec_doublee): Fix to use
+ 	  __builtin_s390_vflls.
+ 	(vec_floate): Fix to use __builtin_s390_vflrd.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100934
+ 	* tree-ssa-dom.c (pass_dominator::execute): Properly
+ 	mark irreducible regions.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/100791
+ 	* tree-inline.c (copy_bb): When processing __builtin_va_arg_pack
+ 	copy fntype from original call.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/100513
+ 	* ipa-param-manipulation.c
+ 	(ipa_param_body_adjustments::modify_call_stmt): Avoid
+ 	altering SSA_NAME_DEF_STMT by adjusting the calls LHS
+ 	via gimple_call_lhs_ptr.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100509
+ 	* gimple-fold.c (fold_gimple_assign): Only call
+ 	get_symbol_constant_value on register type symbols.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100492
+ 	* tree-loop-distribution.c (find_seed_stmts_for_distribution):
+ 	Find nothing when the loop contains an irreducible region.
+ 
+ 2021-06-04  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-19  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/100333
+ 	* config/arm/arm.md (nonsecure_call_internal): Always ensure
+ 	callee's address is in a register.
+ 
+ 2021-06-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	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-06-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	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-06-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	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-06-02  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-06-02  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (abs<MMXMODEI:mode>2):
+ 	Change define_insn to define_expand.
+ 
+ 2021-06-01  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99725
+ 	* config/arm/arm.c (cmse_nonsecure_call_inline_register_clear):
+ 	Avoid emitting CFA adjusts on the sp if we have the fp.
+ 
+ 2021-05-25  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-10  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99960
+ 	* config/arm/mve.md (*mve_mov<mode>): Simplify output code. Use
+ 	vldrw.u32 and vstrw.32 for V2D[IF]mode loads and stores.
+ 
+ 2021-05-20  Alex Coplan  <alex.coplan@arm.com>
+ 	    Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/99977
+ 	* config/arm/arm.c (arm_split_compare_and_swap): Fix up codegen
+ 	with negative immediates: ensure we expand cbranchsi4_scratch
+ 	correctly and ensure we satisfy its constraints.
+ 	* config/arm/sync.md
+ 	(@atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): Don't
+ 	attempt to tie two output operands together with constraints;
+ 	collapse two alternatives.
+ 	(@atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): Likewise.
+ 	* config/arm/thumb1.md (cbranchsi4_neg_late): New.
+ 
+ 2021-05-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/cpp.texi (Common Predefined Macros): Update documentation
+ 	for the __GXX_EXPERIMENTAL_CXX0X__ macro.
+ 
+ 2021-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100566
+ 	* tree-ssa-sccvn.c (dominated_by_p_w_unex): Properly handle
+ 	allow_back for all edge queries.
+ 
+ 2021-05-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 		    Joe Ramsay   <joe.ramsay@arm.com>
+ 
+ 	PR target/100419
+ 	* config/arm/arm_mve.h (__arm_vstrwq_scatter_offset): Fix wrong arguments.
+ 	(__arm_vcmpneq): Remove duplicate definition.
+ 	(__arm_vstrwq_scatter_offset_p): Likewise.
+ 	(__arm_vmaxq_x): Likewise.
+ 	(__arm_vmlsdavaq): Likewise.
+ 	(__arm_vmlsdavaxq): Likewise.
+ 	(__arm_vmlsdavq_p): Likewise.
+ 	(__arm_vmlsdavxq_p): Likewise.
+ 	(__arm_vrmlaldavhaq): Likewise.
+ 	(__arm_vstrbq_p): Likewise.
+ 	(__arm_vstrbq_scatter_offset): Likewise.
+ 	(__arm_vstrbq_scatter_offset_p): Likewise.
+ 	(__arm_vstrdq_scatter_offset): Likewise.
+ 	(__arm_vstrdq_scatter_offset_p): Likewise.
+ 	(__arm_vstrdq_scatter_shifted_offset): Likewise.
+ 	(__arm_vstrdq_scatter_shifted_offset_p): Likewise.
+ 
+ 2021-05-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/100563
+ 	* config/arm/arm.c (arm_canonicalize_comparison): Correctly
+ 	canonicalize DImode inequality comparisons against the
+ 	maximum integral value.
+ 
+ 2021-05-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/100571
+ 	* calls.c (maybe_warn_rdwr_sizes): Clear object size if it can't
+ 	be determined.
+ 
+ 2021-05-12  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99988
+ 	* config/aarch64/aarch64-bti-insert.c (aarch64_bti_j_insn_p): New.
+ 	(rest_of_insert_bti): Avoid inserting duplicate bti j insns for
+ 	jump table targets.
+ 
+ 2021-05-11  Geng Qi  <gengqi@linux.alibaba.com>
+ 
+ 	Backported from master:
+ 	2021-04-30  Geng Qi  <gengqi@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.opt (march=,mabi=): Negative itself.
+ 
+ 2021-05-10  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-05-06  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backported from master:
+ 	2021-04-30  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/100225
+ 	PR rtl-optimization/84878
+ 	* modulo-sched.c (sms_schedule): Use note_stores to skip loops
+ 	where we have an instruction which touches (writes) any hard
+ 	register from df->regular_block_artificial_uses set.
+ 	Allow not-single-set instruction only right before basic block
+ 	tail.
+ 
+ 2021-05-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backported from master:
+ 	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
+ 
+ 2021-05-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	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'.
+ 
+ 2021-05-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/100402
+ 	* config/i386/i386.c (ix86_compute_frame_layout): For a SEH target,
+ 	always return the establisher frame for __builtin_frame_address (0).
+ 
+ 2021-05-05  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-05-05  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	PR rtl-optimization/100263
+ 	* postreload.c (move2add_valid_value_p): Ensure register can
+ 	change mode.
+ 
+ 2021-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98786
+ 	* tree-ssa-phiopt.c (factor_out_conditional_conversion): Avoid
+ 	adding new uses of abnormals.
+ 
+ 2021-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100278
+ 	* tree-ssa-pre.c (compute_avail): Give up when we cannot
+ 	adjust TBAA beacuse of mismatching bases.
+ 
+ 2021-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/100375
+ 	* config/nvptx/nvptx.c (nvptx_sese_pseudo): Use NULL instead of 0
+ 	as first argument of pseudo_node_t constructors.
+ 
+ 2021-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/100302
+ 	* config/aarch64/aarch64.c (aarch64_add_offset_1_temporaries): Use
+ 	absu_hwi instead of abs_hwi.
+ 
+ 2021-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/100254
+ 	* cfgcleanup.c (outgoing_edges_match): Check REG_EH_REGION on
+ 	last1 and last2 insns rather than BB_END (bb1) and BB_END (bb2) insns.
+ 
+ 2021-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/100255
+ 	* vmsdbgout.c (ASM_OUTPUT_DEBUG_STRING, vmsdbgout_begin_block,
+ 	vmsdbgout_end_block, lookup_filename, vmsdbgout_source_line): Remove
+ 	register keywords.
+ 
+ 2021-05-04  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-23  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR rtl-optimization/100230
+ 	* early-remat.c (early_remat::sort_candidates): Use delete[]
+ 	instead of delete for array allocated with new[].
+ 
+ 2021-04-30  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-04-27  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/aix.h (SUBTARGET_DRIVER_SELF_SPECS): New.
+ 	* config/rs6000/aix64.opt (m64): New.
+ 	(m32): New.
+ 
+ 2021-04-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96513
+ 	* tree-vect-slp.c (struct vdhs_data): New.
+ 	(vect_detect_hybrid_slp): New walker.
+ 	(vect_detect_hybrid_slp): Rewrite.
+ 
+ 2021-04-29  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/100311
+ 	* config/arm/arm.c (arm_hard_regno_mode_ok): Only allow VPR to be
+ 	used in HImode.
+ 
+ 2021-04-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-04-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/100182
+ 	* config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
+ 	Copy operand 3 to operand 4.  Use sse_reg_operand
+ 	as operand 3 predicate.
+ 	(FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): Ditto.
+ 	(LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
+ 	(LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
+ 	(FILD_ATOMIC/FIST_ATOMIC FP store peephole2):
+ 	Copy operand 1 to operand 0.
+ 	(FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): Ditto.
+ 	(LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
+ 	(LDX_ATOMIC/LDX_ATOMIC FP store peephole2 with mem blockage): Ditto.
+ 
+ 2021-04-26  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	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-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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-24  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.
+ 
+ 2021-04-23  YiFei Zhu  <zhuyifei1999@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-04-23  YiFei Zhu  <zhuyifei1999@gmail.com>
+ 
+ 	* config/bpf/bpf.h (ASM_OUTPUT_ALIGNED_BSS): Use .type and .lcomm.
+ 
+ 2021-04-23  YiFei Zhu  <zhuyifei1999@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-04-23  YiFei Zhu  <zhuyifei1999@gmail.com>
+ 
+ 	* config/bpf/bpf.h (FUNCTION_BOUNDARY): Set to 64.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	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-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	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-04-23  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	Backported from master:
+ 	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-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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.
+ 
+ 2021-04-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2020-07-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfganal.c (rev_post_order_and_mark_dfs_back_seme): Remove
+ 	write-only post array.
+ 
+ 2021-04-23  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	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-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/99249
+ 	* 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-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	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-04-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	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-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	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-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	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-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	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-04-22  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.
+ 	* lto-streamer.h (LTO_minor_version): Bump.
+ 
+ 2021-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/100148
+ 	* cprop.c (constprop_register): Use next_nondebug_insn instead of
+ 	NEXT_INSN.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-19  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	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.
+ 
+ 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  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+ 
+ 	Backported from master:
+ 	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-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	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-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/99898
+ 	* lto-streamer.h (LTO_minor_version): Bump.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/DATESTAMP gcc-10.4.0/gcc/DATESTAMP
*** gcc-10.3.0/gcc/DATESTAMP	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/gcc/DATESTAMP	Tue Jun 28 08:54:27 2022
***************
*** 1 ****
! 20210408
--- 1 ----
! 20220628
diff -Nrcpad gcc-10.3.0/gcc/Makefile.in gcc-10.4.0/gcc/Makefile.in
*** gcc-10.3.0/gcc/Makefile.in	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/gcc/Makefile.in	Tue Jun 28 08:54:27 2022
*************** DIR = ../gcc
*** 783,795 ****
  # Native compiler for the build machine and its switches.
  CC_FOR_BUILD = @CC_FOR_BUILD@
  CXX_FOR_BUILD = @CXX_FOR_BUILD@
- NO_PIE_CFLAGS_FOR_BUILD = @NO_PIE_CFLAGS_FOR_BUILD@
- NO_PIE_FLAG_FOR_BUILD = @NO_PIE_FLAG_FOR_BUILD@
  BUILD_CFLAGS= @BUILD_CFLAGS@ $(GENERATOR_CFLAGS) -DGENERATOR_FILE
  BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ $(GENERATOR_CFLAGS) -DGENERATOR_FILE
- BUILD_NO_PIE_CFLAGS = @BUILD_NO_PIE_CFLAGS@
- BUILD_CFLAGS += $(BUILD_NO_PIE_CFLAGS)
- BUILD_CXXFLAGS += $(BUILD_NO_PIE_CFLAGS)
  
  # Native compiler that we use.  This may be C++ some day.
  COMPILER_FOR_BUILD = $(CXX_FOR_BUILD)
--- 783,790 ----
*************** BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS)
*** 801,808 ****
  
  # Native linker and preprocessor flags.  For x-fragment overrides.
  BUILD_LDFLAGS=@BUILD_LDFLAGS@
- BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@
- BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG)
  BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
  		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
  
--- 796,801 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/ChangeLog gcc-10.4.0/gcc/ada/ChangeLog
*** gcc-10.3.0/gcc/ada/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/ada/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,105 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-03-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ada/104861
+ 	* gcc-interface/Makefile.in (target_noncanonical): Substitute.
+ 	(OSCONS_CPP): Pass target_noncanonical as TARGET.
+ 
+ 2022-03-24  Pascal Obry  <obry@adacore.com>
+ 
+ 	PR ada/104767
+ 	* libgnat/g-sercom__mingw.adb (Close): Reset port handle to -1.
+ 	* libgnat/g-sercom__linux.adb (Close): Likewise.
+ 
+ 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR ada/103538
+ 	* gcc-interface/Makefile.in (target_cpu): Set to x32 for
+ 	x86_64-linux-gnux32.
+ 
+ 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR ada/103538
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Add
+ 	$(TRASYM_DWARF_UNIX_PAIRS),
+ 	s-tsmona.adb<libgnat/s-tsmona__linux.adb,
+ 	$(GNATRTL_128BIT_PAIRS).
+ 	(EXTRA_GNATRTL_NONTASKING_OBJS): Add $(TRASYM_DWARF_UNIX_OBJS)
+ 	and $(GNATRTL_128BIT_OBJS).
+ 
+ 2021-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (validate_size): Do not issue an error if the
+ 	old size has overflowed.
+ 
+ 2021-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): For vector types, make
+ 	the representative array the debug type.
+ 
+ 2021-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (update_pointer_to): Set TYPE_CANONICAL on
+ 	pointer and reference types.
+ 
+ 2021-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (can_materialize_object_renaming_p): Do not
+ 	call UI_Is_In_Int_Range on the result of Normalized_First_Bit.
+ 
+ 2021-09-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <is_type>: Declare new
+ 	constant.  Adjust error message issued by validate_size in the case
+ 	of by-reference types.
+ 	(validate_size): Always use the error strings passed by the caller.
+ 
+ 2021-09-14  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.
+ 
+ 2021-07-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.c (finish_subprog_decl): Remove obsolete line.
+ 
+ 2021-05-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Process
+ 	the implementation type of a packed type implemented specially.
+ 
+ 2021-05-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_subprog_type): Always translate
+ 	the Is_Pure flag into the "pure" attribute of GNU C.
+ 
+ 2021-05-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (gnat_to_gnu) <N_Simple_Return_Statement>:
+ 	Put a SLOC on the assignment from the return value to the return
+ 	object in the copy-in/copy-out case.
+ 
+ 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-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/ada/Makefile.rtl gcc-10.4.0/gcc/ada/Makefile.rtl
*** gcc-10.3.0/gcc/ada/Makefile.rtl	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/gcc/ada/Makefile.rtl	Tue Jun 28 08:54:27 2022
*************** ifeq ($(strip $(filter-out %x32 linux%,$
*** 2441,2453 ****
--- 2441,2458 ----
    s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
    s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
    s-taspri.ads<libgnarl/s-taspri__posix.ads \
+   $(TRASYM_DWARF_UNIX_PAIRS) \
+   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
    THREADSLIB=-lpthread -lrt
diff -Nrcpad gcc-10.3.0/gcc/ada/freeze.adb gcc-10.4.0/gcc/ada/freeze.adb
*** gcc-10.3.0/gcc/ada/freeze.adb	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/gcc/ada/freeze.adb	Tue Jun 28 08:54:27 2022
*************** 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
--- 1610,1619 ----
        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
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/Makefile.in gcc-10.4.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-10.4.0/gcc/ada/gcc-interface/Makefile.in	Tue Jun 28 08:54:27 2022
*************** objdir = .
*** 138,143 ****
--- 138,144 ----
  
  target_alias=@target_alias@
  target=@target@
+ target_noncanonical=@target_noncanonical@
  target_cpu=@target_cpu@
  target_vendor=@target_vendor@
  target_os=@target_os@
*************** ifeq ($(strip $(filter-out %x86_64, $(ta
*** 348,353 ****
--- 349,361 ----
    endif
  endif
  
+ # The x86_64-linux-gnux32 compiler is actually an x32 compiler
+ ifeq ($(strip $(filter-out x86_64 linux-gnux32%, $(target_cpu) $(target_os))),)
+   ifneq ($(strip $(MULTISUBDIR)),/64)
+     target_cpu:=x32
+   endif
+ endif
+ 
  # Configuration of host tools
  
  # Under linux, host tools need to be linked with -ldl
*************** OSCONS_CC=$(subst ./xgcc,../../xgcc,$(su
*** 583,589 ****
  # has a <types.h> header).
  
  OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -E -C \
!   -DTARGET=\"$(target)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
  OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -S s-oscons-tmplt.i
  
  # Note: if you need to build with a non-GNU compiler, you could adapt the
--- 591,597 ----
  # has a <types.h> header).
  
  OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -E -C \
!   -DTARGET=\"$(target_noncanonical)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
  OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -S s-oscons-tmplt.i
  
  # Note: if you need to build with a non-GNU compiler, you could adapt the
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/decl.c gcc-10.4.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-10.4.0/gcc/ada/gcc-interface/decl.c	Tue Jun 28 08:54:27 2022
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2322,2332 ****
  	      set_nonaliased_component_on_array_type (tem);
  	  }
  
! 	/* If an alignment is specified, use it if valid.  But ignore it
! 	   for the original type of packed array types.  If the alignment
! 	   was requested with an explicit alignment clause, state so.  */
! 	if (No (Packed_Array_Impl_Type (gnat_entity))
! 	    && Known_Alignment (gnat_entity))
  	  {
  	    SET_TYPE_ALIGN (tem,
  			    validate_alignment (Alignment (gnat_entity),
--- 2322,2336 ----
  	      set_nonaliased_component_on_array_type (tem);
  	  }
  
! 	/* If this is a packed type implemented specially, then process the
! 	   implementation type so it is elaborated in the proper scope.  */
! 	if (Present (Packed_Array_Impl_Type (gnat_entity)))
! 	  gnat_to_gnu_entity (Packed_Array_Impl_Type (gnat_entity), NULL_TREE,
! 			      false);
! 
! 	/* Otherwise, if an alignment is specified, use it if valid and, if
! 	   the alignment was requested with an explicit clause, state so.  */
! 	else if (Known_Alignment (gnat_entity))
  	  {
  	    SET_TYPE_ALIGN (tem,
  			    validate_alignment (Alignment (gnat_entity),
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4253,4258 ****
--- 4257,4264 ----
       handling alignment and possible padding.  */
    if (is_type && (!gnu_decl || this_made_decl))
      {
+       const bool is_by_ref = Is_By_Reference_Type (gnat_entity);
+ 
        gcc_assert (!TYPE_IS_DUMMY_P (gnu_type));
  
        /* Process the attributes, if not already done.  Note that the type is
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4267,4281 ****
  	 non-constant).  */
        if (!gnu_size && kind != E_String_Literal_Subtype)
  	{
  	  if (Known_Esize (gnat_entity))
  	    gnu_size
  	      = validate_size (Esize (gnat_entity), gnu_type, gnat_entity,
! 			       VAR_DECL, false, false, NULL, NULL);
  	  else
  	    gnu_size
  	      = validate_size (RM_Size (gnat_entity), gnu_type, gnat_entity,
  			       TYPE_DECL, false, Has_Size_Clause (gnat_entity),
! 			       NULL, NULL);
  	}
  
        /* If a size was specified, see if we can make a new type of that size
--- 4273,4290 ----
  	 non-constant).  */
        if (!gnu_size && kind != E_String_Literal_Subtype)
  	{
+ 	  const char *size_s = "size for %s too small{, minimum allowed is ^}";
+ 	  const char *type_s = is_by_ref ? "by-reference type &" : "&";
+ 
  	  if (Known_Esize (gnat_entity))
  	    gnu_size
  	      = validate_size (Esize (gnat_entity), gnu_type, gnat_entity,
! 			       VAR_DECL, false, false, size_s, type_s);
  	  else
  	    gnu_size
  	      = validate_size (RM_Size (gnat_entity), gnu_type, gnat_entity,
  			       TYPE_DECL, false, Has_Size_Clause (gnat_entity),
! 			       size_s, type_s);
  	}
  
        /* If a size was specified, see if we can make a new type of that size
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4578,4584 ****
  	    TYPE_ALIGN_OK (gnu_type) = 1;
  
  	  /* Record whether the type is passed by reference.  */
! 	  if (Is_By_Reference_Type (gnat_entity) && !VOID_TYPE_P (gnu_type))
  	    TYPE_BY_REFERENCE_P (gnu_type) = 1;
  
  	  /* Record whether an alignment clause was specified.  */
--- 4587,4593 ----
  	    TYPE_ALIGN_OK (gnu_type) = 1;
  
  	  /* Record whether the type is passed by reference.  */
! 	  if (is_by_ref && !VOID_TYPE_P (gnu_type))
  	    TYPE_BY_REFERENCE_P (gnu_type) = 1;
  
  	  /* Record whether an alignment clause was specified.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4698,4703 ****
--- 4707,4720 ----
        else
  	gnu_decl = create_type_decl (gnu_entity_name, gnu_type, artificial_p,
  				     debug_info_p, gnat_entity);
+ 
+       /* For vector types, make the representative array the debug type.  */
+       if (VECTOR_TYPE_P (gnu_type))
+ 	{
+ 	  tree rep = TYPE_REPRESENTATIVE_ARRAY (gnu_type);
+ 	  TYPE_NAME (rep) = DECL_NAME (gnu_decl);
+ 	  SET_TYPE_DEBUG_TYPE (gnu_type, rep);
+ 	}
      }
  
    /* Otherwise, for a type reusing an existing DECL, back-annotate values.  */
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5719,5734 ****
    tree gnu_cico_return_type = NULL_TREE;
    tree gnu_cico_field_list = NULL_TREE;
    bool gnu_cico_only_integral_type = true;
!   /* The semantics of "pure" in Ada essentially matches that of "const"
!      or "pure" in GCC.  In particular, both properties are orthogonal
!      to the "nothrow" property if the EH circuitry is explicit in the
!      internal representation of the middle-end.  If we are to completely
!      hide the EH circuitry from it, we need to declare that calls to pure
!      Ada subprograms that can throw have side effects since they can
!      trigger an "abnormal" transfer of control flow; therefore, they can
!      be neither "const" nor "pure" in the GCC sense.  */
!   bool const_flag = (Back_End_Exceptions () && Is_Pure (gnat_subprog));
!   bool pure_flag = false;
    bool return_by_direct_ref_p = false;
    bool return_by_invisi_ref_p = false;
    bool return_unconstrained_p = false;
--- 5736,5751 ----
    tree gnu_cico_return_type = NULL_TREE;
    tree gnu_cico_field_list = NULL_TREE;
    bool gnu_cico_only_integral_type = true;
!   /* Although the semantics of "pure" units in Ada essentially match those of
!      "const" in GNU C, the semantics of the Is_Pure flag in GNAT do not say
!      anything about access to global memory, that's why it needs to be mapped
!      to "pure" instead of "const" in GNU C.  The property is orthogonal to the
!      "nothrow" property only if the EH circuitry is explicit in the internal
!      representation of the middle-end: if we are to completely hide the EH
!      circuitry from it, we need to declare that calls to pure Ada subprograms
!      that can throw have side effects, since they can trigger an "abnormal"
!      transfer of control; therefore they cannot be "pure" in the GCC sense.  */
!   bool pure_flag = Is_Pure (gnat_subprog) && Back_End_Exceptions ();
    bool return_by_direct_ref_p = false;
    bool return_by_invisi_ref_p = false;
    bool return_unconstrained_p = false;
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5881,5894 ****
      }
  
    /* A procedure (something that doesn't return anything) shouldn't be
!      considered const since there would be no reason for calling such a
       subprogram.  Note that procedures with Out (or In Out) parameters
       have already been converted into a function with a return type.
       Similarly, if the function returns an unconstrained type, then the
       function will allocate the return value on the secondary stack and
       thus calls to it cannot be CSE'ed, lest the stack be reclaimed.  */
    if (VOID_TYPE_P (gnu_return_type) || return_unconstrained_p)
!     const_flag = false;
  
    /* Loop over the parameters and get their associated GCC tree.  While doing
       this, build a copy-in copy-out structure if we need one.  */
--- 5898,5911 ----
      }
  
    /* A procedure (something that doesn't return anything) shouldn't be
!      considered pure since there would be no reason for calling such a
       subprogram.  Note that procedures with Out (or In Out) parameters
       have already been converted into a function with a return type.
       Similarly, if the function returns an unconstrained type, then the
       function will allocate the return value on the secondary stack and
       thus calls to it cannot be CSE'ed, lest the stack be reclaimed.  */
    if (VOID_TYPE_P (gnu_return_type) || return_unconstrained_p)
!     pure_flag = false;
  
    /* Loop over the parameters and get their associated GCC tree.  While doing
       this, build a copy-in copy-out structure if we need one.  */
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6011,6028 ****
  	  save_gnu_tree (gnat_param, gnu_param, false);
  
  	  /* A pure function in the Ada sense which takes an access parameter
! 	     may modify memory through it and thus need be considered neither
! 	     const nor pure in the GCC sense.  Likewise it if takes a by-ref
! 	     In Out or Out parameter.  But if it takes a by-ref In parameter,
! 	     then it may only read memory through it and can be considered
! 	     pure in the GCC sense.  */
! 	  if ((const_flag || pure_flag)
! 	      && (POINTER_TYPE_P (gnu_param_type)
  		  || TYPE_IS_FAT_POINTER_P (gnu_param_type)))
! 	    {
! 	      const_flag = false;
! 	      pure_flag = DECL_POINTS_TO_READONLY_P (gnu_param);
! 	    }
  	}
  
        /* If the parameter uses the copy-in copy-out mechanism, allocate a field
--- 6028,6043 ----
  	  save_gnu_tree (gnat_param, gnu_param, false);
  
  	  /* A pure function in the Ada sense which takes an access parameter
! 	     may modify memory through it and thus cannot be considered pure
! 	     in the GCC sense, unless it's access-to-function.  Likewise it if
! 	     takes a by-ref In Out or Out parameter.  But if it takes a by-ref
! 	     In parameter, then it may only read memory through it and can be
! 	     considered pure in the GCC sense.  */
! 	  if (pure_flag
! 	      && ((POINTER_TYPE_P (gnu_param_type)
! 		   && TREE_CODE (TREE_TYPE (gnu_param_type)) != FUNCTION_TYPE)
  		  || TYPE_IS_FAT_POINTER_P (gnu_param_type)))
! 	    pure_flag = DECL_POINTS_TO_READONLY_P (gnu_param);
  	}
  
        /* If the parameter uses the copy-in copy-out mechanism, allocate a field
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6221,6229 ****
  	    }
  	}
  
-       if (const_flag)
- 	gnu_type = change_qualified_type (gnu_type, TYPE_QUAL_CONST);
- 
        if (pure_flag)
  	gnu_type = change_qualified_type (gnu_type, TYPE_QUAL_RESTRICT);
  
--- 6236,6241 ----
*************** validate_size (Uint uint_size, tree gnu_
*** 9032,9044 ****
    /* Issue an error either if the default size of the object isn't a constant
       or if the new size is smaller than it.  */
    if (TREE_CODE (old_size) != INTEGER_CST
!       || TREE_OVERFLOW (old_size)
!       || tree_int_cst_lt (size, old_size))
      {
        char buf[128];
        const char *s;
  
!       if (kind == FIELD_DECL)
  	{
  	  snprintf (buf, sizeof (buf), s1, s2);
  	  s = buf;
--- 9044,9055 ----
    /* Issue an error either if the default size of the object isn't a constant
       or if the new size is smaller than it.  */
    if (TREE_CODE (old_size) != INTEGER_CST
!       || (!TREE_OVERFLOW (old_size) && tree_int_cst_lt (size, old_size)))
      {
        char buf[128];
        const char *s;
  
!       if (s1 && s2)
  	{
  	  snprintf (buf, sizeof (buf), s1, s2);
  	  s = buf;
*************** validate_size (Uint uint_size, tree gnu_
*** 9047,9052 ****
--- 9058,9064 ----
  	s = "component size for& too small{, minimum allowed is ^}";
        else
  	s = "size for& too small{, minimum allowed is ^}";
+ 
        post_error_ne_tree (s, gnat_error_node, gnat_object, old_size);
  
        return NULL_TREE;
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/misc.c gcc-10.4.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-10.4.0/gcc/ada/gcc-interface/misc.c	Tue Jun 28 08:54:27 2022
*************** gnat_init (void)
*** 366,371 ****
--- 366,374 ----
    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;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/trans.c gcc-10.4.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-10.4.0/gcc/ada/gcc-interface/trans.c	Tue Jun 28 08:54:27 2022
*************** 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.  */
  
--- 252,278 ----
  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);
--- 326,343 ----
  
    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);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8084,8091 ****
  	if (gnu_return_label_stack->last ())
  	  {
  	    if (gnu_ret_val)
! 	      add_stmt (build_binary_op (MODIFY_EXPR, NULL_TREE, gnu_ret_obj,
! 					 gnu_ret_val));
  
  	    gnu_result = build1 (GOTO_EXPR, void_type_node,
  				 gnu_return_label_stack->last ());
--- 8089,8098 ----
  	if (gnu_return_label_stack->last ())
  	  {
  	    if (gnu_ret_val)
! 	      add_stmt_with_node (build_binary_op (MODIFY_EXPR,
! 						   NULL_TREE, gnu_ret_obj,
! 						   gnu_ret_val),
! 				  gnat_node);
  
  	    gnu_result = build1 (GOTO_EXPR, void_type_node,
  				 gnu_return_label_stack->last ());
*************** 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.  */
--- 10983,10989 ----
diff -Nrcpad gcc-10.3.0/gcc/ada/gcc-interface/utils.c gcc-10.4.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-10.4.0/gcc/ada/gcc-interface/utils.c	Tue Jun 28 08:54:27 2022
*************** finish_subprog_decl (tree decl, tree asm
*** 3438,3446 ****
    DECL_BY_REFERENCE (result_decl) = TREE_ADDRESSABLE (type);
    DECL_RESULT (decl) = result_decl;
  
-   /* Propagate the "const" property.  */
-   TREE_READONLY (decl) = TYPE_READONLY (type);
- 
    /* Propagate the "pure" property.  */
    DECL_PURE_P (decl) = TYPE_RESTRICT (type);
  
--- 3438,3443 ----
*************** update_pointer_to (tree old_type, tree n
*** 4233,4238 ****
--- 4230,4236 ----
  	    TREE_TYPE (t) = new_type;
  	    if (TYPE_NULL_BOUNDS (t))
  	      TREE_TYPE (TREE_OPERAND (TYPE_NULL_BOUNDS (t), 0)) = new_type;
+ 	    TYPE_CANONICAL (t) = TYPE_CANONICAL (TYPE_POINTER_TO (new_type));
  	  }
  
        /* Chain REF and its variants at the end.  */
*************** update_pointer_to (tree old_type, tree n
*** 4249,4255 ****
        /* Now adjust them.  */
        for (; ref; ref = TYPE_NEXT_REF_TO (ref))
  	for (t = TYPE_MAIN_VARIANT (ref); t; t = TYPE_NEXT_VARIANT (t))
! 	  TREE_TYPE (t) = new_type;
  
        TYPE_POINTER_TO (old_type) = NULL_TREE;
        TYPE_REFERENCE_TO (old_type) = NULL_TREE;
--- 4247,4256 ----
        /* Now adjust them.  */
        for (; ref; ref = TYPE_NEXT_REF_TO (ref))
  	for (t = TYPE_MAIN_VARIANT (ref); t; t = TYPE_NEXT_VARIANT (t))
! 	  {
! 	    TREE_TYPE (t) = new_type;
! 	    TYPE_CANONICAL (t) = TYPE_CANONICAL (TYPE_REFERENCE_TO (new_type));
! 	  }
  
        TYPE_POINTER_TO (old_type) = NULL_TREE;
        TYPE_REFERENCE_TO (old_type) = NULL_TREE;
*************** can_materialize_object_renaming_p (Node_
*** 5762,5769 ****
  
  	    const Uint bitpos
  	      = Normalized_First_Bit (Entity (Selector_Name (expr)));
! 	    if (!UI_Is_In_Int_Range (bitpos)
! 		|| (bitpos != UI_No_Uint && bitpos != UI_From_Int (0)))
  	      return false;
  
  	    expr = Prefix (expr);
--- 5763,5769 ----
  
  	    const Uint bitpos
  	      = Normalized_First_Bit (Entity (Selector_Name (expr)));
! 	    if (bitpos != UI_No_Uint && bitpos != Uint_0)
  	      return false;
  
  	    expr = Prefix (expr);
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sercom__linux.adb gcc-10.4.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-10.4.0/gcc/ada/libgnat/g-sercom__linux.adb	Tue Jun 28 08:54:27 2022
*************** package body GNAT.Serial_Communications
*** 318,323 ****
--- 318,324 ----
     begin
        if Port.H /= -1 then
           Res := close (int (Port.H));
+          Port.H := -1;
        end if;
     end Close;
  
diff -Nrcpad gcc-10.3.0/gcc/ada/libgnat/g-sercom__mingw.adb gcc-10.4.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-10.4.0/gcc/ada/libgnat/g-sercom__mingw.adb	Tue Jun 28 08:54:27 2022
*************** package body GNAT.Serial_Communications
*** 70,75 ****
--- 70,76 ----
     begin
        if Port.H /= -1 then
           Success := CloseHandle (HANDLE (Port.H));
+          Port.H := -1;
  
           if Success = Win32.FALSE then
              Raise_Error ("error closing the port");
diff -Nrcpad gcc-10.3.0/gcc/analyzer/ChangeLog gcc-10.4.0/gcc/analyzer/ChangeLog
*** gcc-10.3.0/gcc/analyzer/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/analyzer/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/asan.c gcc-10.4.0/gcc/asan.c
*** gcc-10.3.0/gcc/asan.c	Thu Apr  8 11:56:27 2021
--- gcc-10.4.0/gcc/asan.c	Tue Jun 28 08:54:27 2022
*************** along with GCC; see the file COPYING3.
*** 63,68 ****
--- 63,69 ----
  #include "fnmatch.h"
  #include "tree-inline.h"
  #include "tree-ssa.h"
+ #include "tree-eh.h"
  
  /* AddressSanitizer finds out-of-bounds and use-after-free bugs
     with <2x slowdown on average.
*************** handle_builtin_alloca (gcall *call, gimp
*** 630,643 ****
  
    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))
! 					 : ptr_type_node;
    tree partial_size = NULL_TREE;
    unsigned int align
      = DECL_FUNCTION_CODE (callee) == BUILT_IN_ALLOCA
        ? 0 : tree_to_uhwi (gimple_call_arg (call, 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.  */
--- 631,654 ----
  
    tree last_alloca = get_last_alloca_addr ();
    tree callee = gimple_call_fndecl (call);
+   tree lhs = gimple_call_lhs (call);
    tree old_size = gimple_call_arg (call, 0);
!   tree ptr_type = lhs ? TREE_TYPE (lhs) : ptr_type_node;
    tree partial_size = NULL_TREE;
    unsigned int align
      = DECL_FUNCTION_CODE (callee) == BUILT_IN_ALLOCA
        ? 0 : tree_to_uhwi (gimple_call_arg (call, 1));
  
+   bool throws = false;
+   edge e = NULL;
+   if (stmt_can_throw_internal (cfun, call))
+     {
+       if (!lhs)
+ 	return;
+       throws = true;
+       e = find_fallthru_edge (gsi_bb (*iter)->succs);
+     }
+ 
    /* 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.  */
*************** handle_builtin_alloca (gcall *call, gimp
*** 694,722 ****
  			  build_int_cst (size_type_node, align));
    tree new_alloca_with_rz = make_ssa_name (ptr_type, gg);
    gimple_call_set_lhs (gg, new_alloca_with_rz);
!   gsi_insert_before (iter, gg, GSI_SAME_STMT);
  
    /* new_alloca = new_alloca_with_rz + align.  */
    g = gimple_build_assign (make_ssa_name (ptr_type), POINTER_PLUS_EXPR,
  			   new_alloca_with_rz,
  			   build_int_cst (size_type_node,
  					  align / BITS_PER_UNIT));
!   gsi_insert_before (iter, g, GSI_SAME_STMT);
    tree new_alloca = gimple_assign_lhs (g);
  
    /* Poison newly created alloca redzones:
        __asan_alloca_poison (new_alloca, old_size).  */
    fn = builtin_decl_implicit (BUILT_IN_ASAN_ALLOCA_POISON);
    gg = gimple_build_call (fn, 2, new_alloca, old_size);
!   gsi_insert_before (iter, gg, GSI_SAME_STMT);
  
    /* Save new_alloca_with_rz value into last_alloca to use it during
       allocas unpoisoning.  */
    g = gimple_build_assign (last_alloca, new_alloca_with_rz);
!   gsi_insert_before (iter, g, GSI_SAME_STMT);
  
    /* Finally, replace old alloca ptr with NEW_ALLOCA.  */
!   replace_call_with_value (iter, new_alloca);
  }
  
  /* Return the memory references contained in a gimple statement
--- 705,758 ----
  			  build_int_cst (size_type_node, align));
    tree new_alloca_with_rz = make_ssa_name (ptr_type, gg);
    gimple_call_set_lhs (gg, new_alloca_with_rz);
!   if (throws)
!     {
!       gimple_call_set_lhs (call, NULL);
!       gsi_replace (iter, gg, true);
!     }
!   else
!     gsi_insert_before (iter, gg, GSI_SAME_STMT);
  
    /* new_alloca = new_alloca_with_rz + align.  */
    g = gimple_build_assign (make_ssa_name (ptr_type), POINTER_PLUS_EXPR,
  			   new_alloca_with_rz,
  			   build_int_cst (size_type_node,
  					  align / BITS_PER_UNIT));
!   gimple_stmt_iterator gsi = gsi_none ();
!   if (throws)
!     {
!       gsi_insert_on_edge_immediate (e, g);
!       gsi = gsi_for_stmt (g);
!     }
!   else
!     gsi_insert_before (iter, g, GSI_SAME_STMT);
    tree new_alloca = gimple_assign_lhs (g);
  
    /* Poison newly created alloca redzones:
        __asan_alloca_poison (new_alloca, old_size).  */
    fn = builtin_decl_implicit (BUILT_IN_ASAN_ALLOCA_POISON);
    gg = gimple_build_call (fn, 2, new_alloca, old_size);
!   if (throws)
!     gsi_insert_after (&gsi, gg, GSI_NEW_STMT);
!   else
!     gsi_insert_before (iter, gg, GSI_SAME_STMT);
  
    /* Save new_alloca_with_rz value into last_alloca to use it during
       allocas unpoisoning.  */
    g = gimple_build_assign (last_alloca, new_alloca_with_rz);
!   if (throws)
!     gsi_insert_after (&gsi, g, GSI_NEW_STMT);
!   else
!     gsi_insert_before (iter, g, GSI_SAME_STMT);
  
    /* Finally, replace old alloca ptr with NEW_ALLOCA.  */
!   if (throws)
!     {
!       g = gimple_build_assign (lhs, new_alloca);
!       gsi_insert_after (&gsi, g, GSI_NEW_STMT);
!     }
!   else
!     replace_call_with_value (iter, new_alloca);
  }
  
  /* Return the memory references contained in a gimple statement
*************** asan_redzone_buffer::emit_redzone_byte (
*** 1278,1287 ****
    HOST_WIDE_INT off
      = m_prev_offset + ASAN_SHADOW_GRANULARITY * m_shadow_bytes.length ();
    if (off == offset)
      {
!       /* Consecutive shadow memory byte.  */
!       m_shadow_bytes.safe_push (value);
!       flush_if_full ();
      }
    else
      {
--- 1314,1327 ----
    HOST_WIDE_INT off
      = m_prev_offset + ASAN_SHADOW_GRANULARITY * m_shadow_bytes.length ();
    if (off == offset)
+     /* Consecutive shadow memory byte.  */;
+   else if (offset < m_prev_offset + (HOST_WIDE_INT) (ASAN_SHADOW_GRANULARITY
+ 						     * RZ_BUFFER_SIZE)
+ 	   && !m_shadow_bytes.is_empty ())
      {
!       /* Shadow memory byte with a small gap.  */
!       for (; off < offset; off += ASAN_SHADOW_GRANULARITY)
! 	m_shadow_bytes.safe_push (0);
      }
    else
      {
*************** asan_redzone_buffer::emit_redzone_byte (
*** 1302,1310 ****
        m_shadow_mem = adjust_address (m_shadow_mem, VOIDmode,
  				     diff >> ASAN_SHADOW_SHIFT);
        m_prev_offset = offset;
-       m_shadow_bytes.safe_push (value);
-       flush_if_full ();
      }
  }
  
  /* Emit RTX emission of the content of the buffer.  */
--- 1342,1350 ----
        m_shadow_mem = adjust_address (m_shadow_mem, VOIDmode,
  				     diff >> ASAN_SHADOW_SHIFT);
        m_prev_offset = offset;
      }
+   m_shadow_bytes.safe_push (value);
+   flush_if_full ();
  }
  
  /* Emit RTX emission of the content of the buffer.  */
*************** instrument_derefs (gimple_stmt_iterator
*** 2269,2281 ****
      return;
  
    poly_int64 decl_size;
!   if (VAR_P (inner)
        && offset == NULL_TREE
        && DECL_SIZE (inner)
        && poly_int_tree_p (DECL_SIZE (inner), &decl_size)
        && known_subrange_p (bitpos, bitsize, 0, decl_size))
      {
!       if (DECL_THREAD_LOCAL_P (inner))
  	return;
        if (!param_asan_globals && is_global_var (inner))
          return;
--- 2309,2321 ----
      return;
  
    poly_int64 decl_size;
!   if ((VAR_P (inner) || TREE_CODE (inner) == RESULT_DECL)
        && offset == NULL_TREE
        && DECL_SIZE (inner)
        && poly_int_tree_p (DECL_SIZE (inner), &decl_size)
        && known_subrange_p (bitpos, bitsize, 0, decl_size))
      {
!       if (VAR_P (inner) && DECL_THREAD_LOCAL_P (inner))
  	return;
        if (!param_asan_globals && is_global_var (inner))
          return;
*************** instrument_derefs (gimple_stmt_iterator
*** 2300,2305 ****
--- 2340,2350 ----
  	}
      }
  
+   if (DECL_P (inner)
+       && decl_function_context (inner) == current_function_decl
+       && !TREE_ADDRESSABLE (inner))
+     mark_addressable (inner);
+ 
    base = build_fold_addr_expr (t);
    if (!has_mem_ref_been_instrumented (base, size_in_bytes))
      {
diff -Nrcpad gcc-10.3.0/gcc/brig/ChangeLog gcc-10.4.0/gcc/brig/ChangeLog
*** gcc-10.3.0/gcc/brig/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/brig/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/builtins.c gcc-10.4.0/gcc/builtins.c
*** gcc-10.3.0/gcc/builtins.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/builtins.c	Tue Jun 28 08:54:27 2022
*************** expand_builtin_int_roundingfn_2 (tree ex
*** 2927,2942 ****
  	 BUILT_IN_IROUND and if __builtin_iround is called directly, emit
  	 a call to lround in the hope that the target provides at least some
  	 C99 functions.  This should result in the best user experience for
! 	 not full C99 targets.  */
!       tree fallback_fndecl = mathfn_built_in_1
! 	(TREE_TYPE (arg), as_combined_fn (fallback_fn), 0);
! 
!       exp = build_call_nofold_loc (EXPR_LOCATION (exp),
! 				   fallback_fndecl, 1, arg);
  
!       target = expand_call (exp, NULL_RTX, target == const0_rtx);
!       target = maybe_emit_group_store (target, TREE_TYPE (exp));
!       return convert_to_mode (mode, target, 0);
      }
  
    return expand_call (exp, target, target == const0_rtx);
--- 2927,2954 ----
  	 BUILT_IN_IROUND and if __builtin_iround is called directly, emit
  	 a call to lround in the hope that the target provides at least some
  	 C99 functions.  This should result in the best user experience for
! 	 not full C99 targets.
! 	 As scalar float conversions with same mode are useless in GIMPLE,
! 	 we can end up e.g. with _Float32 argument passed to float builtin,
! 	 try to get the type from the builtin prototype first.  */
!       tree fallback_fndecl = NULL_TREE;
!       if (tree argtypes = TYPE_ARG_TYPES (TREE_TYPE (fndecl)))
!         fallback_fndecl
!           = mathfn_built_in_1 (TREE_VALUE (argtypes),
! 			       as_combined_fn (fallback_fn), 0);
!       if (fallback_fndecl == NULL_TREE)
! 	fallback_fndecl
! 	  = mathfn_built_in_1 (TREE_TYPE (arg),
! 			       as_combined_fn (fallback_fn), 0);
!       if (fallback_fndecl)
! 	{
! 	  exp = build_call_nofold_loc (EXPR_LOCATION (exp),
! 				       fallback_fndecl, 1, arg);
  
! 	  target = expand_call (exp, NULL_RTX, target == const0_rtx);
! 	  target = maybe_emit_group_store (target, TREE_TYPE (exp));
! 	  return convert_to_mode (mode, target, 0);
! 	}
      }
  
    return expand_call (exp, target, target == const0_rtx);
diff -Nrcpad gcc-10.3.0/gcc/c/ChangeLog gcc-10.4.0/gcc/c/ChangeLog
*** gcc-10.3.0/gcc/c/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/c/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,70 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104711
+ 	* c-fold.c (c_fully_fold_internal): Don't emit
+ 	-Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS.
+ 	* c-typeck.c (build_binary_op): Likewise.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/103587
+ 	* c-parser.c (c_parser_balanced_token_sequence): For CPP_PRAGMA,
+ 	consume the pragma and silently skip to the pragma eol.
+ 
+ 2022-05-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* c-typeck.c (c_finish_omp_clauses): Accept float + complex
+ 	for || and && reductions.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/101176
+ 	* c-parser.c (c_parser_has_attribute_expression): Set source range for
+ 	the result.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/101171
+ 	* c-typeck.c (build_c_cast): Don't call note_integer_operands on
+ 	error_mark_node.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/100785
+ 	* c-typeck.c (c_mark_addressable): Diagnose trying to make
+ 	bit-fields addressable.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	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-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/c/c-decl.c gcc-10.4.0/gcc/c/c-decl.c
*** gcc-10.3.0/gcc/c/c-decl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/c/c-decl.c	Tue Jun 28 08:54:27 2022
*************** finish_decl (tree decl, location_t init_
*** 5320,5326 ****
  	  gcc_unreachable ();
  	}
  
!       if (DECL_INITIAL (decl))
  	TREE_TYPE (DECL_INITIAL (decl)) = type;
  
        relayout_decl (decl);
--- 5320,5326 ----
  	  gcc_unreachable ();
  	}
  
!       if (DECL_INITIAL (decl) && DECL_INITIAL (decl) != error_mark_node)
  	TREE_TYPE (DECL_INITIAL (decl)) = type;
  
        relayout_decl (decl);
diff -Nrcpad gcc-10.3.0/gcc/c/c-fold.c gcc-10.4.0/gcc/c/c-fold.c
*** gcc-10.3.0/gcc/c/c-fold.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/c/c-fold.c	Tue Jun 28 08:54:27 2022
*************** c_fully_fold_internal (tree expr, bool i
*** 382,387 ****
--- 382,388 ----
  	  && TREE_CODE (TREE_TYPE (orig_op0)) == INTEGER_TYPE
  	  && TREE_CODE (op0) == INTEGER_CST
  	  && c_inhibit_evaluation_warnings == 0
+ 	  && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (orig_op0))
  	  && tree_int_cst_sgn (op0) < 0)
  	warning_at (loc, OPT_Wshift_negative_value,
  		    "left shift of negative value");
diff -Nrcpad gcc-10.3.0/gcc/c/c-parser.c gcc-10.4.0/gcc/c/c-parser.c
*** gcc-10.3.0/gcc/c/c-parser.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/c/c-parser.c	Tue Jun 28 08:54:27 2022
*************** c_parser_balanced_token_sequence (c_pars
*** 4812,4817 ****
--- 4812,4822 ----
  	case CPP_EOF:
  	  return;
  
+ 	case CPP_PRAGMA:
+ 	  c_parser_consume_pragma (parser);
+ 	  c_parser_skip_to_pragma_eol (parser, false);
+ 	  break;
+ 
  	default:
  	  c_parser_consume_token (parser);
  	  break;
*************** c_parser_has_attribute_expression (c_par
*** 8459,8464 ****
--- 8464,8470 ----
  {
    gcc_assert (c_parser_next_token_is_keyword (parser,
  					      RID_BUILTIN_HAS_ATTRIBUTE));
+   location_t start = c_parser_peek_token (parser)->location;
    c_parser_consume_token (parser);
  
    c_inhibit_evaluation_warnings++;
*************** c_parser_has_attribute_expression (c_par
*** 8537,8542 ****
--- 8543,8549 ----
  
    parser->translate_strings_p = save_translate_strings_p;
  
+   location_t finish = c_parser_peek_token (parser)->location;
    if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
      c_parser_consume_token (parser);
    else
*************** c_parser_has_attribute_expression (c_par
*** 8565,8570 ****
--- 8572,8578 ----
    else
      result.value =  boolean_false_node;
  
+   set_c_expr_source_range (&result, start, finish);
    return result;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/c/c-typeck.c gcc-10.4.0/gcc/c/c-typeck.c
*** gcc-10.3.0/gcc/c/c-typeck.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/c/c-typeck.c	Tue Jun 28 08:54:27 2022
*************** c_mark_addressable (tree exp, bool array
*** 5017,5024 ****
  	    && TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE
  	    && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (x, 0))))
  	  return true;
! 	/* FALLTHRU */
        case COMPONENT_REF:
        case ADDR_EXPR:
        case ARRAY_REF:
        case REALPART_EXPR:
--- 5017,5033 ----
  	    && TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE
  	    && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (x, 0))))
  	  return true;
! 	x = TREE_OPERAND (x, 0);
! 	break;
! 
        case COMPONENT_REF:
+ 	if (DECL_C_BIT_FIELD (TREE_OPERAND (x, 1)))
+ 	  {
+ 	    error ("cannot take address of bit-field %qD",
+ 		   TREE_OPERAND (x, 1));
+ 	    return false;
+ 	  }
+ 	/* FALLTHRU */
        case ADDR_EXPR:
        case ARRAY_REF:
        case REALPART_EXPR:
*************** build_c_cast (location_t loc, tree type,
*** 6027,6032 ****
--- 6036,6042 ----
       return value reflects this.  */
    if (int_operands
        && INTEGRAL_TYPE_P (type)
+       && value != error_mark_node
        && !EXPR_INT_CONST_OPERANDS (value))
      value = note_integer_operands (value);
  
*************** build_binary_op (location_t location, en
*** 11994,12000 ****
  	{
  	  doing_shift = true;
  	  if (TREE_CODE (op0) == INTEGER_CST
! 	      && tree_int_cst_sgn (op0) < 0)
  	    {
  	      /* Don't reject a left shift of a negative value in a context
  		 where a constant expression is needed in C90.  */
--- 12004,12011 ----
  	{
  	  doing_shift = true;
  	  if (TREE_CODE (op0) == INTEGER_CST
! 	      && tree_int_cst_sgn (op0) < 0
! 	      && !TYPE_OVERFLOW_WRAPS (type0))
  	    {
  	      /* Don't reject a left shift of a negative value in a context
  		 where a constant expression is needed in C90.  */
*************** c_finish_omp_clauses (tree clauses, enum
*** 14047,14052 ****
--- 14058,14065 ----
  		case PLUS_EXPR:
  		case MULT_EXPR:
  		case MINUS_EXPR:
+ 		case TRUTH_ANDIF_EXPR:
+ 		case TRUTH_ORIF_EXPR:
  		  break;
  		case MIN_EXPR:
  		  if (TREE_CODE (type) == COMPLEX_TYPE)
*************** c_finish_omp_clauses (tree clauses, enum
*** 14065,14078 ****
  		case BIT_IOR_EXPR:
  		  r_name = "|";
  		  break;
- 		case TRUTH_ANDIF_EXPR:
- 		  if (FLOAT_TYPE_P (type))
- 		    r_name = "&&";
- 		  break;
- 		case TRUTH_ORIF_EXPR:
- 		  if (FLOAT_TYPE_P (type))
- 		    r_name = "||";
- 		  break;
  		default:
  		  gcc_unreachable ();
  		}
--- 14078,14083 ----
diff -Nrcpad gcc-10.3.0/gcc/c-family/ChangeLog gcc-10.4.0/gcc/c-family/ChangeLog
*** gcc-10.3.0/gcc/c-family/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/c-family/ChangeLog	Tue Jun 28 08:54:27 2022
***************
*** 1,3 ****
--- 1,90 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* c-opts.c (c_common_post_options): Default to
+ 	flag_objc_sjlj_exceptions = 1 only when flag_objc_abi < 2.
+ 
+ 2022-05-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2020-11-16  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/97854
+ 	* stub-objc.c: Include c-common.h to declare enum rid.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105186
+ 	* c-common.c (c_common_nodes_and_builtins): After registering __int%d
+ 	and __int%d__ builtin types, initialize corresponding ridpointers
+ 	entry.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104711
+ 	* c-opts.c (c_common_post_options): Don't enable
+ 	-Wshift-negative-value from -Wextra for C++20 or later.
+ 	* c-ubsan.c (ubsan_instrument_shift): Adjust comments.
+ 	* c-warn.c (maybe_warn_shift_overflow): Use TYPE_OVERFLOW_WRAPS
+ 	instead of TYPE_UNSIGNED.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104510
+ 	* c-common.c (shorten_compare): Convert original arguments to
+ 	the original *restype_ptr when mixing binary and decimal float.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/101537
+ 	PR c/103881
+ 	* c-warn.c (conversion_warning): Handle BIT_AND_EXPR, BIT_IOR_EXPR
+ 	and BIT_XOR_EXPR.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/64888
+ 	* c-omp.c (c_omp_predefined_variable): Return true also for
+ 	ubsan_create_data created artificial variables.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-01  Jakub Jelinek  <jakub@redhat.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR sanitizer/102515
+ 	* c-ubsan.c (ubsan_instrument_division): Check the right
+ 	flag_sanitize_recover bit, depending on which sanitization
+ 	is done.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/105304
+ 	* c-common.c (verify_tree) [restart]: Move up to before the
+ 	NULL test.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-common.c gcc-10.4.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-10.4.0/gcc/c-family/c-common.c	Tue Jun 28 08:54:27 2022
*************** verify_tree (tree x, struct tlist **pbef
*** 1838,1849 ****
    enum tree_code code;
    enum tree_code_class cl;
  
    /* X may be NULL if it is the operand of an empty statement expression
       ({ }).  */
    if (x == NULL)
      return;
  
-  restart:
    code = TREE_CODE (x);
    cl = TREE_CODE_CLASS (code);
  
--- 1838,1849 ----
    enum tree_code code;
    enum tree_code_class cl;
  
+  restart:
    /* X may be NULL if it is the operand of an empty statement expression
       ({ }).  */
    if (x == NULL)
      return;
  
    code = TREE_CODE (x);
    cl = TREE_CODE_CLASS (code);
  
*************** shorten_compare (location_t loc, tree *o
*** 2980,2986 ****
    else if (real1 && real2
  	   && (DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (primop0)))
  	       || DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (primop1)))))
!     return NULL_TREE;
  
    else if (real1 && real2
  	   && (TYPE_PRECISION (TREE_TYPE (primop0))
--- 2980,2990 ----
    else if (real1 && real2
  	   && (DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (primop0)))
  	       || DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (primop1)))))
!     {
!       type = *restype_ptr;
!       primop0 = op0;
!       primop1 = op1;
!     }
  
    else if (real1 && real2
  	   && (TYPE_PRECISION (TREE_TYPE (primop0))
*************** c_common_nodes_and_builtins (void)
*** 4027,4032 ****
--- 4031,4038 ----
        sprintf (name, "__int%d__", int_n_data[i].bitsize);
        record_builtin_type ((enum rid)(RID_FIRST_INT_N + i), name,
  			   int_n_trees[i].signed_type);
+       ridpointers[RID_FIRST_INT_N + i]
+ 	= DECL_NAME (TYPE_NAME (int_n_trees[i].signed_type));
  
        sprintf (name, "__int%d unsigned", int_n_data[i].bitsize);
        record_builtin_type (RID_MAX, name, int_n_trees[i].unsigned_type);
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-omp.c gcc-10.4.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-10.4.0/gcc/c-family/c-omp.c	Tue Jun 28 08:54:27 2022
*************** c_omp_predefined_variable (tree decl)
*** 2094,2106 ****
  {
    if (VAR_P (decl)
        && DECL_ARTIFICIAL (decl)
-       && TREE_READONLY (decl)
        && TREE_STATIC (decl)
!       && DECL_NAME (decl)
!       && (DECL_NAME (decl) == ridpointers[RID_C99_FUNCTION_NAME]
! 	  || DECL_NAME (decl) == ridpointers[RID_FUNCTION_NAME]
! 	  || DECL_NAME (decl) == ridpointers[RID_PRETTY_FUNCTION_NAME]))
!     return true;
    return false;
  }
  
--- 2094,2137 ----
  {
    if (VAR_P (decl)
        && DECL_ARTIFICIAL (decl)
        && TREE_STATIC (decl)
!       && DECL_NAME (decl))
!     {
!       if (TREE_READONLY (decl)
! 	  && (DECL_NAME (decl) == ridpointers[RID_C99_FUNCTION_NAME]
! 	      || DECL_NAME (decl) == ridpointers[RID_FUNCTION_NAME]
! 	      || DECL_NAME (decl) == ridpointers[RID_PRETTY_FUNCTION_NAME]))
! 	return true;
!       /* For UBSan handle the same also ubsan_create_data created
! 	 variables.  There is no magic flag for those, but user variables
! 	 shouldn't be DECL_ARTIFICIAL or have TYPE_ARTIFICIAL type with
! 	 such names.  */
!       if ((flag_sanitize & (SANITIZE_UNDEFINED
! 			    | SANITIZE_UNDEFINED_NONDEFAULT)) != 0
! 	  && DECL_IGNORED_P (decl)
! 	  && !TREE_READONLY (decl)
! 	  && TREE_CODE (DECL_NAME (decl)) == IDENTIFIER_NODE
! 	  && TREE_CODE (TREE_TYPE (decl)) == RECORD_TYPE
! 	  && TYPE_ARTIFICIAL (TREE_TYPE (decl))
! 	  && TYPE_NAME (TREE_TYPE (decl))
! 	  && TREE_CODE (TYPE_NAME (TREE_TYPE (decl))) == TYPE_DECL
! 	  && DECL_NAME (TYPE_NAME (TREE_TYPE (decl)))
! 	  && (TREE_CODE (DECL_NAME (TYPE_NAME (TREE_TYPE (decl))))
! 	      == IDENTIFIER_NODE))
! 	{
! 	  tree id1 = DECL_NAME (decl);
! 	  tree id2 = DECL_NAME (TYPE_NAME (TREE_TYPE (decl)));
! 	  if (IDENTIFIER_LENGTH (id1) >= sizeof ("ubsan_data") - 1
! 	      && IDENTIFIER_LENGTH (id2) >= sizeof ("__ubsan__data")
! 	      && !memcmp (IDENTIFIER_POINTER (id2), "__ubsan_",
! 			  sizeof ("__ubsan_") - 1)
! 	      && !memcmp (IDENTIFIER_POINTER (id2) + IDENTIFIER_LENGTH (id2)
! 			  - sizeof ("_data") + 1, "_data",
! 			  sizeof ("_data") - 1)
! 	      && strstr (IDENTIFIER_POINTER (id1), "ubsan_data"))
! 	    return true;
! 	}
!     }
    return false;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-opts.c gcc-10.4.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-10.4.0/gcc/c-family/c-opts.c	Tue Jun 28 08:54:27 2022
*************** c_common_post_options (const char **pfil
*** 840,848 ****
    else if (!flag_gnu89_inline && !flag_isoc99)
      error ("%<-fno-gnu89-inline%> is only supported in GNU99 or C99 mode");
  
!   /* Default to ObjC sjlj exception handling if NeXT runtime.  */
    if (flag_objc_sjlj_exceptions < 0)
!     flag_objc_sjlj_exceptions = flag_next_runtime;
    if (flag_objc_exceptions && !flag_objc_sjlj_exceptions)
      flag_exceptions = 1;
  
--- 840,848 ----
    else if (!flag_gnu89_inline && !flag_isoc99)
      error ("%<-fno-gnu89-inline%> is only supported in GNU99 or C99 mode");
  
!   /* Default to ObjC sjlj exception handling if NeXT runtime < v2.  */
    if (flag_objc_sjlj_exceptions < 0)
!     flag_objc_sjlj_exceptions = (flag_next_runtime && flag_objc_abi < 2);
    if (flag_objc_exceptions && !flag_objc_sjlj_exceptions)
      flag_exceptions = 1;
  
*************** c_common_post_options (const char **pfil
*** 913,922 ****
    if (warn_shift_overflow == -1)
      warn_shift_overflow = cxx_dialect >= cxx11 || flag_isoc99;
  
!   /* -Wshift-negative-value is enabled by -Wextra in C99 and C++11 modes.  */
    if (warn_shift_negative_value == -1)
      warn_shift_negative_value = (extra_warnings
! 				 && (cxx_dialect >= cxx11 || flag_isoc99));
  
    /* -Wregister is enabled by default in C++17.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set, warn_register,
--- 913,924 ----
    if (warn_shift_overflow == -1)
      warn_shift_overflow = cxx_dialect >= cxx11 || flag_isoc99;
  
!   /* -Wshift-negative-value is enabled by -Wextra in C99 and C++11 to C++17
!      modes.  */
    if (warn_shift_negative_value == -1)
      warn_shift_negative_value = (extra_warnings
! 				 && (cxx_dialect >= cxx11 || flag_isoc99)
! 				 && cxx_dialect < cxx2a);
  
    /* -Wregister is enabled by default in C++17.  */
    SET_OPTION_IF_UNSET (&global_options, &global_options_set, warn_register,
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-ubsan.c gcc-10.4.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-10.4.0/gcc/c-family/c-ubsan.c	Tue Jun 28 08:54:27 2022
*************** ubsan_instrument_division (location_t lo
*** 41,46 ****
--- 41,47 ----
  {
    tree t, tt;
    tree type = TREE_TYPE (op0);
+   enum sanitize_code flag = SANITIZE_DIVIDE;
  
    /* At this point both operands should have the same type,
       because they are already converted to RESULT_TYPE.
*************** ubsan_instrument_division (location_t lo
*** 58,65 ****
  		     op1, build_int_cst (type, 0));
    else if (TREE_CODE (type) == REAL_TYPE
  	   && sanitize_flags_p (SANITIZE_FLOAT_DIVIDE))
!     t = fold_build2 (EQ_EXPR, boolean_type_node,
! 		     op1, build_real (type, dconst0));
    else
      return NULL_TREE;
  
--- 59,69 ----
  		     op1, build_int_cst (type, 0));
    else if (TREE_CODE (type) == REAL_TYPE
  	   && sanitize_flags_p (SANITIZE_FLOAT_DIVIDE))
!     {
!       t = fold_build2 (EQ_EXPR, boolean_type_node,
! 		       op1, build_real (type, dconst0));
!       flag = SANITIZE_FLOAT_DIVIDE;
!     }
    else
      return NULL_TREE;
  
*************** ubsan_instrument_division (location_t lo
*** 95,101 ****
  				     NULL_TREE);
        data = build_fold_addr_expr_loc (loc, data);
        enum built_in_function bcode
! 	= (flag_sanitize_recover & SANITIZE_DIVIDE)
  	  ? BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW
  	  : BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT;
        tt = builtin_decl_explicit (bcode);
--- 99,105 ----
  				     NULL_TREE);
        data = build_fold_addr_expr_loc (loc, data);
        enum built_in_function bcode
! 	= (flag_sanitize_recover & flag)
  	  ? BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW
  	  : BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT;
        tt = builtin_decl_explicit (bcode);
*************** ubsan_instrument_shift (location_t loc,
*** 142,148 ****
        || cxx_dialect >= cxx2a)
      ;
  
!   /* For signed x << y, in C99/C11, the following:
       (unsigned) x >> (uprecm1 - y)
       if non-zero, is undefined.  */
    else if (code == LSHIFT_EXPR && flag_isoc99 && cxx_dialect < cxx11)
--- 146,152 ----
        || cxx_dialect >= cxx2a)
      ;
  
!   /* For signed x << y, in C99 and later, the following:
       (unsigned) x >> (uprecm1 - y)
       if non-zero, is undefined.  */
    else if (code == LSHIFT_EXPR && flag_isoc99 && cxx_dialect < cxx11)
*************** ubsan_instrument_shift (location_t loc,
*** 155,161 ****
  			build_int_cst (TREE_TYPE (tt), 0));
      }
  
!   /* For signed x << y, in C++11 and later, the following:
       x < 0 || ((unsigned) x >> (uprecm1 - y))
       if > 1, is undefined.  */
    else if (code == LSHIFT_EXPR && cxx_dialect >= cxx11)
--- 159,165 ----
  			build_int_cst (TREE_TYPE (tt), 0));
      }
  
!   /* For signed x << y, in C++11 to C++17, the following:
       x < 0 || ((unsigned) x >> (uprecm1 - y))
       if > 1, is undefined.  */
    else if (code == LSHIFT_EXPR && cxx_dialect >= cxx11)
diff -Nrcpad gcc-10.3.0/gcc/c-family/c-warn.c gcc-10.4.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-10.4.0/gcc/c-family/c-warn.c	Tue Jun 28 08:54:27 2022
*************** conversion_warning (location_t loc, tree
*** 1302,1307 ****
--- 1302,1335 ----
  		|| conversion_warning (loc, type, op2, result));
        }
  
+     case BIT_AND_EXPR:
+       if (TREE_CODE (expr_type) == INTEGER_TYPE
+ 	  && TREE_CODE (type) == INTEGER_TYPE)
+ 	for (int i = 0; i < 2; ++i)
+ 	  {
+ 	    tree op = TREE_OPERAND (expr, i);
+ 	    if (TREE_CODE (op) != INTEGER_CST)
+ 	      continue;
+ 
+ 	    /* If one of the operands is a non-negative constant
+ 	       that fits in the target type, then the type of the
+ 	       other operand does not matter.  */
+ 	    if (int_fits_type_p (op, c_common_signed_type (type))
+ 		&& int_fits_type_p (op, c_common_unsigned_type (type)))
+ 	      return false;
+ 
+ 	    /* If constant is unsigned and fits in the target
+ 	       type, then the result will also fit.  */
+ 	    if (TYPE_UNSIGNED (TREE_TYPE (op)) && int_fits_type_p (op, type))
+ 	      return false;
+ 	  }
+       /* FALLTHRU */
+     case BIT_IOR_EXPR:
+     case BIT_XOR_EXPR:
+       return (conversion_warning (loc, type, TREE_OPERAND (expr, 0), result)
+ 	      || conversion_warning (loc, type, TREE_OPERAND (expr, 1),
+ 				     result));
+ 
      default_:
      default:
        conversion_kind = unsafe_conversion_p (type, expr, result, true);
*************** 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)
--- 2615,2621 ----
    unsigned int prec0 = TYPE_PRECISION (type0);
  
    /* Left-hand operand must be signed.  */
!   if (TYPE_OVERFLOW_WRAPS (type0) || cxx_dialect >= cxx2a)
      return false;
  
    unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), SIGNED)
diff -Nrcpad gcc-10.3.0/gcc/c-family/stub-objc.c gcc-10.4.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-10.4.0/gcc/c-family/stub-objc.c	Tue Jun 28 08:54:27 2022
*************** 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
diff -Nrcpad gcc-10.3.0/gcc/calls.c gcc-10.4.0/gcc/calls.c
*** gcc-10.3.0/gcc/calls.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/calls.c	Tue Jun 28 08:54:27 2022
*************** maybe_warn_rdwr_sizes (rdwr_map *rwm, tr
*** 2112,2117 ****
--- 2112,2122 ----
  	}
        else
  	{
+ 	  /* If the size cannot be determined clear it to keep it from
+ 	     being taken as real (and excessive).  */
+ 	  if (objsize && integer_all_onesp (objsize))
+ 	    objsize = NULL_TREE;
+ 
  	  /* For read-only and read-write attributes also set the source
  	     size.  */
  	  srcsize = objsize;
diff -Nrcpad gcc-10.3.0/gcc/cfganal.c gcc-10.4.0/gcc/cfganal.c
*** gcc-10.3.0/gcc/cfganal.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cfganal.c	Tue Jun 28 08:54:27 2022
*************** 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-10.4.0/gcc/cfganal.h
*** gcc-10.3.0/gcc/cfganal.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cfganal.h	Tue Jun 28 08:54:27 2022
*************** 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/cfgcleanup.c gcc-10.4.0/gcc/cfgcleanup.c
*** gcc-10.3.0/gcc/cfgcleanup.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cfgcleanup.c	Tue Jun 28 08:54:27 2022
*************** outgoing_edges_match (int mode, basic_bl
*** 1885,1892 ****
  
    /* Ensure the same EH region.  */
    {
!     rtx n1 = find_reg_note (BB_END (bb1), REG_EH_REGION, 0);
!     rtx n2 = find_reg_note (BB_END (bb2), REG_EH_REGION, 0);
  
      if (!n1 && n2)
        return false;
--- 1885,1892 ----
  
    /* Ensure the same EH region.  */
    {
!     rtx n1 = find_reg_note (last1, REG_EH_REGION, 0);
!     rtx n2 = find_reg_note (last2, REG_EH_REGION, 0);
  
      if (!n1 && n2)
        return false;
diff -Nrcpad gcc-10.3.0/gcc/cfgexpand.c gcc-10.4.0/gcc/cfgexpand.c
*** gcc-10.3.0/gcc/cfgexpand.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cfgexpand.c	Tue Jun 28 08:54:27 2022
*************** expand_asm_stmt (gasm *stmt)
*** 2939,2944 ****
--- 2939,2945 ----
    unsigned ninputs = gimple_asm_ninputs (stmt);
    unsigned nlabels = gimple_asm_nlabels (stmt);
    unsigned i;
+   bool error_seen = false;
  
    /* ??? Diagnose during gimplification?  */
    if (ninputs + noutputs + nlabels > MAX_RECOG_OPERANDS)
*************** expand_asm_stmt (gasm *stmt)
*** 2997,3002 ****
--- 2998,3004 ----
  		{
  		  /* ??? Diagnose during gimplification?  */
  		  error ("unknown register name %qs in %<asm%>", regname);
+ 		  error_seen = true;
  		}
  	      else if (j == -4)
  		{
*************** expand_asm_stmt (gasm *stmt)
*** 3059,3065 ****
  		&& REG_P (DECL_RTL (output_tvec[j]))
  		&& HARD_REGISTER_P (DECL_RTL (output_tvec[j]))
  		&& output_hregno == REGNO (DECL_RTL (output_tvec[j])))
! 	      error ("invalid hard register usage between output operands");
  
  	  /* Verify matching constraint operands use the same hard register
  	     and that the non-matching constraint operands do not use the same
--- 3061,3070 ----
  		&& REG_P (DECL_RTL (output_tvec[j]))
  		&& HARD_REGISTER_P (DECL_RTL (output_tvec[j]))
  		&& output_hregno == REGNO (DECL_RTL (output_tvec[j])))
! 	      {
! 		error ("invalid hard register usage between output operands");
! 		error_seen = true;
! 	      }
  
  	  /* Verify matching constraint operands use the same hard register
  	     and that the non-matching constraint operands do not use the same
*************** expand_asm_stmt (gasm *stmt)
*** 3082,3094 ****
  		  }
  		if (i == match
  		    && output_hregno != input_hregno)
! 		  error ("invalid hard register usage between output operand "
! 			 "and matching constraint operand");
  		else if (early_clobber_p
  			 && i != match
  			 && output_hregno == input_hregno)
! 		  error ("invalid hard register usage between earlyclobber "
! 			 "operand and input operand");
  	      }
  	}
  
--- 3087,3105 ----
  		  }
  		if (i == match
  		    && output_hregno != input_hregno)
! 		  {
! 		    error ("invalid hard register usage between output "
! 			   "operand and matching constraint operand");
! 		    error_seen = true;
! 		  }
  		else if (early_clobber_p
  			 && i != match
  			 && output_hregno == input_hregno)
! 		  {
! 		    error ("invalid hard register usage between "
! 			   "earlyclobber operand and input operand");
! 		    error_seen = true;
! 		  }
  	      }
  	}
  
*************** expand_asm_stmt (gasm *stmt)
*** 3156,3162 ****
  		    && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type)))
  	  || ! allows_reg
  	  || is_inout
! 	  || TREE_ADDRESSABLE (type))
  	{
  	  op = expand_expr (val, NULL_RTX, VOIDmode,
  			    !allows_reg ? EXPAND_MEMORY : EXPAND_WRITE);
--- 3167,3175 ----
  		    && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type)))
  	  || ! allows_reg
  	  || is_inout
! 	  || TREE_ADDRESSABLE (type)
! 	  || (!tree_fits_poly_int64_p (TYPE_SIZE (type))
! 	      && !known_size_p (max_int_size_in_bytes (type))))
  	{
  	  op = expand_expr (val, NULL_RTX, VOIDmode,
  			    !allows_reg ? EXPAND_MEMORY : EXPAND_WRITE);
*************** expand_asm_stmt (gasm *stmt)
*** 3164,3170 ****
  	    op = validize_mem (op);
  
  	  if (! allows_reg && !MEM_P (op))
! 	    error ("output number %d not directly addressable", i);
  	  if ((! allows_mem && MEM_P (op) && GET_MODE (op) != BLKmode)
  	      || GET_CODE (op) == CONCAT)
  	    {
--- 3177,3186 ----
  	    op = validize_mem (op);
  
  	  if (! allows_reg && !MEM_P (op))
! 	    {
! 	      error ("output number %d not directly addressable", i);
! 	      error_seen = true;
! 	    }
  	  if ((! allows_mem && MEM_P (op) && GET_MODE (op) != BLKmode)
  	      || GET_CODE (op) == CONCAT)
  	    {
*************** expand_asm_stmt (gasm *stmt)
*** 3204,3209 ****
--- 3220,3238 ----
  	inout_opnum.safe_push (i);
      }
  
+   const char *str = gimple_asm_string (stmt);
+   if (error_seen)
+     {
+       ninputs = 0;
+       noutputs = 0;
+       inout_opnum.truncate (0);
+       output_rvec.truncate (0);
+       clobber_rvec.truncate (0);
+       constraints.truncate (0);
+       CLEAR_HARD_REG_SET (clobbered_regs);
+       str = "";
+     }
+ 
    auto_vec<rtx, MAX_RECOG_OPERANDS> input_rvec;
    auto_vec<machine_mode, MAX_RECOG_OPERANDS> input_mode;
  
*************** expand_asm_stmt (gasm *stmt)
*** 3262,3268 ****
      }
  
    /* For in-out operands, copy output rtx to input rtx.  */
!   unsigned ninout = inout_opnum.length();
    for (i = 0; i < ninout; i++)
      {
        int j = inout_opnum[i];
--- 3291,3297 ----
      }
  
    /* For in-out operands, copy output rtx to input rtx.  */
!   unsigned ninout = inout_opnum.length ();
    for (i = 0; i < ninout; i++)
      {
        int j = inout_opnum[i];
*************** expand_asm_stmt (gasm *stmt)
*** 3316,3322 ****
  
    rtx body = gen_rtx_ASM_OPERANDS ((noutputs == 0 ? VOIDmode
  				    : GET_MODE (output_rvec[0])),
! 				   ggc_strdup (gimple_asm_string (stmt)),
  				   "", 0, argvec, constraintvec,
  				   labelvec, locus);
    MEM_VOLATILE_P (body) = gimple_asm_volatile_p (stmt);
--- 3345,3351 ----
  
    rtx body = gen_rtx_ASM_OPERANDS ((noutputs == 0 ? VOIDmode
  				    : GET_MODE (output_rvec[0])),
! 				   ggc_strdup (str),
  				   "", 0, argvec, constraintvec,
  				   labelvec, locus);
    MEM_VOLATILE_P (body) = gimple_asm_volatile_p (stmt);
*************** expand_debug_expr (tree exp)
*** 4352,4358 ****
        op0 = DECL_RTL_IF_SET (exp);
  
        if (op0)
! 	return op0;
  
        op0 = gen_rtx_DEBUG_EXPR (mode);
        DEBUG_EXPR_TREE_DECL (op0) = exp;
--- 4381,4392 ----
        op0 = DECL_RTL_IF_SET (exp);
  
        if (op0)
! 	{
! 	  if (GET_MODE (op0) != mode)
! 	    gcc_assert (VECTOR_TYPE_P (TREE_TYPE (exp)));
! 	  else
! 	    return op0;
! 	}
  
        op0 = gen_rtx_DEBUG_EXPR (mode);
        DEBUG_EXPR_TREE_DECL (op0) = exp;
diff -Nrcpad gcc-10.3.0/gcc/cfgloopmanip.c gcc-10.4.0/gcc/cfgloopmanip.c
*** gcc-10.3.0/gcc/cfgloopmanip.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cfgloopmanip.c	Tue Jun 28 08:54:27 2022
*************** loop_version (class loop *loop,
*** 1734,1739 ****
--- 1734,1740 ----
  		   then_scale, else_scale);
  
    copy_loop_info (loop, nloop);
+   set_loop_copy (loop, nloop);
  
    /* loopify redirected latch_edge. Update its PENDING_STMTS.  */
    lv_flush_pending_stmts (latch_edge);
diff -Nrcpad gcc-10.3.0/gcc/cfgrtl.c gcc-10.4.0/gcc/cfgrtl.c
*** gcc-10.3.0/gcc/cfgrtl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cfgrtl.c	Tue Jun 28 08:54:27 2022
*************** delete_insn_and_edges (rtx_insn *insn)
*** 230,236 ****
  {
    bool purge = false;
  
!   if (INSN_P (insn) && BLOCK_FOR_INSN (insn))
      {
        basic_block bb = BLOCK_FOR_INSN (insn);
        if (BB_END (bb) == insn)
--- 230,236 ----
  {
    bool purge = false;
  
!   if (NONDEBUG_INSN_P (insn) && BLOCK_FOR_INSN (insn))
      {
        basic_block bb = BLOCK_FOR_INSN (insn);
        if (BB_END (bb) == insn)
diff -Nrcpad gcc-10.3.0/gcc/collect2.c gcc-10.4.0/gcc/collect2.c
*** gcc-10.3.0/gcc/collect2.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/collect2.c	Tue Jun 28 08:54:27 2022
*************** is_lto_object_file (const char *prog_nam
*** 2301,2310 ****
  							LTO_SEGMENT_NAME,
  							&errmsg, &err);
    if (!inobj)
!     return false;
  
    errmsg = simple_object_find_sections (inobj, has_lto_section,
  					(void *) &found, &err);
    if (! errmsg && found)
      return true;
  
--- 2301,2315 ----
  							LTO_SEGMENT_NAME,
  							&errmsg, &err);
    if (!inobj)
!     {
!       close (infd);
!       return false;
!     }
  
    errmsg = simple_object_find_sections (inobj, has_lto_section,
  					(void *) &found, &err);
+   simple_object_release_read (inobj);
+   close (infd);
    if (! errmsg && found)
      return true;
  
*************** process_args (int *argcp, char **argv) {
*** 3005,3019 ****
  
  static void
  do_dsymutil (const char *output_file) {
!   const char *dsymutil = DSYMUTIL + 1;
    struct pex_obj *pex;
!   char **real_argv = XCNEWVEC (char *, 3);
    const char ** argv = CONST_CAST2 (const char **, char **,
  				    real_argv);
  
    argv[0] = dsymutil;
    argv[1] = output_file;
!   argv[2] = (char *) 0;
  
    pex = collect_execute (dsymutil, real_argv, NULL, NULL,
  			 PEX_LAST | PEX_SEARCH, false);
--- 3010,3058 ----
  
  static void
  do_dsymutil (const char *output_file) {
!   const char *dsymutil = 0;
    struct pex_obj *pex;
!   char **real_argv = XCNEWVEC (char *, verbose ? 4 : 3);
    const char ** argv = CONST_CAST2 (const char **, char **,
  				    real_argv);
+ /* For cross-builds search the PATH using target-qualified name if we
+    have not already found a suitable dsymutil.  In practice, all modern
+    versions of dsymutil handle all supported archs, however the approach
+    here is consistent with the way other installations work (and one can
+    always symlink a multitarget dsymutil with a target-specific name).  */
+   const char *dsname = "dsymutil";
+ #ifdef CROSS_DIRECTORY_STRUCTURE
+   const char *qname = concat (target_machine, "-", dsname, NULL);
+ #else
+   const char *qname = dsname;
+ #endif
+ #ifdef DEFAULT_DSYMUTIL
+   /* Configured default takes priority.  */
+   if (dsymutil == 0 && access (DEFAULT_DSYMUTIL, X_OK) == 0)
+     dsymutil = DEFAULT_DSYMUTIL;
+   if (dsymutil == 0)
+ #endif
+ #ifdef DSYMUTIL
+   /* Followed by one supplied in the target header, somewhat like the
+      REAL_XX_NAME used elsewhere.  */
+     dsymutil = find_a_file (&cpath, DSYMUTIL, X_OK);
+   if (dsymutil == 0)
+     dsymutil = find_a_file (&path, DSYMUTIL, X_OK);
+   if (dsymutil == 0)
+ #endif
+     dsymutil = find_a_file (&cpath, dsname, X_OK);
+   if (dsymutil == 0)
+     dsymutil = find_a_file (&path, qname, X_OK);
  
    argv[0] = dsymutil;
    argv[1] = output_file;
!   if (verbose)
!     {
!       argv[2] = "-v";
!       argv[3] = (char *) 0;
!     }
!   else
!     argv[2] = (char *) 0;
  
    pex = collect_execute (dsymutil, real_argv, NULL, NULL,
  			 PEX_LAST | PEX_SEARCH, false);
diff -Nrcpad gcc-10.3.0/gcc/combine.c gcc-10.4.0/gcc/combine.c
*** gcc-10.3.0/gcc/combine.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/combine.c	Tue Jun 28 08:54:27 2022
*************** struct undo
*** 396,402 ****
    struct undo *next;
    enum undo_kind kind;
    union { rtx r; int i; machine_mode m; struct insn_link *l; } old_contents;
!   union { rtx *r; int *i; struct insn_link **l; } where;
  };
  
  /* Record a bunch of changes to be undone, up to MAX_UNDO of them.
--- 396,402 ----
    struct undo *next;
    enum undo_kind kind;
    union { rtx r; int i; machine_mode m; struct insn_link *l; } old_contents;
!   union { rtx *r; int *i; int regno; struct insn_link **l; } where;
  };
  
  /* Record a bunch of changes to be undone, up to MAX_UNDO of them.
*************** do_SUBST_INT (int *into, int newval)
*** 792,801 ****
     well.  */
  
  static void
! do_SUBST_MODE (rtx *into, machine_mode newval)
  {
    struct undo *buf;
!   machine_mode oldval = GET_MODE (*into);
  
    if (oldval == newval)
      return;
--- 792,802 ----
     well.  */
  
  static void
! subst_mode (int regno, machine_mode newval)
  {
    struct undo *buf;
!   rtx reg = regno_reg_rtx[regno];
!   machine_mode oldval = GET_MODE (reg);
  
    if (oldval == newval)
      return;
*************** do_SUBST_MODE (rtx *into, machine_mode n
*** 806,820 ****
      buf = XNEW (struct undo);
  
    buf->kind = UNDO_MODE;
!   buf->where.r = into;
    buf->old_contents.m = oldval;
!   adjust_reg_mode (*into, newval);
  
    buf->next = undobuf.undos, undobuf.undos = buf;
  }
  
- #define SUBST_MODE(INTO, NEWVAL)  do_SUBST_MODE (&(INTO), (NEWVAL))
- 
  /* Similar to SUBST, but NEWVAL is a LOG_LINKS expression.  */
  
  static void
--- 807,819 ----
      buf = XNEW (struct undo);
  
    buf->kind = UNDO_MODE;
!   buf->where.regno = regno;
    buf->old_contents.m = oldval;
!   adjust_reg_mode (reg, newval);
  
    buf->next = undobuf.undos, undobuf.undos = buf;
  }
  
  /* Similar to SUBST, but NEWVAL is a LOG_LINKS expression.  */
  
  static void
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 3214,3219 ****
--- 3213,3228 ----
        return 0;
      }
  
+   /* We cannot safely duplicate volatile references in any case.  */
+ 
+   if ((added_sets_2 && volatile_refs_p (PATTERN (i2)))
+       || (added_sets_1 && volatile_refs_p (PATTERN (i1)))
+       || (added_sets_0 && volatile_refs_p (PATTERN (i0))))
+     {
+       undo_all ();
+       return 0;
+     }
+ 
    /* Count how many auto_inc expressions there were in the original insns;
       we need to have the same number in the resulting patterns.  */
  
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 3326,3332 ****
  		    newpat_dest = gen_rtx_REG (compare_mode, regno);
  		  else
  		    {
! 		      SUBST_MODE (regno_reg_rtx[regno], compare_mode);
  		      newpat_dest = regno_reg_rtx[regno];
  		    }
  		}
--- 3335,3341 ----
  		    newpat_dest = gen_rtx_REG (compare_mode, regno);
  		  else
  		    {
! 		      subst_mode (regno, compare_mode);
  		      newpat_dest = regno_reg_rtx[regno];
  		    }
  		}
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 3716,3722 ****
  		ni2dest = gen_rtx_REG (new_mode, REGNO (i2dest));
  	      else
  		{
! 		  SUBST_MODE (regno_reg_rtx[REGNO (i2dest)], new_mode);
  		  ni2dest = regno_reg_rtx[REGNO (i2dest)];
  		}
  
--- 3725,3731 ----
  		ni2dest = gen_rtx_REG (new_mode, REGNO (i2dest));
  	      else
  		{
! 		  subst_mode (REGNO (i2dest), new_mode);
  		  ni2dest = regno_reg_rtx[REGNO (i2dest)];
  		}
  
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 3853,3859 ****
  		newdest = gen_rtx_REG (split_mode, REGNO (i2dest));
  	      else
  		{
! 		  SUBST_MODE (regno_reg_rtx[REGNO (i2dest)], split_mode);
  		  newdest = regno_reg_rtx[REGNO (i2dest)];
  		}
  	    }
--- 3862,3868 ----
  		newdest = gen_rtx_REG (split_mode, REGNO (i2dest));
  	      else
  		{
! 		  subst_mode (REGNO (i2dest), split_mode);
  		  newdest = regno_reg_rtx[REGNO (i2dest)];
  		}
  	    }
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 4221,4227 ****
        for (undo = undobuf.undos; undo; undo = undo->next)
  	if (undo->kind == UNDO_MODE)
  	  {
! 	    rtx reg = *undo->where.r;
  	    machine_mode new_mode = GET_MODE (reg);
  	    machine_mode old_mode = undo->old_contents.m;
  
--- 4230,4236 ----
        for (undo = undobuf.undos; undo; undo = undo->next)
  	if (undo->kind == UNDO_MODE)
  	  {
! 	    rtx reg = regno_reg_rtx[undo->where.regno];
  	    machine_mode new_mode = GET_MODE (reg);
  	    machine_mode old_mode = undo->old_contents.m;
  
*************** try_combine (rtx_insn *i3, rtx_insn *i2,
*** 4362,4371 ****
  	  for (rtx_insn *insn = NEXT_INSN (i3);
  	       !done
  	       && insn
! 	       && NONDEBUG_INSN_P (insn)
  	       && BLOCK_FOR_INSN (insn) == this_basic_block;
  	       insn = NEXT_INSN (insn))
  	    {
  	      struct insn_link *link;
  	      FOR_EACH_LOG_LINK (link, insn)
  		if (link->insn == i3 && link->regno == regno)
--- 4371,4382 ----
  	  for (rtx_insn *insn = NEXT_INSN (i3);
  	       !done
  	       && insn
! 	       && INSN_P (insn)
  	       && BLOCK_FOR_INSN (insn) == this_basic_block;
  	       insn = NEXT_INSN (insn))
  	    {
+ 	      if (DEBUG_INSN_P (insn))
+ 		continue;
  	      struct insn_link *link;
  	      FOR_EACH_LOG_LINK (link, insn)
  		if (link->insn == i3 && link->regno == regno)
*************** undo_to_marker (void *marker)
*** 4892,4898 ****
  	  *undo->where.i = undo->old_contents.i;
  	  break;
  	case UNDO_MODE:
! 	  adjust_reg_mode (*undo->where.r, undo->old_contents.m);
  	  break;
  	case UNDO_LINKS:
  	  *undo->where.l = undo->old_contents.l;
--- 4903,4910 ----
  	  *undo->where.i = undo->old_contents.i;
  	  break;
  	case UNDO_MODE:
! 	  adjust_reg_mode (regno_reg_rtx[undo->where.regno],
! 			   undo->old_contents.m);
  	  break;
  	case UNDO_LINKS:
  	  *undo->where.l = undo->old_contents.l;
*************** subst (rtx x, rtx from, rtx to, int in_d
*** 5694,5699 ****
--- 5706,5717 ----
  		  if (!x)
  		    return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
  		}
+ 	      /* CONST_INTs shouldn't be substituted into PRE_DEC, PRE_MODIFY
+ 		 etc. arguments, otherwise we can ICE before trying to recog
+ 		 it.  See PR104446.  */
+ 	      else if (CONST_SCALAR_INT_P (new_rtx)
+ 		       && GET_RTX_CLASS (GET_CODE (x)) == RTX_AUTOINC)
+ 		return gen_rtx_CLOBBER (VOIDmode, const0_rtx);
  	      else
  		SUBST (XEXP (x, i), new_rtx);
  	    }
*************** simplify_set (rtx x)
*** 6961,6967 ****
  		new_dest = gen_rtx_REG (compare_mode, regno);
  	      else
  		{
! 		  SUBST_MODE (regno_reg_rtx[regno], compare_mode);
  		  new_dest = regno_reg_rtx[regno];
  		}
  
--- 6979,6985 ----
  		new_dest = gen_rtx_REG (compare_mode, regno);
  	      else
  		{
! 		  subst_mode (regno, compare_mode);
  		  new_dest = regno_reg_rtx[regno];
  		}
  
*************** 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;
--- 7462,7476 ----
  				  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;
*************** 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
--- 10192,10198 ----
    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
*** 14378,14383 ****
--- 14400,14410 ----
  	     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/config/arm/arm-common.c gcc-10.4.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-10.4.0/gcc/common/config/arm/arm-common.c	Tue Jun 28 08:54:27 2022
*************** public:
*** 590,598 ****
     The options array consists of couplets of information where the
     first item in each couplet is the string describing which option
     name was selected (arch, cpu, fpu) and the second is the value
!    passed for that option.  */
! const char *
! arm_canon_arch_option (int argc, const char **argv)
  {
    const char *arch = NULL;
    const char *cpu = NULL;
--- 590,604 ----
     The options array consists of couplets of information where the
     first item in each couplet is the string describing which option
     name was selected (arch, cpu, fpu) and the second is the value
!    passed for that option.
! 
!    arch_for_multilib is boolean variable taking value true or false.
!    arch_for_multilib is false when the canonical representation is for -march
!    option and it is true when canonical representation is for -mlibarch option.
!    On passing arch_for_multilib true the canonical string generated will be
!    without the compiler options which are not required for multilib linking.  */
! static const char *
! arm_canon_arch_option_1 (int argc, const char **argv, bool arch_for_multilib)
  {
    const char *arch = NULL;
    const char *cpu = NULL;
*************** arm_canon_arch_option (int argc, const c
*** 657,664 ****
    /* First build up a bitmap describing the target architecture.  */
    if (arch)
      {
!       selected_arch = arm_parse_arch_option_name (all_architectures,
! 						  "-march", arch);
  
        if (selected_arch == NULL)
  	return "";
--- 663,670 ----
    /* First build up a bitmap describing the target architecture.  */
    if (arch)
      {
!       selected_arch = arm_parse_arch_option_name (all_architectures, "-march",
! 						  arch, !arch_for_multilib);
  
        if (selected_arch == NULL)
  	return "";
*************** arm_canon_arch_option (int argc, const c
*** 666,671 ****
--- 672,686 ----
        arm_initialize_isa (target_isa, selected_arch->common.isa_bits);
        arm_parse_option_features (target_isa, &selected_arch->common,
  				 strchr (arch, '+'));
+       if (arch_for_multilib)
+ 	{
+ 	  const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB,
+ 						     isa_nobit};
+ 	  sbitmap isa_bits = sbitmap_alloc (isa_num_bits);
+ 	  arm_initialize_isa (isa_bits, removable_bits);
+ 	  bitmap_and_compl (target_isa, target_isa, isa_bits);
+ 	}
+ 
        if (fpu && strcmp (fpu, "auto") != 0)
  	{
  	  /* We assume that architectures do not have any FPU bits
*************** arm_canon_arch_option (int argc, const c
*** 682,688 ****
    else if (cpu)
      {
        const cpu_option *selected_cpu
! 	= arm_parse_cpu_option_name (all_cores, "-mcpu", cpu);
  
        if (selected_cpu == NULL)
  	return "";
--- 697,704 ----
    else if (cpu)
      {
        const cpu_option *selected_cpu
! 	= arm_parse_cpu_option_name (all_cores, "-mcpu", cpu,
! 				     !arch_for_multilib);
  
        if (selected_cpu == NULL)
  	return "";
*************** arm_asm_auto_mfpu (int argc, const char
*** 1032,1034 ****
--- 1048,1069 ----
  #define TARGET_EXCEPT_UNWIND_INFO  arm_except_unwind_info
  
  struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
+ 
+ /* Returns a canonical representation of the -march option from the current
+    -march string (if given) and other options on the command line that might
+    affect the architecture.  */
+ const char *
+ arm_canon_arch_option (int argc, const char **argv)
+ {
+   return arm_canon_arch_option_1 (argc, argv, false);
+ }
+ 
+ /* Returns a canonical representation of the -mlibarch option from the current
+    -march string (if given) and other options on the command line that might
+    affect the architecture after removing the compiler extension options which
+    are not required for multilib linking.  */
+ const char *
+ arm_canon_arch_multilib_option (int argc, const char **argv)
+ {
+   return arm_canon_arch_option_1 (argc, argv, true);
+ }
diff -Nrcpad gcc-10.3.0/gcc/common/config/rs6000/rs6000-common.c gcc-10.4.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-10.4.0/gcc/common/config/rs6000/rs6000-common.c	Tue Jun 28 08:54:27 2022
*************** rs6000_handle_option (struct gcc_options
*** 227,232 ****
--- 227,242 ----
  	}
        break;
  
+     case OPT_mabi_ibmlongdouble:
+     case OPT_mabi_ieeelongdouble:
+       if (opts->x_rs6000_long_double_type_size == 64)
+ 	{
+ 	  error_at (loc, "option %<%s%> requires %<-mlong-double-128%>",
+ 		    decoded->orig_option_with_args_text);
+ 	  return true;
+ 	}
+       break;
+ 
      case OPT_mrecip:
        opts->x_rs6000_recip_name = (value) ? "default" : "none";
        break;
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-bti-insert.c gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-bti-insert.c	Tue Jun 28 08:54:27 2022
*************** aarch64_pac_insn_p (rtx x)
*** 120,125 ****
--- 120,136 ----
    return false;
  }
  
+ /* Check if INSN is a BTI J insn.  */
+ static bool
+ aarch64_bti_j_insn_p (rtx_insn *insn)
+ {
+   if (!insn || !INSN_P (insn))
+     return false;
+ 
+   rtx pat = PATTERN (insn);
+   return GET_CODE (pat) == UNSPEC_VOLATILE && XINT (pat, 1) == UNSPECV_BTI_J;
+ }
+ 
  /* Insert the BTI instruction.  */
  /* This is implemented as a late RTL pass that runs before branch
     shortening and does the following.  */
*************** rest_of_insert_bti (void)
*** 165,170 ****
--- 176,185 ----
  		  for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j)
  		    {
  		      label = as_a <rtx_insn *> (XEXP (RTVEC_ELT (vec, j), 0));
+ 		      rtx_insn *next = next_nonnote_nondebug_insn (label);
+ 		      if (aarch64_bti_j_insn_p (next))
+ 			continue;
+ 
  		      bti_insn = gen_bti_j ();
  		      emit_insn_after (bti_insn, label);
  		    }
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-cores.def gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-cores.def	Tue Jun 28 08:54:27 2022
*************** AARCH64_CORE("thunderx3t110",  thunderx3
*** 135,140 ****
--- 135,141 ----
  /* Arm ('A') cores.  */
  AARCH64_CORE("zeus", zeus, cortexa57, 8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_SVE | AARCH64_FL_RCPC | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_F16 | AARCH64_FL_PROFILE | AARCH64_FL_SSBS | AARCH64_FL_RNG, neoversev1, 0x41, 0xd40, -1)
  AARCH64_CORE("neoverse-v1", neoversev1, cortexa57, 8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_SVE | AARCH64_FL_RCPC | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_F16 | AARCH64_FL_PROFILE | AARCH64_FL_SSBS | AARCH64_FL_RNG, neoversev1, 0x41, 0xd40, -1)
+ AARCH64_CORE("neoverse-512tvb", neoverse512tvb, cortexa57, 8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_SVE | AARCH64_FL_RCPC | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_F16 | AARCH64_FL_PROFILE | AARCH64_FL_SSBS | AARCH64_FL_RNG, neoversev1, INVALID_IMP, INVALID_CORE, -1)
  
  /* Qualcomm ('Q') cores. */
  AARCH64_CORE("saphira",     saphira,    saphira,    8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_CRYPTO | AARCH64_FL_RCPC, saphira,   0x51, 0xC01, -1)
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-protos.h gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-protos.h	Tue Jun 28 08:54:27 2022
*************** bool aarch64_high_bits_all_ones_p (HOST_
*** 787,793 ****
  
  struct atomic_ool_names
  {
!     const char *str[5][4];
  };
  
  rtx aarch64_atomic_ool_func(machine_mode mode, rtx model_rtx,
--- 787,793 ----
  
  struct atomic_ool_names
  {
!     const char *str[5][5];
  };
  
  rtx aarch64_atomic_ool_func(machine_mode mode, rtx model_rtx,
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-simd.md gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-simd.md	Tue Jun 28 08:54:27 2022
***************
*** 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;
+     }
    "
  )
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Tue Jun 28 08:54:27 2022
*************** 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;
--- 995,1023 ----
  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 ();
--- 1049,1055 ----
  					   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);
--- 1060,1073 ----
  
    /* 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
--- 1088,1106 ----
  {
    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)
--- 1110,1115 ----
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve-builtins.h gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-sve-builtins.h	Tue Jun 28 08:54:27 2022
*************** 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.  */
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64-sve.md gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-sve.md	Tue Jun 28 08:54:27 2022
***************
*** 8455,8460 ****
--- 8455,8474 ----
    "<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-tune.md gcc-10.4.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-10.4.0/gcc/config/aarch64/aarch64-tune.md	Tue Jun 28 08:55:09 2022
***************
*** 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,cortexa65,cortexa65ae,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,neoversen2,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64.c gcc-10.4.0/gcc/config/aarch64/aarch64.c
*** gcc-10.3.0/gcc/config/aarch64/aarch64.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/aarch64/aarch64.c	Tue Jun 28 08:54:27 2022
*************** aarch64_load_symref_appropriately (rtx d
*** 3123,3129 ****
  	if (can_create_pseudo_p ())
  	  tmp_reg = gen_reg_rtx (mode);
  
! 	emit_move_insn (tmp_reg, gen_rtx_HIGH (mode, imm));
  	emit_insn (gen_add_losym (dest, tmp_reg, imm));
  	return;
        }
--- 3123,3129 ----
  	if (can_create_pseudo_p ())
  	  tmp_reg = gen_reg_rtx (mode);
  
! 	emit_move_insn (tmp_reg, gen_rtx_HIGH (mode, copy_rtx (imm)));
  	emit_insn (gen_add_losym (dest, tmp_reg, imm));
  	return;
        }
*************** aarch64_mov128_immediate (rtx imm)
*** 4322,4328 ****
  static unsigned int
  aarch64_add_offset_1_temporaries (HOST_WIDE_INT offset)
  {
!   return abs_hwi (offset) < 0x1000000 ? 0 : 1;
  }
  
  /* A subroutine of aarch64_add_offset.  Set DEST to SRC + OFFSET for
--- 4322,4328 ----
  static unsigned int
  aarch64_add_offset_1_temporaries (HOST_WIDE_INT offset)
  {
!   return absu_hwi (offset) < 0x1000000 ? 0 : 1;
  }
  
  /* A subroutine of aarch64_add_offset.  Set DEST to SRC + OFFSET for
*************** aarch64_expand_sve_ld1rq (rtx dest, rtx
*** 4752,4757 ****
--- 4752,4807 ----
    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 ****
--- 4936,4945 ----
    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;
  }
  
--- 5121,5132 ----
  	}
      }
  
!   /* 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_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.  */
--- 16325,16346 ----
  {
    /* 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);
  
--- 16348,16353 ----
*************** 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;
      }
--- 18679,18689 ----
  {
    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;
      }
*************** aarch64_emit_unlikely_jump (rtx insn)
*** 19558,19571 ****
    add_reg_br_prob_note (jump, profile_probability::very_unlikely ());
  }
  
! /* We store the names of the various atomic helpers in a 5x4 array.
     Return the libcall function given MODE, MODEL and NAMES.  */
  
  rtx
  aarch64_atomic_ool_func(machine_mode mode, rtx model_rtx,
  			const atomic_ool_names *names)
  {
!   memmodel model = memmodel_base (INTVAL (model_rtx));
    int mode_idx, model_idx;
  
    switch (mode)
--- 19617,19630 ----
    add_reg_br_prob_note (jump, profile_probability::very_unlikely ());
  }
  
! /* We store the names of the various atomic helpers in a 5x5 array.
     Return the libcall function given MODE, MODEL and NAMES.  */
  
  rtx
  aarch64_atomic_ool_func(machine_mode mode, rtx model_rtx,
  			const atomic_ool_names *names)
  {
!   memmodel model = memmodel_from_int (INTVAL (model_rtx));
    int mode_idx, model_idx;
  
    switch (mode)
*************** aarch64_atomic_ool_func(machine_mode mod
*** 19605,19610 ****
--- 19664,19674 ----
      case MEMMODEL_SEQ_CST:
        model_idx = 3;
        break;
+     case MEMMODEL_SYNC_ACQUIRE:
+     case MEMMODEL_SYNC_RELEASE:
+     case MEMMODEL_SYNC_SEQ_CST:
+       model_idx = 4;
+       break;
      default:
        gcc_unreachable ();
      }
*************** aarch64_atomic_ool_func(machine_mode mod
*** 19617,19623 ****
    { "__aarch64_" #B #N "_relax", \
      "__aarch64_" #B #N "_acq", \
      "__aarch64_" #B #N "_rel", \
!     "__aarch64_" #B #N "_acq_rel" }
  
  #define DEF4(B)  DEF0(B, 1), DEF0(B, 2), DEF0(B, 4), DEF0(B, 8), \
  		 { NULL, NULL, NULL, NULL }
--- 19681,19688 ----
    { "__aarch64_" #B #N "_relax", \
      "__aarch64_" #B #N "_acq", \
      "__aarch64_" #B #N "_rel", \
!     "__aarch64_" #B #N "_acq_rel", \
!     "__aarch64_" #B #N "_sync" }
  
  #define DEF4(B)  DEF0(B, 1), DEF0(B, 2), DEF0(B, 4), DEF0(B, 8), \
  		 { NULL, NULL, NULL, NULL }
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/aarch64.md gcc-10.4.0/gcc/config/aarch64/aarch64.md
*** gcc-10.3.0/gcc/config/aarch64/aarch64.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/aarch64/aarch64.md	Tue Jun 28 08:54:27 2022
***************
*** 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;
--- 1229,1247 ----
      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;
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/constraints.md gcc-10.4.0/gcc/config/aarch64/constraints.md
*** gcc-10.3.0/gcc/config/aarch64/constraints.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/aarch64/constraints.md	Tue Jun 28 08:54:27 2022
***************
*** 327,332 ****
--- 327,334 ----
    "@internal
     An address valid for loading or storing a 128-bit AdvSIMD register"
    (and (match_code "mem")
+        (match_test "aarch64_legitimate_address_p (GET_MODE (op),
+ 						  XEXP (op, 0), 1)")
         (match_test "aarch64_legitimate_address_p (V2DImode,
  						  XEXP (op, 0), 1)")))
  
diff -Nrcpad gcc-10.3.0/gcc/config/aarch64/iterators.md gcc-10.4.0/gcc/config/aarch64/iterators.md
*** gcc-10.3.0/gcc/config/aarch64/iterators.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/aarch64/iterators.md	Tue Jun 28 08:54:27 2022
***************
*** 633,638 ****
--- 633,639 ----
      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.
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha-protos.h gcc-10.4.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-10.4.0/gcc/config/alpha/alpha-protos.h	Tue Jun 28 08:54:27 2022
*************** extern void alpha_end_function (FILE *,
*** 73,78 ****
--- 73,80 ----
  
  extern bool alpha_find_lo_sum_using_gp (rtx);
  
+ extern int alpha_store_data_bypass_p (rtx_insn *, rtx_insn *);
+ 
  #ifdef REAL_VALUE_TYPE
  extern int check_float_value (machine_mode, REAL_VALUE_TYPE *, int);
  #endif
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/alpha.c gcc-10.4.0/gcc/config/alpha/alpha.c
*** gcc-10.3.0/gcc/config/alpha/alpha.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/alpha/alpha.c	Tue Jun 28 08:54:27 2022
*************** alpha_does_function_need_gp (void)
*** 7564,7569 ****
--- 7564,7638 ----
    return 0;
  }
  
+ /* Helper function for alpha_store_data_bypass_p, handle just a single SET
+    IN_SET.  */
+ 
+ static bool
+ alpha_store_data_bypass_p_1 (rtx_insn *out_insn, rtx in_set)
+ {
+   if (!MEM_P (SET_DEST (in_set)))
+     return false;
+ 
+   rtx out_set = single_set (out_insn);
+   if (out_set)
+     return !reg_mentioned_p (SET_DEST (out_set), SET_DEST (in_set));
+ 
+   rtx out_pat = PATTERN (out_insn);
+   if (GET_CODE (out_pat) != PARALLEL)
+     return false;
+ 
+   for (int i = 0; i < XVECLEN (out_pat, 0); i++)
+     {
+       rtx out_exp = XVECEXP (out_pat, 0, i);
+ 
+       if (GET_CODE (out_exp) == CLOBBER || GET_CODE (out_exp) == USE
+ 	  || GET_CODE (out_exp) == TRAP_IF)
+ 	continue;
+ 
+       gcc_assert (GET_CODE (out_exp) == SET);
+ 
+       if (reg_mentioned_p (SET_DEST (out_exp), SET_DEST (in_set)))
+ 	return false;
+     }
+ 
+   return true;
+ }
+ 
+ /* True if the dependency between OUT_INSN and IN_INSN is on the store
+    data not the address operand(s) of the store.  IN_INSN and OUT_INSN
+    must be either a single_set or a PARALLEL with SETs inside.
+ 
+    This alpha-specific version of store_data_bypass_p ignores TRAP_IF
+    that would result in assertion failure (and internal compiler error)
+    in the generic store_data_bypass_p function.  */
+ 
+ int
+ alpha_store_data_bypass_p (rtx_insn *out_insn, rtx_insn *in_insn)
+ {
+   rtx in_set = single_set (in_insn);
+   if (in_set)
+     return alpha_store_data_bypass_p_1 (out_insn, in_set);
+ 
+   rtx in_pat = PATTERN (in_insn);
+   if (GET_CODE (in_pat) != PARALLEL)
+     return false;
+ 
+   for (int i = 0; i < XVECLEN (in_pat, 0); i++)
+     {
+       rtx in_exp = XVECEXP (in_pat, 0, i);
+ 
+       if (GET_CODE (in_exp) == CLOBBER || GET_CODE (in_exp) == USE
+ 	  || GET_CODE (in_exp) == TRAP_IF)
+ 	continue;
+ 
+       gcc_assert (GET_CODE (in_exp) == SET);
+ 
+       if (!alpha_store_data_bypass_p_1 (out_insn, in_exp))
+ 	return false;
+     }
+ 
+   return true;
+ }
  
  /* Helper function to set RTX_FRAME_RELATED_P on instructions, including
     sequences.  */
diff -Nrcpad gcc-10.3.0/gcc/config/alpha/ev4.md gcc-10.4.0/gcc/config/alpha/ev4.md
*** gcc-10.3.0/gcc/config/alpha/ev4.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/alpha/ev4.md	Tue Jun 28 08:54:27 2022
***************
*** 44,57 ****
  ; Stores can issue before the data (but not address) is ready.
  (define_insn_reservation "ev4_ist" 1
    (and (eq_attr "tune" "ev4")
!        (eq_attr "type" "ist"))
!   "ev4_ib1+ev4_abox")
! 
! ; ??? Separate from ev4_ist because store_data_bypass_p can't handle
! ; the patterns with multiple sets, like store-conditional.
! (define_insn_reservation "ev4_ist_c" 1
!   (and (eq_attr "tune" "ev4")
!        (eq_attr "type" "st_c"))
    "ev4_ib1+ev4_abox")
  
  (define_insn_reservation "ev4_fst" 1
--- 44,50 ----
  ; Stores can issue before the data (but not address) is ready.
  (define_insn_reservation "ev4_ist" 1
    (and (eq_attr "tune" "ev4")
!        (eq_attr "type" "ist,st_c"))
    "ev4_ib1+ev4_abox")
  
  (define_insn_reservation "ev4_fst" 1
***************
*** 110,116 ****
  (define_bypass 0
    "ev4_iaddlog,ev4_shiftcm,ev4_icmp"
    "ev4_ist"
!   "store_data_bypass_p")
  
  ; Multiplies use a non-pipelined imul unit.  Also, "no [ebox] insn can
  ; be issued exactly three cycles before an integer multiply completes".
--- 103,109 ----
  (define_bypass 0
    "ev4_iaddlog,ev4_shiftcm,ev4_icmp"
    "ev4_ist"
!   "alpha_store_data_bypass_p")
  
  ; Multiplies use a non-pipelined imul unit.  Also, "no [ebox] insn can
  ; be issued exactly three cycles before an integer multiply completes".
***************
*** 121,127 ****
  	    (eq_attr "opsize" "si")))
    "ev4_ib0+ev4_imul,ev4_imul*18,ev4_ebox")
  
! (define_bypass 20 "ev4_imulsi" "ev4_ist" "store_data_bypass_p")
  
  (define_insn_reservation "ev4_imuldi" 23
    (and (eq_attr "tune" "ev4")
--- 114,120 ----
  	    (eq_attr "opsize" "si")))
    "ev4_ib0+ev4_imul,ev4_imul*18,ev4_ebox")
  
! (define_bypass 20 "ev4_imulsi" "ev4_ist" "alpha_store_data_bypass_p")
  
  (define_insn_reservation "ev4_imuldi" 23
    (and (eq_attr "tune" "ev4")
***************
*** 129,135 ****
  	    (eq_attr "opsize" "!si")))
    "ev4_ib0+ev4_imul,ev4_imul*20,ev4_ebox")
  
! (define_bypass 22 "ev4_imuldi" "ev4_ist" "store_data_bypass_p")
  
  ; Most FP insns have a 6 cycle latency, but with a 4 cycle bypass back in.
  (define_insn_reservation "ev4_fpop" 6
--- 122,128 ----
  	    (eq_attr "opsize" "!si")))
    "ev4_ib0+ev4_imul,ev4_imul*20,ev4_ebox")
  
! (define_bypass 22 "ev4_imuldi" "ev4_ist" "alpha_store_data_bypass_p")
  
  ; Most FP insns have a 6 cycle latency, but with a 4 cycle bypass back in.
  (define_insn_reservation "ev4_fpop" 6
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-c.c gcc-10.4.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-10.4.0/gcc/config/arm/arm-c.c	Tue Jun 28 08:54:27 2022
*************** arm_pragma_target_parse (tree args, tree
*** 408,415 ****
         target_option_current_node, but not handle_pragma_target.  */
        target_option_current_node = cur_tree;
        arm_configure_build_target (&arm_active_target,
! 				  TREE_TARGET_OPTION (cur_tree),
! 				  &global_options_set, false);
      }
  
    /* Update macros if target_node changes. The global state will be restored
--- 408,415 ----
         target_option_current_node, but not handle_pragma_target.  */
        target_option_current_node = cur_tree;
        arm_configure_build_target (&arm_active_target,
! 				  TREE_TARGET_OPTION (cur_tree), false);
!       arm_option_reconfigure_globals ();
      }
  
    /* Update macros if target_node changes. The global state will be restored
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-cpus.in gcc-10.4.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-10.4.0/gcc/config/arm/arm-cpus.in	Tue Jun 28 08:54:27 2022
*************** define feature quirk_armv6kz
*** 186,191 ****
--- 186,194 ----
  # Cortex-M3 LDRD quirk.
  define feature quirk_cm3_ldrd
  
+ # v8-m/v8.1-m VLLDM errata.
+ define feature quirk_vlldm
+ 
  # Don't use .cpu assembly directive
  define feature quirk_no_asmcpu
  
*************** define implied vfp_base MVE MVE_FP ALL_F
*** 322,328 ****
  # architectures.
  # xscale isn't really a 'quirk', but it isn't an architecture either and we
  # need to ignore it for matching purposes.
! define fgroup ALL_QUIRKS   quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale quirk_no_asmcpu
  
  # Architecture entries
  # format:
--- 325,333 ----
  # architectures.
  # xscale isn't really a 'quirk', but it isn't an architecture either and we
  # need to ignore it for matching purposes.
! define fgroup ALL_QUIRKS   quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd quirk_vlldm xscale quirk_no_asmcpu
! 
! define fgroup IGNORE_FOR_MULTILIB cdecp0 cdecp1 cdecp2 cdecp3 cdecp4 cdecp5 cdecp6 cdecp7
  
  # Architecture entries
  # format:
*************** begin cpu generic-armv7-a
*** 1078,1083 ****
--- 1083,1089 ----
   cname genericv7a
   tune flags LDSCHED
   architecture armv7-a+fp
+  isa quirk_no_asmcpu
   option mp add mp
   option sec add sec
   option vfpv3-d16 add VFPv3 FP_DBL
*************** begin cpu cortex-m33
*** 1524,1529 ****
--- 1530,1536 ----
   architecture armv8-m.main+dsp+fp
   option nofp remove ALL_FP
   option nodsp remove armv7em
+  isa quirk_vlldm
   costs v7m
  end cpu cortex-m33
  
*************** begin cpu cortex-m35p
*** 1533,1538 ****
--- 1540,1546 ----
   architecture armv8-m.main+dsp+fp
   option nofp remove ALL_FP
   option nodsp remove armv7em
+  isa quirk_vlldm
   costs v7m
  end cpu cortex-m35p
  
*************** begin cpu cortex-m55
*** 1544,1550 ****
   option nomve remove mve mve_float
   option nofp remove ALL_FP mve_float
   option nodsp remove MVE mve_float
!  isa quirk_no_asmcpu
   costs v7m
   vendor 41
  end cpu cortex-m55
--- 1552,1558 ----
   option nomve remove mve mve_float
   option nofp remove ALL_FP mve_float
   option nodsp remove MVE mve_float
!  isa quirk_no_asmcpu quirk_vlldm
   costs v7m
   vendor 41
  end cpu cortex-m55
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm-protos.h gcc-10.4.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-10.4.0/gcc/config/arm/arm-protos.h	Tue Jun 28 08:54:27 2022
*************** extern bool arm_change_mode_p (tree);
*** 241,248 ****
  extern tree arm_valid_target_attribute_tree (tree, struct gcc_options *,
  					     struct gcc_options *);
  extern void arm_configure_build_target (struct arm_build_target *,
! 					struct cl_target_option *,
! 					struct gcc_options *, bool);
  extern void arm_option_reconfigure_globals (void);
  extern void arm_options_perform_arch_sanity_checks (void);
  extern void arm_pr_long_calls (struct cpp_reader *);
--- 241,247 ----
  extern tree arm_valid_target_attribute_tree (tree, struct gcc_options *,
  					     struct gcc_options *);
  extern void arm_configure_build_target (struct arm_build_target *,
! 					struct cl_target_option *, bool);
  extern void arm_option_reconfigure_globals (void);
  extern void arm_options_perform_arch_sanity_checks (void);
  extern void arm_pr_long_calls (struct cpp_reader *);
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.c gcc-10.4.0/gcc/config/arm/arm.c
*** gcc-10.3.0/gcc/config/arm/arm.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/arm.c	Tue Jun 28 08:54:27 2022
***************
*** 77,86 ****
  typedef struct minipool_node    Mnode;
  typedef struct minipool_fixup   Mfix;
  
- /* The last .arch and .fpu assembly strings that we printed.  */
- static std::string arm_last_printed_arch_string;
- static std::string arm_last_printed_fpu_string;
- 
  void (*arm_lang_output_object_attributes_hook)(void);
  
  struct four_ints
--- 77,82 ----
*************** static HOST_WIDE_INT arm_constant_alignm
*** 332,337 ****
--- 328,334 ----
  static rtx_insn * thumb1_md_asm_adjust (vec<rtx> &, vec<rtx> &,
  					vec<const char *> &, vec<rtx> &,
  					HARD_REG_SET &);
+ static const char *arm_identify_fpu_from_isa (sbitmap);
  
  /* Table of machine attributes.  */
  static const struct attribute_spec arm_attribute_table[] =
*************** arm_override_options_after_change (void)
*** 3036,3042 ****
  {
    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);
  }
--- 3033,3039 ----
  {
    arm_configure_build_target (&arm_active_target,
  			      TREE_TARGET_OPTION (target_option_default_node),
! 			      false);
  
    arm_override_options_after_change_1 (&global_options);
  }
*************** arm_option_restore (struct gcc_options *
*** 3057,3064 ****
    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.  */
--- 3054,3061 ----
    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, false);
!   arm_option_reconfigure_globals ();
  }
  
  /* Reset options between modes that the user has specified.  */
*************** static sbitmap isa_quirkbits;
*** 3181,3187 ****
  void
  arm_configure_build_target (struct arm_build_target *target,
  			    struct cl_target_option *opts,
- 			    struct gcc_options *opts_set,
  			    bool warn_compatible)
  {
    const cpu_option *arm_selected_tune = NULL;
--- 3178,3183 ----
*************** arm_configure_build_target (struct arm_b
*** 3196,3202 ****
    target->core_name = NULL;
    target->arch_name = NULL;
  
!   if (opts_set->x_arm_arch_string)
      {
        arm_selected_arch = arm_parse_arch_option_name (all_architectures,
  						      "-march",
--- 3192,3198 ----
    target->core_name = NULL;
    target->arch_name = NULL;
  
!   if (opts->x_arm_arch_string)
      {
        arm_selected_arch = arm_parse_arch_option_name (all_architectures,
  						      "-march",
*************** arm_configure_build_target (struct arm_b
*** 3204,3210 ****
        arch_opts = strchr (opts->x_arm_arch_string, '+');
      }
  
!   if (opts_set->x_arm_cpu_string)
      {
        arm_selected_cpu = arm_parse_cpu_option_name (all_cores, "-mcpu",
  						    opts->x_arm_cpu_string);
--- 3200,3206 ----
        arch_opts = strchr (opts->x_arm_arch_string, '+');
      }
  
!   if (opts->x_arm_cpu_string)
      {
        arm_selected_cpu = arm_parse_cpu_option_name (all_cores, "-mcpu",
  						    opts->x_arm_cpu_string);
*************** arm_configure_build_target (struct arm_b
*** 3214,3220 ****
  	 options for tuning.  */
      }
  
!   if (opts_set->x_arm_tune_string)
      {
        arm_selected_tune = arm_parse_cpu_option_name (all_cores, "-mtune",
  						     opts->x_arm_tune_string);
--- 3210,3216 ----
  	 options for tuning.  */
      }
  
!   if (opts->x_arm_tune_string)
      {
        arm_selected_tune = arm_parse_cpu_option_name (all_cores, "-mtune",
  						     opts->x_arm_tune_string);
*************** arm_configure_build_target (struct arm_b
*** 3407,3412 ****
--- 3403,3413 ----
        bitmap_ior (target->isa, target->isa, fpu_bits);
      }
  
+   /* If we have the soft-float ABI, clear any feature bits relating to use of
+      floating-point operations.  They'll just confuse things later on.  */
+   if (arm_float_abi == ARM_FLOAT_ABI_SOFT)
+     bitmap_and_compl (target->isa, target->isa, isa_all_fpbits);
+ 
    /* There may be implied bits which we still need to enable. These are
       non-named features which are needed to complete other sets of features,
       but cannot be enabled from arm-cpus.in due to being shared between
*************** arm_configure_build_target (struct arm_b
*** 3429,3434 ****
--- 3430,3437 ----
    const cpu_tune *tune_data = &all_tunes[arm_selected_tune - all_cores];
  
    /* Finish initializing the target structure.  */
+   if (!target->arch_name)
+     target->arch_name = arm_selected_arch->common.name;
    target->arch_pp_name = arm_selected_arch->arch;
    target->base_arch = arm_selected_arch->base_arch;
    target->profile = arm_selected_arch->profile;
*************** arm_configure_build_target (struct arm_b
*** 3436,3442 ****
    target->tune_flags = tune_data->tune_flags;
    target->tune = tune_data->tune;
    target->tune_core = tune_data->scheduler;
-   arm_option_reconfigure_globals ();
  }
  
  /* Fix up any incompatible options that the user has specified.  */
--- 3439,3444 ----
*************** arm_option_override (void)
*** 3473,3480 ****
      }
  
    cl_target_option_save (&opts, &global_options);
!   arm_configure_build_target (&arm_active_target, &opts, &global_options_set,
! 			      true);
  
  #ifdef SUBTARGET_OVERRIDE_OPTIONS
    SUBTARGET_OVERRIDE_OPTIONS;
--- 3475,3481 ----
      }
  
    cl_target_option_save (&opts, &global_options);
!   arm_configure_build_target (&arm_active_target, &opts, true);
  
  #ifdef SUBTARGET_OVERRIDE_OPTIONS
    SUBTARGET_OVERRIDE_OPTIONS;
*************** arm_option_override (void)
*** 3610,3615 ****
--- 3611,3625 ----
  	fix_cm3_ldrd = 0;
      }
  
+   /* Enable fix_vlldm by default if required.  */
+   if (fix_vlldm == 2)
+     {
+       if (bitmap_bit_p (arm_active_target.isa, isa_bit_quirk_vlldm))
+ 	fix_vlldm = 1;
+       else
+ 	fix_vlldm = 0;
+     }
+ 
    /* Hot/Cold partitioning is not currently supported, since we can't
       handle literal pool placement in that case.  */
    if (flag_reorder_blocks_and_partition)
*************** 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");
  
  
--- 3860,3866 ----
  
    /* 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_canonicalize_comparison (int *code,
*** 5567,5575 ****
  			return;
  		      *op1 = GEN_INT (i + 1);
  		      *code = *code == GT ? GE : LT;
- 		      return;
  		    }
! 		  break;
  
  		case GTU:
  		case LEU:
--- 5577,5596 ----
  			return;
  		      *op1 = GEN_INT (i + 1);
  		      *code = *code == GT ? GE : LT;
  		    }
! 		  else
! 		    {
! 		      /* GT maxval is always false, LE maxval is always true.
! 			 We can't fold that away here as we must make a
! 			 comparison, but we can fold them to comparisons
! 			 with the same result that can be handled:
! 			   op0 GT maxval -> op0 LT minval
! 			   op0 LE maxval -> op0 GE minval
! 			 where minval = (-maxval - 1).  */
! 		      *op1 = GEN_INT (-maxval - 1);
! 		      *code = *code == GT ? LT : GE;
! 		    }
! 		  return;
  
  		case GTU:
  		case LEU:
*************** arm_canonicalize_comparison (int *code,
*** 5582,5590 ****
  			return;
  		      *op1 = GEN_INT (i + 1);
  		      *code = *code == GTU ? GEU : LTU;
- 		      return;
  		    }
! 		  break;
  
  		default:
  		  gcc_unreachable ();
--- 5603,5621 ----
  			return;
  		      *op1 = GEN_INT (i + 1);
  		      *code = *code == GTU ? GEU : LTU;
  		    }
! 		  else
! 		    {
! 		      /* GTU ~0 is always false, LEU ~0 is always true.
! 			 We can't fold that away here as we must make a
! 			 comparison, but we can fold them to comparisons
! 			 with the same result that can be handled:
! 			   op0 GTU ~0 -> op0 LTU 0
! 			   op0 LEU ~0 -> op0 GEU 0.  */
! 		      *op1 = const0_rtx;
! 		      *code = *code == GTU ? LTU : GEU;
! 		    }
! 		  return;
  
  		default:
  		  gcc_unreachable ();
*************** arm_libcall_uses_aapcs_base (const_rtx l
*** 5786,5791 ****
--- 5817,5826 ----
  		   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
*************** gen_cpymem_ldrd_strd (rtx *operands)
*** 15479,15491 ****
      {
        len -= 8;
        reg0 = gen_reg_rtx (DImode);
!       rtx low_reg = NULL_RTX;
!       rtx hi_reg = NULL_RTX;
  
        if (!src_aligned || !dst_aligned)
  	{
! 	  low_reg = gen_lowpart (SImode, reg0);
! 	  hi_reg = gen_highpart_mode (SImode, DImode, reg0);
  	}
        if (MEM_ALIGN (src) >= 2 * BITS_PER_WORD)
  	emit_move_insn (reg0, src);
--- 15514,15534 ----
      {
        len -= 8;
        reg0 = gen_reg_rtx (DImode);
!       rtx first_reg = NULL_RTX;
!       rtx second_reg = NULL_RTX;
  
        if (!src_aligned || !dst_aligned)
  	{
! 	  if (BYTES_BIG_ENDIAN)
! 	    {
! 	      second_reg = gen_lowpart (SImode, reg0);
! 	      first_reg = gen_highpart_mode (SImode, DImode, reg0);
! 	    }
! 	  else
! 	    {
! 	      first_reg = gen_lowpart (SImode, reg0);
! 	      second_reg = gen_highpart_mode (SImode, DImode, reg0);
! 	    }
  	}
        if (MEM_ALIGN (src) >= 2 * BITS_PER_WORD)
  	emit_move_insn (reg0, src);
*************** gen_cpymem_ldrd_strd (rtx *operands)
*** 15493,15501 ****
  	emit_insn (gen_unaligned_loaddi (reg0, src));
        else
  	{
! 	  emit_insn (gen_unaligned_loadsi (low_reg, src));
  	  src = next_consecutive_mem (src);
! 	  emit_insn (gen_unaligned_loadsi (hi_reg, src));
  	}
  
        if (MEM_ALIGN (dst) >= 2 * BITS_PER_WORD)
--- 15536,15544 ----
  	emit_insn (gen_unaligned_loaddi (reg0, src));
        else
  	{
! 	  emit_insn (gen_unaligned_loadsi (first_reg, src));
  	  src = next_consecutive_mem (src);
! 	  emit_insn (gen_unaligned_loadsi (second_reg, src));
  	}
  
        if (MEM_ALIGN (dst) >= 2 * BITS_PER_WORD)
*************** gen_cpymem_ldrd_strd (rtx *operands)
*** 15504,15512 ****
  	emit_insn (gen_unaligned_storedi (dst, reg0));
        else
  	{
! 	  emit_insn (gen_unaligned_storesi (dst, low_reg));
  	  dst = next_consecutive_mem (dst);
! 	  emit_insn (gen_unaligned_storesi (dst, hi_reg));
  	}
  
        src = next_consecutive_mem (src);
--- 15547,15555 ----
  	emit_insn (gen_unaligned_storedi (dst, reg0));
        else
  	{
! 	  emit_insn (gen_unaligned_storesi (dst, first_reg));
  	  dst = next_consecutive_mem (dst);
! 	  emit_insn (gen_unaligned_storesi (dst, second_reg));
  	}
  
        src = next_consecutive_mem (src);
*************** cmse_nonsecure_call_inline_register_clea
*** 18740,18749 ****
  		  imm = gen_int_mode (- lazy_store_stack_frame_size, SImode);
  		  add_insn = emit_insn (gen_addsi3 (stack_pointer_rtx,
  						    stack_pointer_rtx, imm));
! 		  arm_add_cfa_adjust_cfa_note (add_insn,
! 					       - lazy_store_stack_frame_size,
! 					       stack_pointer_rtx,
! 					       stack_pointer_rtx);
  		  emit_insn (gen_lazy_store_multiple_insn (stack_pointer_rtx));
  		}
  	      /* Save VFP callee-saved registers.  */
--- 18783,18796 ----
  		  imm = gen_int_mode (- lazy_store_stack_frame_size, SImode);
  		  add_insn = emit_insn (gen_addsi3 (stack_pointer_rtx,
  						    stack_pointer_rtx, imm));
! 		  /* If we have the frame pointer, then it will be the
! 		     CFA reg.  Otherwise, the stack pointer is the CFA
! 		     reg, so we need to emit a CFA adjust.  */
! 		  if (!frame_pointer_needed)
! 		    arm_add_cfa_adjust_cfa_note (add_insn,
! 						 - lazy_store_stack_frame_size,
! 						 stack_pointer_rtx,
! 						 stack_pointer_rtx);
  		  emit_insn (gen_lazy_store_multiple_insn (stack_pointer_rtx));
  		}
  	      /* Save VFP callee-saved registers.  */
*************** cmse_nonsecure_call_inline_register_clea
*** 18781,18790 ****
  		  rtx_insn *add_insn =
  		    emit_insn (gen_addsi3 (stack_pointer_rtx,
  					   stack_pointer_rtx, imm));
! 		  arm_add_cfa_adjust_cfa_note (add_insn,
! 					       lazy_store_stack_frame_size,
! 					       stack_pointer_rtx,
! 					       stack_pointer_rtx);
  		}
  	      /* Restore VFP callee-saved registers.  */
  	      else
--- 18828,18838 ----
  		  rtx_insn *add_insn =
  		    emit_insn (gen_addsi3 (stack_pointer_rtx,
  					   stack_pointer_rtx, imm));
! 		  if (!frame_pointer_needed)
! 		    arm_add_cfa_adjust_cfa_note (add_insn,
! 						 lazy_store_stack_frame_size,
! 						 stack_pointer_rtx,
! 						 stack_pointer_rtx);
  		}
  	      /* Restore VFP callee-saved registers.  */
  	      else
*************** arm_hard_regno_mode_ok (unsigned int reg
*** 25242,25248 ****
      return false;
  
    if (IS_VPR_REGNUM (regno))
!     return true;
  
    if (TARGET_THUMB1)
      /* For the Thumb we only allow values bigger than SImode in
--- 25290,25296 ----
      return false;
  
    if (IS_VPR_REGNUM (regno))
!     return mode == HImode;
  
    if (TARGET_THUMB1)
      /* For the Thumb we only allow values bigger than SImode in
*************** 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);
--- 27055,27061 ----
  	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);
*************** arm_print_tune_info (void)
*** 28040,28059 ****
  	       (int) current_tune->sched_autopref);
  }
  
  /* Print .arch and .arch_extension directives corresponding to the
     current architecture configuration.  */
  static void
! arm_print_asm_arch_directives ()
  {
    const arch_option *arch
      = arm_parse_arch_option_name (all_architectures, "-march",
! 				  arm_active_target.arch_name);
    auto_sbitmap opt_bits (isa_num_bits);
  
    gcc_assert (arch);
  
!   asm_fprintf (asm_out_file, "\t.arch %s\n", arm_active_target.arch_name);
!   arm_last_printed_arch_string = arm_active_target.arch_name;
    if (!arch->common.extensions)
      return;
  
--- 28088,28152 ----
  	       (int) current_tune->sched_autopref);
  }
  
+ /* The last set of target options used to emit .arch directives, etc.  This
+    could be a function-local static if it were not required to expose it as a
+    root to the garbage collector.  */
+ static GTY(()) cl_target_option *last_asm_targ_options = NULL;
+ 
  /* Print .arch and .arch_extension directives corresponding to the
     current architecture configuration.  */
  static void
! arm_print_asm_arch_directives (FILE *stream, cl_target_option *targ_options)
  {
+   arm_build_target build_target;
+   /* If the target options haven't changed since the last time we were called
+      there is nothing to do.  This should be sufficient to suppress the
+      majority of redundant work.  */
+   if (last_asm_targ_options == targ_options)
+     return;
+ 
+   last_asm_targ_options = targ_options;
+ 
+   build_target.isa = sbitmap_alloc (isa_num_bits);
+   arm_configure_build_target (&build_target, targ_options, false);
+ 
+   if (build_target.core_name
+       && !bitmap_bit_p (build_target.isa, isa_bit_quirk_no_asmcpu))
+     {
+       const char* truncated_name
+ 	= arm_rewrite_selected_cpu (build_target.core_name);
+       asm_fprintf (stream, "\t.cpu %s\n", truncated_name);
+     }
+ 
    const arch_option *arch
      = arm_parse_arch_option_name (all_architectures, "-march",
! 				  build_target.arch_name);
    auto_sbitmap opt_bits (isa_num_bits);
  
    gcc_assert (arch);
  
!   if (strcmp (build_target.arch_name, "armv7ve") == 0)
!     {
!       /* Keep backward compatability for assemblers which don't support
! 	 armv7ve.  Fortunately, none of the following extensions are reset
! 	 by a .fpu directive.  */
!       asm_fprintf (stream, "\t.arch armv7-a\n");
!       asm_fprintf (stream, "\t.arch_extension virt\n");
!       asm_fprintf (stream, "\t.arch_extension idiv\n");
!       asm_fprintf (stream, "\t.arch_extension sec\n");
!       asm_fprintf (stream, "\t.arch_extension mp\n");
!     }
!   else
!     asm_fprintf (stream, "\t.arch %s\n", build_target.arch_name);
! 
!   /* The .fpu directive will reset any architecture extensions from the
!      assembler that relate to the fp/vector extensions.  So put this out before
!      any .arch_extension directives.  */
!   const char *fpu_name = (TARGET_SOFT_FLOAT
! 			  ? "softvfp"
! 			  : arm_identify_fpu_from_isa (build_target.isa));
!   asm_fprintf (stream, "\t.fpu %s\n", fpu_name);
! 
    if (!arch->common.extensions)
      return;
  
*************** arm_print_asm_arch_directives ()
*** 28079,28091 ****
  		  && !TARGET_HAVE_MVE_FLOAT))
  	    continue;
  
! 	  /* If every feature bit of this option is set in the target
! 	     ISA specification, print out the option name.  However,
! 	     don't print anything if all the bits are part of the
! 	     FPU specification.  */
! 	  if (bitmap_subset_p (opt_bits, arm_active_target.isa)
  	      && !bitmap_subset_p (opt_bits, isa_all_fpubits_internal))
! 	    asm_fprintf (asm_out_file, "\t.arch_extension %s\n", opt->name);
  	}
      }
  }
--- 28172,28183 ----
  		  && !TARGET_HAVE_MVE_FLOAT))
  	    continue;
  
! 	  /* If every feature bit of this option is set in the target ISA
! 	     specification, print out the option name.  However, don't print
! 	     anything if all the bits are part of the FPU specification.  */
! 	  if (bitmap_subset_p (opt_bits, build_target.isa)
  	      && !bitmap_subset_p (opt_bits, isa_all_fpubits_internal))
! 	    asm_fprintf (stream, "\t.arch_extension %s\n", opt->name);
  	}
      }
  }
*************** arm_file_start (void)
*** 28095,28140 ****
  {
    int val;
  
    if (TARGET_BPABI)
      {
!       /* We don't have a specified CPU.  Use the architecture to
! 	 generate the tags.
! 
! 	 Note: it might be better to do this unconditionally, then the
! 	 assembler would not need to know about all new CPU names as
! 	 they are added.  */
!       if (!arm_active_target.core_name)
! 	{
! 	  /* armv7ve doesn't support any extensions.  */
! 	  if (strcmp (arm_active_target.arch_name, "armv7ve") == 0)
! 	    {
! 	      /* Keep backward compatability for assemblers
! 		 which don't support armv7ve.  */
! 	      asm_fprintf (asm_out_file, "\t.arch armv7-a\n");
! 	      asm_fprintf (asm_out_file, "\t.arch_extension virt\n");
! 	      asm_fprintf (asm_out_file, "\t.arch_extension idiv\n");
! 	      asm_fprintf (asm_out_file, "\t.arch_extension sec\n");
! 	      asm_fprintf (asm_out_file, "\t.arch_extension mp\n");
! 	      arm_last_printed_arch_string = "armv7ve";
! 	    }
! 	  else
! 	    arm_print_asm_arch_directives ();
! 	}
!       else if (strncmp (arm_active_target.core_name, "generic", 7) == 0)
! 	{
! 	  asm_fprintf (asm_out_file, "\t.arch %s\n",
! 		       arm_active_target.core_name + 8);
! 	  arm_last_printed_arch_string = arm_active_target.core_name + 8;
! 	}
!       else
  	{
  	  const char* truncated_name
  	    = arm_rewrite_selected_cpu (arm_active_target.core_name);
  	  if (bitmap_bit_p (arm_active_target.isa, isa_bit_quirk_no_asmcpu))
  	    asm_fprintf (asm_out_file, "\t.eabi_attribute 5, \"%s\"\n",
  			 truncated_name);
- 	  else
- 	    asm_fprintf (asm_out_file, "\t.cpu %s\n", truncated_name);
  	}
  
        if (print_tune_info)
--- 28187,28209 ----
  {
    int val;
  
+   arm_print_asm_arch_directives
+     (asm_out_file, TREE_TARGET_OPTION (target_option_default_node));
+ 
    if (TARGET_BPABI)
      {
!       /* If we have a named cpu, but we the assembler does not support that
! 	 name via .cpu, put out a cpu name attribute; but don't do this if the
! 	 name starts with the fictitious prefix, 'generic'.  */
!       if (arm_active_target.core_name
! 	  && bitmap_bit_p (arm_active_target.isa, isa_bit_quirk_no_asmcpu)
! 	  && strncmp (arm_active_target.core_name, "generic", 7) != 0)
  	{
  	  const char* truncated_name
  	    = arm_rewrite_selected_cpu (arm_active_target.core_name);
  	  if (bitmap_bit_p (arm_active_target.isa, isa_bit_quirk_no_asmcpu))
  	    asm_fprintf (asm_out_file, "\t.eabi_attribute 5, \"%s\"\n",
  			 truncated_name);
  	}
  
        if (print_tune_info)
*************** arm_file_end (void)
*** 28202,28207 ****
--- 28271,28283 ----
  {
    int regno;
  
+   /* Just in case the last function output in the assembler had non-default
+      architecture directives, we force the assembler state back to the default
+      set, so that any 'calculated' build attributes are based on the default
+      options rather than the special options for that function.  */
+   arm_print_asm_arch_directives
+     (asm_out_file, TREE_TARGET_OPTION (target_option_default_node));
+ 
    if (NEED_INDICATE_EXEC_STACK)
      /* Add .note.GNU-stack.  */
      file_end_indicate_exec_stack ();
*************** arm_split_compare_and_swap (rtx operands
*** 30470,30482 ****
      }
    else
      {
-       emit_move_insn (neg_bval, const1_rtx);
        cond = gen_rtx_NE (VOIDmode, rval, oldval);
        if (thumb1_cmpneg_operand (oldval, SImode))
! 	emit_unlikely_jump (gen_cbranchsi4_scratch (neg_bval, rval, oldval,
! 						    label2, cond));
        else
! 	emit_unlikely_jump (gen_cbranchsi4_insn (cond, rval, oldval, label2));
      }
  
    arm_emit_store_exclusive (mode, neg_bval, mem, newval, use_release);
--- 30546,30576 ----
      }
    else
      {
        cond = gen_rtx_NE (VOIDmode, rval, oldval);
        if (thumb1_cmpneg_operand (oldval, SImode))
! 	{
! 	  rtx src = rval;
! 	  if (!satisfies_constraint_L (oldval))
! 	    {
! 	      gcc_assert (satisfies_constraint_J (oldval));
! 
! 	      /* For such immediates, ADDS needs the source and destination regs
! 		 to be the same.
! 
! 		 Normally this would be handled by RA, but this is all happening
! 		 after RA.  */
! 	      emit_move_insn (neg_bval, rval);
! 	      src = neg_bval;
! 	    }
! 
! 	  emit_unlikely_jump (gen_cbranchsi4_neg_late (neg_bval, src, oldval,
! 						       label2, cond));
! 	}
        else
! 	{
! 	  emit_move_insn (neg_bval, const1_rtx);
! 	  emit_unlikely_jump (gen_cbranchsi4_insn (cond, rval, oldval, label2));
! 	}
      }
  
    arm_emit_store_exclusive (mode, neg_bval, mem, newval, use_release);
*************** arm_can_inline_p (tree caller, tree call
*** 32397,32406 ****
    caller_target.isa = sbitmap_alloc (isa_num_bits);
    callee_target.isa = sbitmap_alloc (isa_num_bits);
  
!   arm_configure_build_target (&caller_target, caller_opts, &global_options_set,
! 			      false);
!   arm_configure_build_target (&callee_target, callee_opts, &global_options_set,
! 			      false);
    if (!bitmap_subset_p (callee_target.isa, caller_target.isa))
      can_inline = false;
  
--- 32491,32498 ----
    caller_target.isa = sbitmap_alloc (isa_num_bits);
    callee_target.isa = sbitmap_alloc (isa_num_bits);
  
!   arm_configure_build_target (&caller_target, caller_opts, false);
!   arm_configure_build_target (&callee_target, callee_opts, false);
    if (!bitmap_subset_p (callee_target.isa, caller_target.isa))
      can_inline = false;
  
*************** arm_valid_target_attribute_tree (tree ar
*** 32536,32542 ****
      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.
       We do this since arm_active_target was overridden.  */
--- 32628,32634 ----
      return NULL_TREE;
  
    cl_target_option_save (&cl_opts, opts);
!   arm_configure_build_target (&arm_active_target, &cl_opts, false);
    arm_option_check_internal (opts);
    /* Do any overrides, such as global options arch=xxx.
       We do this since arm_active_target was overridden.  */
*************** arm_declare_function_name (FILE *stream,
*** 32680,32737 ****
      targ_options = TREE_TARGET_OPTION (target_option_current_node);
    gcc_assert (targ_options);
  
!   /* Only update the assembler .arch string if it is distinct from the last
!      such string we printed. arch_to_print is set conditionally in case
!      targ_options->x_arm_arch_string is NULL which can be the case
!      when cc1 is invoked directly without passing -march option.  */
!   std::string arch_to_print;
!   if (targ_options->x_arm_arch_string)
!     arch_to_print = targ_options->x_arm_arch_string;
! 
!   if (arch_to_print != arm_last_printed_arch_string)
!     {
!       std::string arch_name
! 	= arch_to_print.substr (0, arch_to_print.find ("+"));
!       asm_fprintf (asm_out_file, "\t.arch %s\n", arch_name.c_str ());
!       const arch_option *arch
! 	= arm_parse_arch_option_name (all_architectures, "-march",
! 				      targ_options->x_arm_arch_string);
!       auto_sbitmap opt_bits (isa_num_bits);
! 
!       gcc_assert (arch);
!       if (arch->common.extensions)
! 	{
! 	  for (const struct cpu_arch_extension *opt = arch->common.extensions;
! 	       opt->name != NULL;
! 	       opt++)
! 	    {
! 	      if (!opt->remove)
! 		{
! 		  arm_initialize_isa (opt_bits, opt->isa_bits);
! 		  /* For the cases "-march=armv8.1-m.main+mve -mfloat-abi=soft"
! 		     and "-march=armv8.1-m.main+mve.fp -mfloat-abi=soft" MVE and
! 		     MVE with floating point instructions is disabled.  So the
! 		     following check restricts the printing of ".arch_extension
! 		     mve" and ".arch_extension fp" (for mve.fp) in the assembly
! 		     file.    MVE needs this special behaviour because the
! 		     feature bit "mve" and "mve_float" are not part of
! 		     "fpu bits", so they are not cleared when -mfloat-abi=soft
! 		     (i.e nofp) but the marco TARGET_HAVE_MVE and
! 		     TARGET_HAVE_MVE_FLOAT are disabled.  */
! 		  if ((bitmap_bit_p (opt_bits, isa_bit_mve) && !TARGET_HAVE_MVE)
! 		      || (bitmap_bit_p (opt_bits, isa_bit_mve_float)
! 			  && !TARGET_HAVE_MVE_FLOAT))
! 		    continue;
! 		  if (bitmap_subset_p (opt_bits, arm_active_target.isa)
! 		      && !bitmap_subset_p (opt_bits, isa_all_fpubits_internal))
! 		    asm_fprintf (asm_out_file, "\t.arch_extension %s\n",
! 				 opt->name);
! 		}
! 	     }
! 	}
! 
!       arm_last_printed_arch_string = arch_to_print;
!     }
  
    fprintf (stream, "\t.syntax unified\n");
  
--- 32772,32778 ----
      targ_options = TREE_TARGET_OPTION (target_option_current_node);
    gcc_assert (targ_options);
  
!   arm_print_asm_arch_directives (stream, targ_options);
  
    fprintf (stream, "\t.syntax unified\n");
  
*************** arm_declare_function_name (FILE *stream,
*** 32749,32765 ****
    else
      fprintf (stream, "\t.arm\n");
  
-   std::string fpu_to_print
-     = TARGET_SOFT_FLOAT
- 	? "softvfp" : arm_identify_fpu_from_isa (arm_active_target.isa);
- 
-   if (!(!strcmp (fpu_to_print.c_str (), "softvfp") && TARGET_VFP_BASE)
-       && (fpu_to_print != arm_last_printed_arch_string))
-     {
-       asm_fprintf (asm_out_file, "\t.fpu %s\n", fpu_to_print.c_str ());
-       arm_last_printed_fpu_string = fpu_to_print;
-     }
- 
    if (TARGET_POKE_FUNCTION_NAME)
      arm_poke_function_name (stream, (const char *) name);
  }
--- 32790,32795 ----
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.h gcc-10.4.0/gcc/config/arm/arm.h
*** gcc-10.3.0/gcc/config/arm/arm.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/arm.h	Tue Jun 28 08:54:27 2022
*************** extern const char *host_detect_local_cpu
*** 2357,2366 ****
--- 2357,2370 ----
  #endif
  
  const char *arm_canon_arch_option (int argc, const char **argv);
+ const char *arm_canon_arch_multilib_option (int argc, const char **argv);
  
  #define CANON_ARCH_SPEC_FUNCTION		\
    { "canon_arch", arm_canon_arch_option },
  
+ #define CANON_ARCH_MULTILIB_SPEC_FUNCTION		\
+   { "canon_arch_multilib", arm_canon_arch_multilib_option },
+ 
  const char *arm_be8_option (int argc, const char **argv);
  #define BE8_SPEC_FUNCTION			\
    { "be8_linkopt", arm_be8_option },
*************** const char *arm_be8_option (int argc, co
*** 2369,2374 ****
--- 2373,2379 ----
    MCPU_MTUNE_NATIVE_FUNCTIONS			\
    ASM_CPU_SPEC_FUNCTIONS			\
    CANON_ARCH_SPEC_FUNCTION			\
+   CANON_ARCH_MULTILIB_SPEC_FUNCTION		\
    TARGET_MODE_SPEC_FUNCTIONS			\
    BE8_SPEC_FUNCTION
  
*************** const char *arm_be8_option (int argc, co
*** 2389,2400 ****
--- 2394,2415 ----
    "                     %{mfloat-abi=*: abi %*}"	\
    "                     %<march=*) "
  
+ /* Generate a canonical string to represent the architecture selected ignoring
+    the options not required for multilib linking.  */
+ #define MULTILIB_ARCH_CANONICAL_SPECS				\
+   "-mlibarch=%:canon_arch_multilib(%{mcpu=*: cpu %*} "		\
+   "				   %{march=*: arch %*} "	\
+   "				   %{mfpu=*: fpu %*} "		\
+   "				   %{mfloat-abi=*: abi %*}"	\
+   "				   %<mlibarch=*) "
+ 
  /* Complete set of specs for the driver.  Commas separate the
     individual rules so that any option suppression (%<opt...)is
     completed before starting subsequent rules.  */
  #define DRIVER_SELF_SPECS			\
    MCPU_MTUNE_NATIVE_SPECS,			\
    TARGET_MODE_SPECS,				\
+   MULTILIB_ARCH_CANONICAL_SPECS,		\
    ARCH_CANONICAL_SPECS
  
  #define TARGET_SUPPORTS_WIDE_INT 1
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.md gcc-10.4.0/gcc/config/arm/arm.md
*** gcc-10.3.0/gcc/config/arm/arm.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/arm.md	Tue Jun 28 08:54:27 2022
***************
*** 132,140 ****
  ; TARGET_32BIT, "t1" or "t2" to specify a specific Thumb mode.  "v6"
  ; for ARM or Thumb-2 with arm_arch6, and nov6 for ARM without
  ; arm_arch6.  "v6t2" for Thumb-2 with arm_arch6 and "v8mb" for ARMv8-M
! ; Baseline.  This attribute is used to compute attribute "enabled",
  ; use type "any" to enable an alternative in all cases.
! (define_attr "arch" "any,a,t,32,t1,t2,v6,nov6,v6t2,v8mb,iwmmxt,iwmmxt2,armv6_or_vfpv3,neon,mve"
    (const_string "any"))
  
  (define_attr "arch_enabled" "no,yes"
--- 132,143 ----
  ; TARGET_32BIT, "t1" or "t2" to specify a specific Thumb mode.  "v6"
  ; for ARM or Thumb-2 with arm_arch6, and nov6 for ARM without
  ; arm_arch6.  "v6t2" for Thumb-2 with arm_arch6 and "v8mb" for ARMv8-M
! ; Baseline.  "fix_vlldm" is for fixing the v8-m/v8.1-m VLLDM erratum.
! ; This attribute is used to compute attribute "enabled",
  ; use type "any" to enable an alternative in all cases.
! (define_attr "arch" "any, a, t, 32, t1, t2, v6,nov6, v6t2, \
! 		     v8mb, fix_vlldm, iwmmxt, iwmmxt2, armv6_or_vfpv3, \
! 		     neon, mve"
    (const_string "any"))
  
  (define_attr "arch_enabled" "no,yes"
***************
*** 177,182 ****
--- 180,189 ----
  	      (match_test "TARGET_THUMB1 && arm_arch8"))
  	 (const_string "yes")
  
+ 	 (and (eq_attr "arch" "fix_vlldm")
+ 	      (match_test "fix_vlldm"))
+ 	 (const_string "yes")
+ 
  	 (and (eq_attr "arch" "iwmmxt2")
  	      (match_test "TARGET_REALLY_IWMMXT2"))
  	 (const_string "yes")
***************
*** 8579,8596 ****
  	      (use (match_operand 2 "" ""))
  	      (clobber (reg:SI LR_REGNUM))])]
    "use_cmse"
-   "
    {
      if (!TARGET_HAVE_FPCXT_CMSE)
        {
! 	rtx tmp =
! 	  copy_to_suggested_reg (XEXP (operands[0], 0),
! 				 gen_rtx_REG (SImode, R4_REGNUM),
! 				 SImode);
! 
! 	operands[0] = replace_equiv_address (operands[0], tmp);
        }
!   }")
  
  (define_insn "*call_reg_armv5"
    [(call (mem:SI (match_operand:SI 0 "s_register_operand" "r"))
--- 8586,8606 ----
  	      (use (match_operand 2 "" ""))
  	      (clobber (reg:SI LR_REGNUM))])]
    "use_cmse"
    {
+     rtx addr = XEXP (operands[0], 0);
+     rtx tmp = REG_P (addr) ? addr : force_reg (SImode, addr);
+ 
      if (!TARGET_HAVE_FPCXT_CMSE)
        {
! 	rtx r4 = gen_rtx_REG (SImode, R4_REGNUM);
! 	emit_move_insn (r4, tmp);
! 	tmp = r4;
        }
! 
!     if (tmp != addr)
!       operands[0] = replace_equiv_address (operands[0], tmp);
!   }
! )
  
  (define_insn "*call_reg_armv5"
    [(call (mem:SI (match_operand:SI 0 "s_register_operand" "r"))
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm.opt gcc-10.4.0/gcc/config/arm/arm.opt
*** gcc-10.3.0/gcc/config/arm/arm.opt	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/arm.opt	Tue Jun 28 08:54:27 2022
*************** Specify the name of the target architect
*** 90,95 ****
--- 90,101 ----
  EnumValue
  Enum(arm_arch) String(native) Value(-1) DriverOnly
  
+ ; Set to the name of target architecture which is required for
+ ; multilib linking.  This option is undocumented becuase it
+ ; should not be used by the users.
+ mlibarch=
+ Target RejectNegative JoinedOrMissing NoDWARFRecord DriverOnly Undocumented
+ 
  marm
  Target Report RejectNegative Negative(mthumb) InverseMask(THUMB)
  Generate code in 32 bit ARM state.
*************** Target Report Var(fix_cm3_ldrd) Init(2)
*** 271,276 ****
--- 277,286 ----
  Avoid overlapping destination and address registers on LDRD instructions
  that may trigger Cortex-M3 errata.
  
+ mfix-cmse-cve-2021-35465
+ Target Var(fix_vlldm) Init(2)
+ Mitigate issues with VLLDM on some M-profile devices (CVE-2021-35465).
+ 
  munaligned-access
  Target Report Var(unaligned_access) Init(2) Save
  Enable unaligned word and halfword accesses to packed data.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/arm_mve.h gcc-10.4.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-10.4.0/gcc/config/arm/arm_mve.h	Tue Jun 28 08:54:27 2022
*************** __arm_vaddlvq_u32 (uint32x4_t __a)
*** 3524,3530 ****
    return __builtin_mve_vaddlvq_uv4si (__a);
  }
  
! __extension__ extern __inline int64_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp16q (uint32_t __a)
  {
--- 3524,3530 ----
    return __builtin_mve_vaddlvq_uv4si (__a);
  }
  
! __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp16q (uint32_t __a)
  {
*************** extern void *__ARM_undef;
*** 37559,37605 ****
  
  #define __arm_vld1q(p0) (\
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce(p0, uint32_t const *)), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_f16 (__ARM_mve_coerce(p0, float16_t const *)), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_f32 (__ARM_mve_coerce(p0, float32_t const *))))
  
  #define __arm_vld1q_z(p0,p1) ( \
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce(p0, int8_t const *), p1), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce(p0, int16_t const *), p1), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce(p0, int32_t const *), p1), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce(p0, uint8_t const *), p1), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce(p0, uint16_t const *), p1), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce(p0, uint32_t const *), p1), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_z_f16 (__ARM_mve_coerce(p0, float16_t const *), p1), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_z_f32 (__ARM_mve_coerce(p0, float32_t const *), p1)))
  
  #define __arm_vld2q(p0) ( \
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce(p0, uint32_t const *)), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld2q_f16 (__ARM_mve_coerce(p0, float16_t const *)), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld2q_f32 (__ARM_mve_coerce(p0, float32_t const *))))
  
  #define __arm_vld4q(p0) ( \
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce(p0, uint32_t const *)), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld4q_f16 (__ARM_mve_coerce(p0, float16_t const *)), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld4q_f32 (__ARM_mve_coerce(p0, float32_t const *))))
  
  #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
--- 37559,37605 ----
  
  #define __arm_vld1q(p0) (\
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_f32 (__ARM_mve_coerce1(p0, float32_t *))))
  
  #define __arm_vld1q_z(p0,p1) ( \
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce1(p0, int8_t *), p1), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce1(p0, int16_t *), p1), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), p1), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), p1), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld1q_z_f16 (__ARM_mve_coerce1(p0, float16_t *), p1), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld1q_z_f32 (__ARM_mve_coerce1(p0, float32_t *), p1)))
  
  #define __arm_vld2q(p0) ( \
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld2q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld2q_f32 (__ARM_mve_coerce1(p0, float32_t *))))
  
  #define __arm_vld4q(p0) ( \
    _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *)), \
!   int (*)[__ARM_mve_type_float16_t_ptr]: __arm_vld4q_f16 (__ARM_mve_coerce1(p0, float16_t *)), \
!   int (*)[__ARM_mve_type_float32_t_ptr]: __arm_vld4q_f32 (__ARM_mve_coerce1(p0, float32_t *))))
  
  #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
*************** extern void *__ARM_undef;
*** 37802,37834 ****
    int (*)[__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_base_p_u32(p0, p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_base_p_f32(p0, p1, __ARM_mve_coerce(__p2, float32x4_t), p3));})
  
! #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \
!   int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));})
! 
! #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_p_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t), p3));})
! 
! #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_p_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t), p3));})
  
! #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)), \
!   int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_f32 (__ARM_mve_coerce(p0, float32_t *), __p1, __ARM_mve_coerce(__p2, float32x4_t)));})
  
  #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
--- 37802,37820 ----
    int (*)[__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_base_p_u32(p0, p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_base_p_f32(p0, p1, __ARM_mve_coerce(__p2, float32x4_t), p3));})
  
! #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t)), \
!   int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_f32 (__ARM_mve_coerce(__p0, float32_t *), p1, __ARM_mve_coerce(__p2, float32x4_t)));})
  
! #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_float32_t_ptr][__ARM_mve_type_float32x4_t]: __arm_vstrwq_scatter_offset_p_f32 (__ARM_mve_coerce(__p0, float32_t *), p1, __ARM_mve_coerce(__p2, float32x4_t), p3));})
  
  #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
*************** extern void *__ARM_undef;
*** 38416,38421 ****
--- 38402,38413 ----
  #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
+   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
+   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
+   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38865,38887 ****
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
  
- #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpneq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
- 
- 
  #define __arm_vqmovntq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
--- 38857,38862 ----
*************** extern void *__ARM_undef;
*** 39030,39051 ****
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpneq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
- #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpneq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
- 
  #define __arm_vshlcq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
    int (*)[__ARM_mve_type_int8x16_t]: __arm_vshlcq_s8 (__ARM_mve_coerce(__p0, int8x16_t), p1, p2), \
--- 39005,39010 ----
*************** extern void *__ARM_undef;
*** 39361,39412 ****
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vminaq_m_s16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vminaq_m_s32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
  
- #define __arm_vrmlaldavhaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2));})
- 
- #define __arm_vmlsdavxq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpleq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpleq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2));})
- 
- #define __arm_vmlsdavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2));})
- 
- #define __arm_vmlsdavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int16x8_t]: __arm_vshrntq_n_s16 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int32x4_t]: __arm_vshrntq_n_s32 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint16x8_t]: __arm_vshrntq_n_u16 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32x4_t]: __arm_vshrntq_n_u32 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
- 
- #define __arm_vmlsdavaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int16x8_t]: __arm_vrshrntq_n_s16 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int32x4_t]: __arm_vrshrntq_n_s32 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint16x8_t]: __arm_vrshrntq_n_u16 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32x4_t]: __arm_vrshrntq_n_u32 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
- 
  #define __arm_vmovlbq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
--- 39320,39325 ----
*************** extern void *__ARM_undef;
*** 39705,39730 ****
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
- #define __arm_vstrbq(p0,p1) ({ __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t)), \
-   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_s16 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t)), \
-   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_s32 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t)), \
-   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \
-   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
-   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));})
- 
- #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
-   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
-   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
-   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
-   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
-   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
- 
  #define __arm_vstrwq_scatter_base(p0,p1,p2) ({ __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_base_s32(p0, p1, __ARM_mve_coerce(__p2, int32x4_t)), \
--- 39618,39623 ----
*************** extern void *__ARM_undef;
*** 39732,39777 ****
  
  #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)));})
! 
! #define __arm_vstrbq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_p_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_p_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_p_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_p_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_p_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_p_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
! 
! #define __arm_vstrbq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_p_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_p_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_p_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_p_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vstrwq_scatter_base_p(p0,p1,p2,p3) ({ __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_base_p_s32 (p0, p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_base_p_u32 (p0, p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
! #define __arm_vld1q(p0) (_Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce(p0, uint32_t const *))))
  
  #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
--- 39625,39650 ----
  
  #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vstrwq_scatter_base_p(p0,p1,p2,p3) ({ __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_base_p_s32 (p0, p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_base_p_u32 (p0, p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
! #define __arm_vld1q(p0) (\
!   _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_u32 (__ARM_mve_coerce1(p0, uint32_t *))))
  
  #define __arm_vldrhq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
*************** extern void *__ARM_undef;
*** 39915,39948 ****
    int (*)[__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_base_s64 (p0, p1, __ARM_mve_coerce(__p2, int64x2_t)), \
    int (*)[__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_base_u64 (p0, p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
  
- #define __arm_vstrdq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_p_s64 (__ARM_mve_coerce(__p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
-   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_p_u64 (__ARM_mve_coerce(__p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
- 
- #define __arm_vstrdq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_s64 (__ARM_mve_coerce(__p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t)), \
-   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_u64 (__ARM_mve_coerce(__p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
- 
- #define __arm_vstrdq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_s64 (__ARM_mve_coerce(__p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
-   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_u64 (__ARM_mve_coerce(__p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
- 
- #define __arm_vstrdq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_s64 (__ARM_mve_coerce(__p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t)), \
-   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_u64 (__ARM_mve_coerce(__p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
- 
  #define __arm_vstrhq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
--- 39788,39793 ----
*************** extern void *__ARM_undef;
*** 39975,40003 ****
    int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
! #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)));})
! 
! #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)));})
! 
! #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
! #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(p0, int32_t *), __p1, __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint32_t *), __p1, __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
--- 39820,39836 ----
    int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrhq_scatter_shifted_offset_p_u16 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint16_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrhq_scatter_shifted_offset_p_u32 (__ARM_mve_coerce(p0, uint16_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
! #define __arm_vstrwq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t)));})
  
! #define __arm_vstrwq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrwq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int32_t *), p1, __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint32_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrwq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vstrwq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
*************** extern void *__ARM_undef;
*** 40154,40185 ****
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_veorq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_veorq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
- #define __arm_vmaxq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));})
- 
- #define __arm_vminq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vminq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vminq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vminq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vminq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vminq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vminq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
- 
  #define __arm_vmovlbq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \
    int (*)[__ARM_mve_type_int8x16_t]: __arm_vmovlbq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), p2), \
--- 39987,39992 ----
*************** extern void *__ARM_undef;
*** 40334,40362 ****
    int (*)[__ARM_mve_type_uint32x4_t]: __arm_vbrsrq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), p2, p3));})
  
  #define __arm_vld1q_z(p0,p1) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce(p0, int8_t const *), p1), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce(p0, int16_t const *), p1), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce(p0, int32_t const *), p1), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce(p0, uint8_t const *), p1), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce(p0, uint16_t const *), p1), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce(p0, uint32_t const *), p1)))
  
  #define __arm_vld2q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce(p0, uint32_t const *))))
  
  
  #define __arm_vld4q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce(p0, int8_t const *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce(p0, int16_t const *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce(p0, int32_t const *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce(p0, uint8_t const *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce(p0, uint16_t const *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce(p0, uint32_t const *))))
  
  #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 40141,40169 ----
    int (*)[__ARM_mve_type_uint32x4_t]: __arm_vbrsrq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), p2, p3));})
  
  #define __arm_vld1q_z(p0,p1) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld1q_z_s8 (__ARM_mve_coerce1(p0, int8_t *), p1), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld1q_z_s16 (__ARM_mve_coerce1(p0, int16_t *), p1), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld1q_z_s32 (__ARM_mve_coerce1(p0, int32_t *), p1), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld1q_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), p1), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld1q_z_u16 (__ARM_mve_coerce1(p0, uint16_t *), p1), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld1q_z_u32 (__ARM_mve_coerce1(p0, uint32_t *), p1)))
  
  #define __arm_vld2q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld2q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld2q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld2q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld2q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld2q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld2q_u32 (__ARM_mve_coerce1(p0, uint32_t *))))
  
  
  #define __arm_vld4q(p0) ( _Generic( (int (*)[__ARM_mve_typeid(p0)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr]: __arm_vld4q_s8 (__ARM_mve_coerce1(p0, int8_t *)), \
!   int (*)[__ARM_mve_type_int16_t_ptr]: __arm_vld4q_s16 (__ARM_mve_coerce1(p0, int16_t *)), \
!   int (*)[__ARM_mve_type_int32_t_ptr]: __arm_vld4q_s32 (__ARM_mve_coerce1(p0, int32_t *)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr]: __arm_vld4q_u8 (__ARM_mve_coerce1(p0, uint8_t *)), \
!   int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *))))
  
  #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 40703,40714 ****
  
  #define __arm_vldrbq_gather_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_s8 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_s16 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_s32 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_u8 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_u16 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_u32 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vqrdmlahq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 40510,40521 ----
  
  #define __arm_vldrbq_gather_offset_z(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_s8 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_s16 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_s32 (__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_z_u8 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_z_u16 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_z_u32 (__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vqrdmlahq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41007,41019 ****
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsldavaxq_p_s16(__p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsldavaxq_p_s32(__p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
- #define __arm_vrmlaldavhaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
- 
  #define __arm_vrmlaldavhaxq_p(p0,p1,p2,p3) __arm_vrmlaldavhaxq_p_s32(p0,p1,p2,p3)
  
  #define __arm_vrmlsldavhaq_p(p0,p1,p2,p3) __arm_vrmlsldavhaq_p_s32(p0,p1,p2,p3)
--- 40814,40819 ----
*************** extern void *__ARM_undef;
*** 41337,41357 ****
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmladhxq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmladhxq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
! #define __arm_vmlsdavaxq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaxq_p_s8 (__p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaxq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaxq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
! #define __arm_vmlsdavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaq_p_s8(__p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaq_p_s16(__p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaq_p_s32(__p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
  #define __arm_vmladavaxq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41137,41183 ----
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmladhxq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmladhxq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
! #define __arm_vmlsdavaxq_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaxq_p_s8 (p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaxq_p_s16 (p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaxq_p_s32 (p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
! #define __arm_vmlsdavaq(p0,p1,p2) ({  __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaq_s8(p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaq_s16(p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaq_s32(p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));})
! 
! #define __arm_vmlsdavaxq(p0,p1,p2) ({ __typeof(p2) __p2 = (p2); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaxq_s8(p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaxq_s16(p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaxq_s32(p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));})
! 
! #define __arm_vmlsdavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavq_p_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavq_p_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavq_p_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
! 
! #define __arm_vmlsdavxq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
+   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavxq_p_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavxq_p_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavxq_p_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
+ 
+ #define __arm_vmlsdavaq_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaq_p_s8(p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaq_p_s16(p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaq_p_s32(p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
  #define __arm_vmladavaxq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41370,41381 ****
  
  #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32 (__ARM_mve_coerce(p0, int8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32 (__ARM_mve_coerce(p0, uint8_t const *), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vidupq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
   __typeof(p1) __p1 = (p1); \
--- 41196,41207 ----
  
  #define __arm_vldrbq_gather_offset(p0,p1) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_s8(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_s16(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_s32(__ARM_mve_coerce1(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vldrbq_gather_offset_u8(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vldrbq_gather_offset_u16(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vldrbq_gather_offset_u32(__ARM_mve_coerce1(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vidupq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
   __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41439,41446 ****
  
  #define __arm_viwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u16 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_viwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 41265,41272 ----
  
  #define __arm_viwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u16 (__ARM_mve_coerce(__p0, uint32_t), p1, (const int) p2), \
!   int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, (const int) p2));})
  
  #define __arm_viwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 41622,41637 ****
    int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vmaxavq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vmaxavq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), p2));})
  
- #define __arm_vmaxq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmaxq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmaxq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmaxq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
-   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmaxq_x_u8( __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
-   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmaxq_x_u16( __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
-   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmaxq_x_u32( __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
- 
  #define __arm_vmaxvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
--- 41448,41453 ----
*************** extern void *__ARM_undef;
*** 41666,41671 ****
--- 41482,41497 ----
    int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vminavq_p_s16 (__p0, __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vminavq_p_s32 (__p0, __ARM_mve_coerce(__p1, int32x4_t), p2));})
  
+ #define __arm_vmaxq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
+   __typeof(p2) __p2 = (p2); \
+   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmaxq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmaxq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmaxq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
+   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmaxq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
+   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmaxq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
+   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmaxq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
+ 
  #define __arm_vminq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
*************** extern void *__ARM_undef;
*** 41804,41825 ****
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavxq_p_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavxq_p_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
  
- #define __arm_vmlsdavaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaq_s8(__p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaq_s16(__p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaq_s32(__p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));})
- 
- #define __arm_vmlsdavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavaxq_s8(__p0, __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavaxq_s16(__p0, __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavaxq_s32(__p0, __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));})
- 
  #define __arm_vmlsdavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
--- 41630,41635 ----
*************** extern void *__ARM_undef;
*** 41827,41839 ****
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
- #define __arm_vmlsdavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavq_p_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavq_p_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavq_p_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
- 
  #define __arm_vmlsdavxq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
--- 41637,41642 ----
*************** extern void *__ARM_undef;
*** 41841,41853 ****
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavxq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavxq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
- #define __arm_vmlsdavxq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
-   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmlsdavxq_p_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
-   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlsdavxq_p_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
-   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlsdavxq_p_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2));})
- 
  #define __arm_vmlsldavaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
--- 41644,41649 ----
*************** extern void *__ARM_undef;
*** 41942,41954 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulltq_poly_x_p8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulltq_poly_x_p16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3));})
  
- #define __arm_vrmlaldavhaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
-   __typeof(p1) __p1 = (p1); \
-   __typeof(p2) __p2 = (p2); \
-   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
-   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
- 
  #define __arm_vrmlaldavhaxq(p0,p1,p2) __arm_vrmlaldavhaxq_s32(p0,p1,p2)
  
  #define __arm_vrmlaldavhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
--- 41738,41743 ----
*************** extern void *__ARM_undef;
*** 41988,42022 ****
    int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
! #define __arm_vstrbq_p(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_p_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_p_s16 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_p_s32 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_p_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_p_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_p_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
! 
! #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_s16 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_s32 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
! 
! 
! #define __arm_vstrbq_scatter_offset_p(p0,p1,p2,p3) ({__typeof(p1) __p1 = (p1); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_p_s8 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_p_s16 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_p_s32 (__ARM_mve_coerce(p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_p_u8 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_p_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_p_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vstrdq_scatter_base(p0,p1,p2) ({ __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \
--- 41777,41791 ----
    int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_u16 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_u32 (__ARM_mve_coerce(p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
! #define __arm_vstrbq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int8x16_t]: __arm_vstrbq_p_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int16x8_t]: __arm_vstrbq_p_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_int32x4_t]: __arm_vstrbq_p_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_p_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_p_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_p_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vstrdq_scatter_base(p0,p1,p2) ({ __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p2)])0, \
*************** extern void *__ARM_undef;
*** 42028,42056 ****
    int (*)[__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_base_p_s64 (p0, p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
    int (*)[__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_base_p_u64 (p0, p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
  
! #define __arm_vstrdq_scatter_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_s64 (__ARM_mve_coerce(p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t)), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_u64 (__ARM_mve_coerce(p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
  
! #define __arm_vstrdq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_p_s64 (__ARM_mve_coerce(p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_p_u64 (__ARM_mve_coerce(p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
  
! #define __arm_vstrdq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_s64 (__ARM_mve_coerce(p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t)), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_u64 (__ARM_mve_coerce(p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
  
! #define __arm_vstrdq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_s64 (__ARM_mve_coerce(p0, int64_t *), __p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_u64 (__ARM_mve_coerce(p0, uint64_t *), __p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
  
  #endif /* __cplusplus  */
  #endif /* __ARM_FEATURE_MVE  */
--- 41797,41861 ----
    int (*)[__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_base_p_s64 (p0, p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
    int (*)[__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_base_p_u64 (p0, p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
  
! #define __arm_vrmlaldavhaq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
! #define __arm_vrmlaldavhaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
! #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
! #define __arm_vstrbq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vstrbq_scatter_offset_p_s8 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vstrbq_scatter_offset_p_s16 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vstrbq_scatter_offset_p_s32 (__ARM_mve_coerce(__p0, int8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vstrbq_scatter_offset_p_u8 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vstrbq_scatter_offset_p_u16 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_uint8_t_ptr][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vstrbq_scatter_offset_p_u32 (__ARM_mve_coerce(__p0, uint8_t *), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
! 
! #define __arm_vstrdq_scatter_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_p_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_p_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
! 
! #define __arm_vstrdq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_offset_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t)), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_offset_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
! 
! #define __arm_vstrdq_scatter_shifted_offset_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t), p3), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_p_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t), p3));})
! 
! #define __arm_vstrdq_scatter_shifted_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p2) __p2 = (p2); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int64_t_ptr][__ARM_mve_type_int64x2_t]: __arm_vstrdq_scatter_shifted_offset_s64 (__ARM_mve_coerce(__p0, int64_t *), p1, __ARM_mve_coerce(__p2, int64x2_t)), \
!   int (*)[__ARM_mve_type_uint64_t_ptr][__ARM_mve_type_uint64x2_t]: __arm_vstrdq_scatter_shifted_offset_u64 (__ARM_mve_coerce(__p0, uint64_t *), p1, __ARM_mve_coerce(__p2, uint64x2_t)));})
  
  #endif /* __cplusplus  */
  #endif /* __ARM_FEATURE_MVE  */
diff -Nrcpad gcc-10.3.0/gcc/config/arm/iterators.md gcc-10.4.0/gcc/config/arm/iterators.md
*** gcc-10.3.0/gcc/config/arm/iterators.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/iterators.md	Tue Jun 28 08:54:27 2022
***************
*** 269,274 ****
--- 269,275 ----
  
  ;; 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")
--- 576,585 ----
  			  (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")
diff -Nrcpad gcc-10.3.0/gcc/config/arm/mve.md gcc-10.4.0/gcc/config/arm/mve.md
*** gcc-10.3.0/gcc/config/arm/mve.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/mve.md	Tue Jun 28 08:54:27 2022
***************
*** 41,84 ****
  
    if (which_alternative == 4 || which_alternative == 7)
      {
!       rtx ops[2];
!       int regno = (which_alternative == 7)
! 		  ? REGNO (operands[1]) : REGNO (operands[0]);
! 
!       ops[0] = operands[0];
!       ops[1] = operands[1];
!       if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode)
! 	{
! 	  if (which_alternative == 7)
! 	    {
! 	      ops[1] = gen_rtx_REG (DImode, regno);
! 	      output_asm_insn ("vstr.64\t%P1, %E0",ops);
! 	    }
! 	  else
! 	    {
! 	      ops[0] = gen_rtx_REG (DImode, regno);
! 	      output_asm_insn ("vldr.64\t%P0, %E1",ops);
! 	    }
! 	}
!       else if (<MODE>mode == TImode)
  	{
  	  if (which_alternative == 7)
! 	    output_asm_insn ("vstr.64\t%q1, %E0",ops);
  	  else
! 	    output_asm_insn ("vldr.64\t%q0, %E1",ops);
  	}
        else
  	{
  	  if (which_alternative == 7)
! 	    {
! 	      ops[1] = gen_rtx_REG (TImode, regno);
! 	      output_asm_insn ("vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0",ops);
! 	    }
  	  else
! 	    {
! 	      ops[0] = gen_rtx_REG (TImode, regno);
! 	      output_asm_insn ("vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1",ops);
! 	    }
  	}
        return "";
      }
--- 41,59 ----
  
    if (which_alternative == 4 || which_alternative == 7)
      {
!       if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode || <MODE>mode == TImode)
  	{
  	  if (which_alternative == 7)
! 	    output_asm_insn ("vstrw.32\t%q1, %E0", operands);
  	  else
! 	    output_asm_insn ("vldrw.u32\t%q0, %E1",operands);
  	}
        else
  	{
  	  if (which_alternative == 7)
! 	    output_asm_insn ("vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0", operands);
  	  else
! 	    output_asm_insn ("vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1", operands);
  	}
        return "";
      }
***************
*** 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])
--- 79,92 ----
     (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])
***************
*** 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"
--- 10710,10715 ----
diff -Nrcpad gcc-10.3.0/gcc/config/arm/sync.md gcc-10.4.0/gcc/config/arm/sync.md
*** gcc-10.3.0/gcc/config/arm/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/sync.md	Tue Jun 28 08:54:27 2022
***************
*** 187,206 ****
  ;; Constraints of this pattern must be at least as strict as those of the
  ;; cbranchsi operations in thumb1.md and aim to be as permissive.
  (define_insn_and_split "@atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1"
!   [(set (match_operand:CCSI 0 "cc_register_operand" "=&c,&l,&l,&l")	;; bool out
  	(unspec_volatile:CCSI [(const_int 0)] VUNSPEC_ATOMIC_CAS))
!    (set (match_operand:SI 1 "s_register_operand" "=&r,&l,&0,&l*h")	;; val out
  	(zero_extend:SI
! 	  (match_operand:NARROW 2 "mem_noofs_operand" "+Ua,Ua,Ua,Ua")))	;; memory
     (set (match_dup 2)
  	(unspec_volatile:NARROW
! 	  [(match_operand:SI 3 "arm_add_operand" "rIL,lIL*h,J,*r")	;; expected
! 	   (match_operand:NARROW 4 "s_register_operand" "r,r,r,r")	;; desired
  	   (match_operand:SI 5 "const_int_operand")		;; is_weak
  	   (match_operand:SI 6 "const_int_operand")		;; mod_s
  	   (match_operand:SI 7 "const_int_operand")]		;; mod_f
  	  VUNSPEC_ATOMIC_CAS))
!    (clobber (match_scratch:SI 8 "=&r,X,X,X"))]
    "<NARROW:sync_predtab>"
    "#"
    "&& reload_completed"
--- 187,206 ----
  ;; Constraints of this pattern must be at least as strict as those of the
  ;; cbranchsi operations in thumb1.md and aim to be as permissive.
  (define_insn_and_split "@atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1"
!   [(set (match_operand:CCSI 0 "cc_register_operand" "=&c,&l,&l")	;; bool out
  	(unspec_volatile:CCSI [(const_int 0)] VUNSPEC_ATOMIC_CAS))
!    (set (match_operand:SI 1 "s_register_operand" "=&r,&l,&l*h")	;; val out
  	(zero_extend:SI
! 	  (match_operand:NARROW 2 "mem_noofs_operand" "+Ua,Ua,Ua")))	;; memory
     (set (match_dup 2)
  	(unspec_volatile:NARROW
! 	  [(match_operand:SI 3 "arm_add_operand" "rIL,lILJ*h,*r")	;; expected
! 	   (match_operand:NARROW 4 "s_register_operand" "r,r,r")	;; desired
  	   (match_operand:SI 5 "const_int_operand")		;; is_weak
  	   (match_operand:SI 6 "const_int_operand")		;; mod_s
  	   (match_operand:SI 7 "const_int_operand")]		;; mod_f
  	  VUNSPEC_ATOMIC_CAS))
!    (clobber (match_scratch:SI 8 "=&r,X,X"))]
    "<NARROW:sync_predtab>"
    "#"
    "&& reload_completed"
***************
*** 209,215 ****
      arm_split_compare_and_swap (operands);
      DONE;
    }
!   [(set_attr "arch" "32,v8mb,v8mb,v8mb")])
  
  (define_mode_attr cas_cmp_operand
    [(SI "arm_add_operand") (DI "cmpdi_operand")])
--- 209,215 ----
      arm_split_compare_and_swap (operands);
      DONE;
    }
!   [(set_attr "arch" "32,v8mb,v8mb")])
  
  (define_mode_attr cas_cmp_operand
    [(SI "arm_add_operand") (DI "cmpdi_operand")])
***************
*** 219,237 ****
  ;; Constraints of this pattern must be at least as strict as those of the
  ;; cbranchsi operations in thumb1.md and aim to be as permissive.
  (define_insn_and_split "@atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1"
!   [(set (match_operand:CCSI 0 "cc_register_operand" "=&c,&l,&l,&l")	;; bool out
  	(unspec_volatile:CCSI [(const_int 0)] VUNSPEC_ATOMIC_CAS))
!    (set (match_operand:SIDI 1 "s_register_operand" "=&r,&l,&0,&l*h")	;; val out
! 	(match_operand:SIDI 2 "mem_noofs_operand" "+Ua,Ua,Ua,Ua"))	;; memory
     (set (match_dup 2)
  	(unspec_volatile:SIDI
! 	  [(match_operand:SIDI 3 "<SIDI:cas_cmp_operand>" "<SIDI:cas_cmp_str>,lIL*h,J,*r") ;; expect
! 	   (match_operand:SIDI 4 "s_register_operand" "r,r,r,r")	;; desired
  	   (match_operand:SI 5 "const_int_operand")		;; is_weak
  	   (match_operand:SI 6 "const_int_operand")		;; mod_s
  	   (match_operand:SI 7 "const_int_operand")]		;; mod_f
  	  VUNSPEC_ATOMIC_CAS))
!    (clobber (match_scratch:SI 8 "=&r,X,X,X"))]
    "<SIDI:sync_predtab>"
    "#"
    "&& reload_completed"
--- 219,237 ----
  ;; Constraints of this pattern must be at least as strict as those of the
  ;; cbranchsi operations in thumb1.md and aim to be as permissive.
  (define_insn_and_split "@atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1"
!   [(set (match_operand:CCSI 0 "cc_register_operand" "=&c,&l,&l")	;; bool out
  	(unspec_volatile:CCSI [(const_int 0)] VUNSPEC_ATOMIC_CAS))
!    (set (match_operand:SIDI 1 "s_register_operand" "=&r,&l,&l*h")	;; val out
! 	(match_operand:SIDI 2 "mem_noofs_operand" "+Ua,Ua,Ua"))	;; memory
     (set (match_dup 2)
  	(unspec_volatile:SIDI
! 	  [(match_operand:SIDI 3 "<SIDI:cas_cmp_operand>" "<SIDI:cas_cmp_str>,lILJ*h,*r") ;; expect
! 	   (match_operand:SIDI 4 "s_register_operand" "r,r,r")	;; desired
  	   (match_operand:SI 5 "const_int_operand")		;; is_weak
  	   (match_operand:SI 6 "const_int_operand")		;; mod_s
  	   (match_operand:SI 7 "const_int_operand")]		;; mod_f
  	  VUNSPEC_ATOMIC_CAS))
!    (clobber (match_scratch:SI 8 "=&r,X,X"))]
    "<SIDI:sync_predtab>"
    "#"
    "&& reload_completed"
***************
*** 240,246 ****
      arm_split_compare_and_swap (operands);
      DONE;
    }
!   [(set_attr "arch" "32,v8mb,v8mb,v8mb")])
  
  (define_insn_and_split "atomic_exchange<mode>"
    [(set (match_operand:QHSD 0 "s_register_operand" "=&r,&r")	;; output
--- 240,246 ----
      arm_split_compare_and_swap (operands);
      DONE;
    }
!   [(set_attr "arch" "32,v8mb,v8mb")])
  
  (define_insn_and_split "atomic_exchange<mode>"
    [(set (match_operand:QHSD 0 "s_register_operand" "=&r,&r")	;; output
diff -Nrcpad gcc-10.3.0/gcc/config/arm/t-rmprofile gcc-10.4.0/gcc/config/arm/t-rmprofile
*** gcc-10.3.0/gcc/config/arm/t-rmprofile	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/t-rmprofile	Tue Jun 28 08:54:27 2022
*************** MULTILIB_REQUIRED	+= mthumb/march=armv8.
*** 53,62 ****
  # Arch Matches
  MULTILIB_MATCHES	+= march?armv6s-m=march?armv6-m
  
  # Map all v8-m.main+dsp FP variants down to the variant without DSP.
! MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8-m.main+dsp \
  			   $(foreach FP, +fp +fp.dp, \
! 			     march?armv8-m.main$(FP)=march?armv8-m.main+dsp$(FP))
  
  # For single-precision only fpv5, use the base fp libraries
  MULTILIB_MATCHES	+= march?armv7e-m+fp=march?armv7e-m+fpv5
--- 53,67 ----
  # Arch Matches
  MULTILIB_MATCHES	+= march?armv6s-m=march?armv6-m
  
+ # For all MULITIB_MATCHES for v8-m and above add mlibarch? on the right hand side
+ # of = in the variant string instead of march?.  This is needed becuase all the
+ # MULITIB_MATCHES variant strings are compared with mlibarch option for multilib
+ # linking.
+ 
  # Map all v8-m.main+dsp FP variants down to the variant without DSP.
! MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8-m.main+dsp \
  			   $(foreach FP, +fp +fp.dp, \
! 			     march?armv8-m.main$(FP)=mlibarch?armv8-m.main+dsp$(FP))
  
  # For single-precision only fpv5, use the base fp libraries
  MULTILIB_MATCHES	+= march?armv7e-m+fp=march?armv7e-m+fpv5
*************** MULTILIB_MATCHES	+= march?armv7e-m+fp=ma
*** 65,74 ****
  MULTILIB_REUSE		+= $(foreach ARCH, armv6s-m armv7-m armv7e-m armv8-m\.base armv8-m\.main, \
  			     mthumb/march.$(ARCH)/mfloat-abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp)
  
- 
  # Map v8.1-M to v8-M.
! MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8.1-m.main
! MULTILIB_MATCHES	+= march?armv8-m.main=march?armv8.1-m.main+dsp
  MULTILIB_REUSE		+= mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft
  MULTILIB_REUSE		+= mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp
  
--- 70,78 ----
  MULTILIB_REUSE		+= $(foreach ARCH, armv6s-m armv7-m armv7e-m armv8-m\.base armv8-m\.main, \
  			     mthumb/march.$(ARCH)/mfloat-abi.soft=mthumb/march.$(ARCH)/mfloat-abi.softfp)
  
  # Map v8.1-M to v8-M.
! MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8.1-m.main
! MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8.1-m.main+dsp
  MULTILIB_REUSE		+= mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.soft
  MULTILIB_REUSE		+= mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.softfp
  
*************** v8_1m_dp_variants = +fp.dp +dsp+fp.dp +f
*** 77,84 ****
  
  # Map all v8.1-m.main FP sp variants down to v8-m.
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \
! 			     march?armv8-m.main+fp=march?armv8.1-m.main$(FP))
  
  # Map all v8.1-m.main FP dp variants down to v8-m.
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \
! 			     march?armv8-m.main+fp.dp=march?armv8.1-m.main$(FP))
--- 81,95 ----
  
  # Map all v8.1-m.main FP sp variants down to v8-m.
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_sp_variants), \
! 			     march?armv8-m.main+fp=mlibarch?armv8.1-m.main$(FP))
  
  # Map all v8.1-m.main FP dp variants down to v8-m.
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \
! 			     march?armv8-m.main+fp.dp=mlibarch?armv8.1-m.main$(FP))
! 
! # For all the MULTILIB_REQUIRED for v8-m and above, add MULTILIB_MATCHES which
! # maps mlibarch with march for multilib linking.
! MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8-m.main
! MULTILIB_MATCHES	+= march?armv8-m.main+fp=mlibarch?armv8-m.main+fp
! MULTILIB_MATCHES	+= march?armv8-m.main+fp.dp=mlibarch?armv8-m.main+fp.dp
! MULTILIB_MATCHES	+= march?armv8.1-m.main+mve=mlibarch?armv8.1-m.main+mve
diff -Nrcpad gcc-10.3.0/gcc/config/arm/thumb1.md gcc-10.4.0/gcc/config/arm/thumb1.md
*** gcc-10.3.0/gcc/config/arm/thumb1.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/thumb1.md	Tue Jun 28 08:54:27 2022
***************
*** 1242,1247 ****
--- 1242,1262 ----
     (set_attr "type" "multiple")]
  )
  
+ ;; An expander which makes use of the cbranchsi4_scratch insn, but can
+ ;; be used safely after RA.
+ (define_expand "cbranchsi4_neg_late"
+   [(parallel [
+      (set (pc) (if_then_else
+ 		(match_operator 4 "arm_comparison_operator"
+ 		 [(match_operand:SI 1 "s_register_operand")
+ 		  (match_operand:SI 2 "thumb1_cmpneg_operand")])
+ 		(label_ref (match_operand 3 "" ""))
+ 		(pc)))
+      (clobber (match_operand:SI 0 "s_register_operand"))
+   ])]
+   "TARGET_THUMB1"
+ )
+ 
  ;; Changes to the constraints of this pattern must be propagated to those of
  ;; atomic compare_and_swap splitters in sync.md.  These must be at least as
  ;; strict as the constraints here and aim to be as permissive.
diff -Nrcpad gcc-10.3.0/gcc/config/arm/vfp.md gcc-10.4.0/gcc/config/arm/vfp.md
*** gcc-10.3.0/gcc/config/arm/vfp.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/arm/vfp.md	Tue Jun 28 08:54:27 2022
***************
*** 1703,1714 ****
     (set_attr "type" "mov_reg")]
  )
  
  (define_insn "lazy_store_multiple_insn"
!   [(set (match_operand:SI 0 "s_register_operand" "+&rk")
! 	(post_dec:SI (match_dup 0)))
!    (unspec_volatile [(const_int 0)
! 		     (mem:SI (post_dec:SI (match_dup 0)))]
! 		    VUNSPEC_VLSTM)]
    "use_cmse && reload_completed"
    "vlstm%?\\t%0"
    [(set_attr "predicable" "yes")
--- 1703,1717 ----
     (set_attr "type" "mov_reg")]
  )
  
+ ;; Both this and the next instruction are treated by GCC in the same
+ ;; way as a blockage pattern.  That's perhaps stronger than it needs
+ ;; to be, but we do not want accesses to the VFP register bank to be
+ ;; moved across either instruction.
+ 
  (define_insn "lazy_store_multiple_insn"
!   [(unspec_volatile
!     [(mem:BLK (match_operand:SI 0 "s_register_operand" "rk"))]
!     VUNSPEC_VLSTM)]
    "use_cmse && reload_completed"
    "vlstm%?\\t%0"
    [(set_attr "predicable" "yes")
***************
*** 1716,1729 ****
  )
  
  (define_insn "lazy_load_multiple_insn"
!   [(set (match_operand:SI 0 "s_register_operand" "+&rk")
! 	(post_inc:SI (match_dup 0)))
!    (unspec_volatile:SI [(const_int 0)
! 			(mem:SI (match_dup 0))]
! 		       VUNSPEC_VLLDM)]
    "use_cmse && reload_completed"
!   "vlldm%?\\t%0"
!   [(set_attr "predicable" "yes")
     (set_attr "type" "load_4")]
  )
  
--- 1719,1734 ----
  )
  
  (define_insn "lazy_load_multiple_insn"
!   [(unspec_volatile
!     [(mem:BLK (match_operand:SI 0 "s_register_operand" "rk,rk"))]
!     VUNSPEC_VLLDM)]
    "use_cmse && reload_completed"
!   "@
!    vscclrm\\t{vpr}\;vlldm\\t%0
!    vlldm\\t%0"
!   [(set_attr "arch" "fix_vlldm,*")
!    (set_attr "predicable" "no")
!    (set_attr "length" "8,4")
     (set_attr "type" "load_4")]
  )
  
diff -Nrcpad gcc-10.3.0/gcc/config/bpf/bpf.h gcc-10.4.0/gcc/config/bpf/bpf.h
*** gcc-10.3.0/gcc/config/bpf/bpf.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/bpf/bpf.h	Tue Jun 28 08:54:27 2022
***************
*** 57,64 ****
     64-bit at any time.  */
  #define STACK_BOUNDARY 64
  
! /* Function entry points are aligned to 128 bits.  */
! #define FUNCTION_BOUNDARY 128
  
  /* Maximum alignment required by data of any type.  */
  #define BIGGEST_ALIGNMENT 64
--- 57,64 ----
     64-bit at any time.  */
  #define STACK_BOUNDARY 64
  
! /* Function entry points are aligned to 64 bits.  */
! #define FUNCTION_BOUNDARY 64
  
  /* Maximum alignment required by data of any type.  */
  #define BIGGEST_ALIGNMENT 64
*************** enum reg_class
*** 422,430 ****
     Try to use asm_output_aligned_bss to implement this macro.  */
  
  #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN)	\
!   do {								\
!     ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN);		\
!   } while (0)
  
  /*** Output and Generation of Labels.  */
  
--- 422,436 ----
     Try to use asm_output_aligned_bss to implement this macro.  */
  
  #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN)	\
!   do									\
!     {									\
!       ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
!       fprintf ((FILE), "%s", "\t.lcomm\t");				\
!       assemble_name ((FILE), (NAME));					\
!       fprintf ((FILE), "," HOST_WIDE_INT_PRINT_UNSIGNED ",%u\n",	\
! 	       (SIZE), (ALIGN) / BITS_PER_UNIT);			\
!     }									\
!   while (0)
  
  /*** Output and Generation of Labels.  */
  
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-c.c gcc-10.4.0/gcc/config/darwin-c.c
*** gcc-10.3.0/gcc/config/darwin-c.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/darwin-c.c	Tue Jun 28 08:54:27 2022
*************** macosx_version_as_macro (void)
*** 691,697 ****
    if (!version_array)
      goto fail;
  
!   if (version_array[MAJOR] < 10 || version_array[MAJOR] > 11)
      goto fail;
  
    if (version_array[MAJOR] == 10 && version_array[MINOR] < 10)
--- 691,698 ----
    if (!version_array)
      goto fail;
  
!   /* System tools accept up to 99 as a major version.  */
!   if (version_array[MAJOR] < 10 || version_array[MAJOR] > 99)
      goto fail;
  
    if (version_array[MAJOR] == 10 && version_array[MINOR] < 10)
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-driver.c gcc-10.4.0/gcc/config/darwin-driver.c
*** gcc-10.3.0/gcc/config/darwin-driver.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/darwin-driver.c	Tue Jun 28 08:54:27 2022
*************** validate_macosx_version_min (const char
*** 64,80 ****
  
    major = strtoul (version_str, &end, 10);
  
!   if (major < 10 || major > 11 ) /* MacOS 10 and 11 are known. */
      return NULL;
  
    /* Skip a separating period, if there's one.  */
    version_str = end + ((*end == '.') ? 1 : 0);
  
!   if (major == 11 && *end != '\0' && !ISDIGIT (version_str[0]))
!      /* For MacOS 11, we allow just the major number, but if the minor is
  	there it must be numeric.  */
      return NULL;
!   else if (major == 11 && *end == '\0')
      /* We will rewrite 11 =>  11.0.0.  */
      need_rewrite = true;
    else if (major == 10 && (*end == '\0' || !ISDIGIT (version_str[0])))
--- 64,81 ----
  
    major = strtoul (version_str, &end, 10);
  
!   /* macOS 10, 11, and 12 are known. clang accepts up to 99.  */
!   if (major < 10 || major > 99)
      return NULL;
  
    /* Skip a separating period, if there's one.  */
    version_str = end + ((*end == '.') ? 1 : 0);
  
!   if (major > 10 && *end != '\0' && !ISDIGIT (version_str[0]))
!      /* For macOS 11+, we allow just the major number, but if the minor is
  	there it must be numeric.  */
      return NULL;
!   else if (major > 10 && *end == '\0')
      /* We will rewrite 11 =>  11.0.0.  */
      need_rewrite = true;
    else if (major == 10 && (*end == '\0' || !ISDIGIT (version_str[0])))
*************** darwin_find_version_from_kernel (void)
*** 159,178 ****
      goto parse_failed;
  
    /* Darwin20 sees a transition to macOS 11.  In this, it seems that the
!      mapping to macOS minor version is now shifted to the kernel minor
!      version - 1 (at least for the initial releases).  At this stage, we
!      don't know what macOS version will correspond to Darwin21.  */
    if (major_vers >= 20)
      {
!       int minor_vers = *version_p++ - '0';
!       if (ISDIGIT (*version_p))
! 	minor_vers = minor_vers * 10 + (*version_p++ - '0');
!       if (*version_p++ != '.')
! 	goto parse_failed;
!       if (minor_vers > 0)
! 	minor_vers -= 1; /* Kernel 20.3 => macOS 11.2.  */
!       /* It's not yet clear whether patch level will be considered.  */
!       asprintf (&new_flag, "11.%02d.00", minor_vers);
      }
    else if (major_vers - 4 <= 4)
      /* On 10.4 and earlier, the old linker is used which does not
--- 160,172 ----
      goto parse_failed;
  
    /* Darwin20 sees a transition to macOS 11.  In this, it seems that the
!      mapping to macOS minor version and patch level is now always 0, 0
!      (at least for macOS 11 and 12).  */
    if (major_vers >= 20)
      {
!       /* Apple clang doesn't include the minor version or the patch level
! 	 in the object file, nor does it pass it to ld  */
!       asprintf (&new_flag, "%d.00.00", major_vers - 9);
      }
    else if (major_vers - 4 <= 4)
      /* On 10.4 and earlier, the old linker is used which does not
*************** maybe_get_sysroot_from_sdkroot ()
*** 259,272 ****
    return xstrndup (maybe_sysroot, strlen (maybe_sysroot));
  }
  
! /* Translate -filelist and -framework options in *DECODED_OPTIONS
!    (size *DECODED_OPTIONS_COUNT) to use -Xlinker so that they are
!    considered to be linker inputs in the case that no other inputs are
!    specified.  Handling these options in DRIVER_SELF_SPECS does not
!    suffice because specs are too late to add linker inputs, and
!    handling them in LINK_SPEC does not suffice because the linker will
!    not be called if there are no other inputs.  When native, also
!    default the -mmacosx-version-min flag.  */
  
  void
  darwin_driver_init (unsigned int *decoded_options_count,
--- 253,263 ----
    return xstrndup (maybe_sysroot, strlen (maybe_sysroot));
  }
  
! /* Handle the deduction of m32/m64 from -arch flags and the interactions
!    between them (i.e. try to warn a user who thinks that they have a driver
!    that can produce multi-slice "FAT" outputs with more than one arch).
!    Default the -mmacosx-version-min flag, which requires a system call on
!    native hosts.  */
  
  void
  darwin_driver_init (unsigned int *decoded_options_count,
*************** darwin_driver_init (unsigned int *decode
*** 284,289 ****
--- 275,281 ----
    const char *vers_string = NULL;
    bool seen_version_min = false;
    bool seen_sysroot_p = false;
+   bool noexport_p = true;
  
    for (i = 1; i < *decoded_options_count; i++)
      {
*************** darwin_driver_init (unsigned int *decode
*** 326,348 ****
  	  seenM64 = true;
  	  break;
  
- 	case OPT_filelist:
- 	case OPT_framework:
- 	  ++*decoded_options_count;
- 	  *decoded_options = XRESIZEVEC (struct cl_decoded_option,
- 					 *decoded_options,
- 					 *decoded_options_count);
- 	  memmove (*decoded_options + i + 2,
- 		   *decoded_options + i + 1,
- 		   ((*decoded_options_count - i - 2)
- 		    * sizeof (struct cl_decoded_option)));
- 	  generate_option (OPT_Xlinker, (*decoded_options)[i].arg, 1,
- 			   CL_DRIVER, &(*decoded_options)[i + 1]);
- 	  generate_option (OPT_Xlinker,
- 			   (*decoded_options)[i].canonical_option[0], 1,
- 			   CL_DRIVER, &(*decoded_options)[i]);
- 	  break;
- 
  	case OPT_mmacosx_version_min_:
  	  seen_version_min = true;
  	  vers_string =
--- 318,323 ----
*************** darwin_driver_init (unsigned int *decode
*** 369,374 ****
--- 344,356 ----
  	  seen_sysroot_p = true;
  	  break;
  
+ 	case OPT_Xlinker:
+ 	case OPT_Wl_:
+ 	  gcc_checking_assert ((*decoded_options)[i].arg);
+ 	  if (strncmp ((*decoded_options)[i].arg, "-exported_symbol", 16) == 0)
+ 	    noexport_p = false;
+ 	  break;
+ 
  	default:
  	  break;
  	}
*************** darwin_driver_init (unsigned int *decode
*** 420,425 ****
--- 402,411 ----
      }
  #endif
  
+   /* If there is nothing else on the command line, do not add sysroot etc.  */
+   if (*decoded_options_count <= 1)
+     return;
+ 
    if (appendM32 || appendM64)
      {
        ++*decoded_options_count;
*************** darwin_driver_init (unsigned int *decode
*** 430,436 ****
  		       &(*decoded_options)[*decoded_options_count - 1]);
      }
  
!   if (! seen_sysroot_p)
      {
        /* We will pick up an SDKROOT if we didn't specify a sysroot and treat
  	 it as overriding any configure-time --with-sysroot.  */
--- 416,422 ----
  		       &(*decoded_options)[*decoded_options_count - 1]);
      }
  
!   if (!seen_sysroot_p)
      {
        /* We will pick up an SDKROOT if we didn't specify a sysroot and treat
  	 it as overriding any configure-time --with-sysroot.  */
*************** darwin_driver_init (unsigned int *decode
*** 449,455 ****
    /* We will need to know the OS X version we're trying to build for here
       so that we can figure out the mechanism and source for the sysroot to
       be used.  */
!   if (! seen_version_min && *decoded_options_count > 1)
      /* Not set by the User, try to figure it out.  */
      vers_string = darwin_default_min_version ();
  
--- 435,441 ----
    /* We will need to know the OS X version we're trying to build for here
       so that we can figure out the mechanism and source for the sysroot to
       be used.  */
!   if (!seen_version_min)
      /* Not set by the User, try to figure it out.  */
      vers_string = darwin_default_min_version ();
  
*************** darwin_driver_init (unsigned int *decode
*** 486,489 ****
--- 472,485 ----
  			  &(*decoded_options)[*decoded_options_count - 1]);
          }
      }
+ 
+   if (noexport_p)
+     {
+       ++*decoded_options_count;
+       *decoded_options = XRESIZEVEC (struct cl_decoded_option,
+ 				     *decoded_options,
+ 				     *decoded_options_count);
+       generate_option (OPT_nodefaultexport, NULL, 1, CL_DRIVER,
+ 		       &(*decoded_options)[*decoded_options_count - 1]);
+     }
  }
diff -Nrcpad gcc-10.3.0/gcc/config/darwin-sections.def gcc-10.4.0/gcc/config/darwin-sections.def
*** gcc-10.3.0/gcc/config/darwin-sections.def	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/darwin-sections.def	Tue Jun 28 08:54:27 2022
*************** DEF_SECTION (objc2_constant_string_objec
*** 201,206 ****
--- 201,207 ----
  
  /* Additions for compatibility with later runtime conventions especially for
     sections containing strings.  */
+ 
  DEF_SECTION (objc2_data_section, 0, ".section __DATA, __data", 1)
  
  DEF_SECTION (objc2_ivar_section, 0, ".section __DATA, __objc_ivar", 1)
diff -Nrcpad gcc-10.3.0/gcc/config/darwin.c gcc-10.4.0/gcc/config/darwin.c
*** gcc-10.3.0/gcc/config/darwin.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/darwin.c	Tue Jun 28 08:54:27 2022
*************** static bool ld_uses_coal_sects = false;
*** 108,113 ****
--- 108,116 ----
     each FDE.  */
  static bool ld_needs_eh_markers = false;
  
+ /* Emit a section-start symbol for mod init and term sections.  */
+ static bool ld_init_term_start_labels = false;
+ 
  /* Section names.  */
  section * darwin_sections[NUM_DARWIN_SECTIONS];
  
*************** finalize_ctors ()
*** 1843,1848 ****
--- 1846,1856 ----
    else
      switch_to_section (darwin_sections[constructor_section]);
  
+   /* Where needed, provide a linker-visible section-start symbol so that we
+      have stable output between debug and non-debug.  */
+   if (ld_init_term_start_labels)
+     fputs (MACHOPIC_INDIRECT ? "_Mod.init:\n" : "_CTOR.sect:\n", asm_out_file);
+ 
    if (vec_safe_length (ctors) > 1)
      ctors->qsort (sort_cdtor_records);
    FOR_EACH_VEC_SAFE_ELT (ctors, i, elt)
*************** finalize_dtors ()
*** 1863,1868 ****
--- 1871,1881 ----
    else
      switch_to_section (darwin_sections[destructor_section]);
  
+   /* Where needed, provide a linker-visible section-start symbol so that we
+      have stable output between debug and non-debug.  */
+   if (ld_init_term_start_labels)
+     fputs (MACHOPIC_INDIRECT ? "_Mod.term:\n" : "_DTOR.sect:\n", asm_out_file);
+ 
    if (vec_safe_length (dtors) > 1)
      dtors->qsort (sort_cdtor_records);
    FOR_EACH_VEC_SAFE_ELT (dtors, i, elt)
*************** darwin_label_is_anonymous_local_objc_nam
*** 1926,1931 ****
--- 1939,1946 ----
      }
    else if (!strncmp ((const char *)p, "ClassMethods", 12))
      return false;
+   else if (!strncmp ((const char *)p, "ClassProtocols", 14))
+     return false;
    else if (!strncmp ((const char *)p, "Instance", 8))
      {
        if (p[8] == 'I' || p[8] == 'M')
*************** darwin_file_end (void)
*** 3124,3129 ****
--- 3139,3152 ----
       re-arranging data.  */
    if (!DARWIN_SECTION_ANCHORS || !flag_section_anchors)
      fprintf (asm_out_file, "\t.subsections_via_symbols\n");
+ 
+   /* We rely on this being NULL at the start of compilation; reset it here
+      so that JIT can reuse a context.  */
+   if (dwarf_sect_names_table != NULL)
+     {
+       dwarf_sect_names_table->truncate (0);
+       dwarf_sect_names_table = NULL;
+     }
  }
  
  /* TODO: Add a language hook for identifying if a decl is a vtable.  */
*************** darwin_override_options (void)
*** 3215,3225 ****
        /* Earlier versions are not specifically accounted, until required.  */
      }
  
!   /* Older Darwin ld could not coalesce weak entities without them being
!      placed in special sections.  */
!   if (darwin_target_linker
!       && (strverscmp (darwin_target_linker, MIN_LD64_NO_COAL_SECTS) < 0))
!     ld_uses_coal_sects = true;
  
    /* In principle, this should be c-family only.  However, we really need to
       set sensible defaults for LTO as well, since the section selection stuff
--- 3238,3262 ----
        /* Earlier versions are not specifically accounted, until required.  */
      }
  
!   /* Some codegen needs to account for the capabilities of the target
!      linker.  */
!   if (darwin_target_linker)
!     {
!       /* Older Darwin ld could not coalesce weak entities without them being
! 	 placed in special sections.  */
!       if (strverscmp (darwin_target_linker, MIN_LD64_NO_COAL_SECTS) < 0)
! 	ld_uses_coal_sects = true;
! 
!       /* Some newer assemblers emit section start temp symbols for mod init
! 	 and term sections if there is no suitable symbol present already.
! 	 The temp symbols are linker visible and therefore appear in the
! 	 symbol tables.  Since the temp symbol number can vary when debug is
! 	 enabled, that causes compare-debug fails.  The solution is to provide
! 	 a stable linker-visible symbol.  */
!       if (strverscmp (darwin_target_linker,
! 		      MIN_LD64_INIT_TERM_START_LABELS) >= 0)
! 	ld_init_term_start_labels = true;
!     }
  
    /* In principle, this should be c-family only.  However, we really need to
       set sensible defaults for LTO as well, since the section selection stuff
*************** tree
*** 3569,3575 ****
  darwin_fold_builtin (tree fndecl, int n_args, tree *argp,
  		     bool ARG_UNUSED (ignore))
  {
!   unsigned int fcode = DECL_MD_FUNCTION_CODE (fndecl);
  
    if (fcode == darwin_builtin_cfstring)
      {
--- 3606,3612 ----
  darwin_fold_builtin (tree fndecl, int n_args, tree *argp,
  		     bool ARG_UNUSED (ignore))
  {
!   int fcode = DECL_MD_FUNCTION_CODE (fndecl);
  
    if (fcode == darwin_builtin_cfstring)
      {
*************** darwin_fold_builtin (tree fndecl, int n_
*** 3595,3624 ****
  void
  darwin_rename_builtins (void)
  {
-   /* The system ___divdc3 routine in libSystem on darwin10 is not
-      accurate to 1ulp, ours is, so we avoid ever using the system name
-      for this routine and instead install a non-conflicting name that
-      is accurate.
- 
-      When -ffast-math or -funsafe-math-optimizations is given, we can
-      use the faster version.  */
-   if (!flag_unsafe_math_optimizations)
-     {
-       enum built_in_function dcode
- 	= (enum built_in_function)(BUILT_IN_COMPLEX_DIV_MIN
- 				   + DCmode - MIN_MODE_COMPLEX_FLOAT);
-       tree fn = builtin_decl_explicit (dcode);
-       /* Fortran and c call TARGET_INIT_BUILTINS and
- 	 TARGET_INIT_LIBFUNCS at different times, so we have to put a
- 	 call into each to ensure that at least one of them is called
- 	 after build_common_builtin_nodes.  A better fix is to add a
- 	 new hook to run after build_common_builtin_nodes runs.  */
-       if (fn)
- 	set_user_assembler_name (fn, "___ieee_divdc3");
-       fn = builtin_decl_implicit (dcode);
-       if (fn)
- 	set_user_assembler_name (fn, "___ieee_divdc3");
-     }
  }
  
  bool
--- 3632,3637 ----
diff -Nrcpad gcc-10.3.0/gcc/config/darwin.h gcc-10.4.0/gcc/config/darwin.h
*** gcc-10.3.0/gcc/config/darwin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/darwin.h	Tue Jun 28 08:54:27 2022
*************** see the files COPYING3 and COPYING.RUNTI
*** 54,59 ****
--- 54,64 ----
  
  #define DO_GLOBAL_DTORS_BODY
  
+ /* Register static destructors to run from __cxa_atexit instead of putting
+    them into a .mod_term_funcs section.  */
+ 
+ #define TARGET_DTORS_FROM_CXA_ATEXIT true
+ 
  /* The string value for __SIZE_TYPE__.  */
  
  #ifndef SIZE_TYPE
*************** see the files COPYING3 and COPYING.RUNTI
*** 118,141 ****
  /* True if pragma ms_struct is in effect.  */
  extern GTY(()) int darwin_ms_struct;
  
! /* The majority of Darwin's special driver opts are direct access to ld flags
!    (to save the user typing -Wl,xxxxx or Xlinker xxxxx) but we can't process
!    them here, since doing so will make it appear that there are linker infiles
!    and the linker will invoked even when it is not necessary.
  
-    However, a few can be handled and we can elide options that are silently-
-    ignored defaults, plus warn on obsolete ones that no longer function.  */
  #undef SUBTARGET_DRIVER_SELF_SPECS
  #define SUBTARGET_DRIVER_SELF_SPECS					\
! "%{fapple-kext|mkernel:-static}",					\
! "%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull",		\
! "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \
!    %<gsplit-dwarf",							\
! "%{gused:-g -feliminate-unused-debug-symbols} %<gused",			\
! "%{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}"
--- 123,273 ----
  /* True if pragma ms_struct is in effect.  */
  extern GTY(()) int darwin_ms_struct;
  
! /* Darwin has a user convenience feature where some linker options are exposed
!    at the driver level (so one can type "-all_load" instead of "-Wl,-all_load"
!    or "-Xlinker -all_load").  We retain this, but now these options are all
!    marked as 'Driver' and we process them as early as possible so that they
!    get allocated to the right toolchain command.  There are a couple of special
!    cases where these driver opts are used multiple times, or to control
!    operations on more than one command (e.g. dynamiclib).  These are handled
!    specially and we then add %<xxxx specs for the commands that _don't_ need
!    them.  NOTE: the order of 'shared' and 'dynamiclib' is significant, hence
!    they are placed out of alphabetical order at the start.  Likewise, we keep
!    a couple of cases where a negative option originally appeared after the
!    positive alternate, potentially overriding it.
!    When we report an error with %e, it seems necessary to strip the option
!    before doing so, otherwise it survives to the cc1 command line (%e doesn't
!    appear to abort the program before this).
!    Right now there's no mechanism to split up the "variable portion" (%*) of
!    the matched spec string, so where we have some driver specs that take 2
!    or 3 arguments, these cannot be processed here, but are deferred until the
!    LINK_SPEC, where they are copied verbatim.  */
  
  #undef SUBTARGET_DRIVER_SELF_SPECS
  #define SUBTARGET_DRIVER_SELF_SPECS					\
!   "%{shared:%{!dynamiclib:-dynamiclib}} %<shared",			\
!   "%{static:%{dynamic|dynamiclib:%econflicting code generation switches}}",\
!   "%{dynamiclib:-Xlinker -dylib \
!      %{allowable_client*:-Xlinker -allowable_client -Xlinker %*} \
!        %<allowable_client* \
!      %{bundle_loader*: %<bundle_loader* \
!        %e-bundle_loader not allowed with -dynamiclib} \
!      %{client_name*: %<client_name* \
!        %e-client_name not allowed with -dynamiclib} \
!      %{compatibility_version*:\
!        -Xlinker -dylib_compatibility_version -Xlinker %*} \
!        %<compatibility_version* \
!      %{current_version*:-Xlinker -dylib_current_version -Xlinker %*} \
!        %<current_version* \
!      %{install_name*:-Xlinker -dylib_install_name -Xlinker %* } \
!        %<install_name* \
!      %{keep_private_externs: %<keep_private_externs \
!        %e-keep_private_externs not allowed with -dynamiclib} \
!      %{private_bundle: %<private_bundle \
!        %e-private_bundle not allowed with -dynamiclib} \
!     }",									\
!   "%{!dynamiclib: \
!      %{bundle_loader*:-Xlinker -bundle_loader -Xlinker %*} \
!        %<bundle_loader* \
!      %{client_name*:-Xlinker -client_name -Xlinker %*} \
!        %<client_name* \
!      %{compatibility_version*: %<compatibility_version* \
!        %e-compatibility_version only allowed with -dynamiclib} \
!      %{current_version*: %<current_version* \
!        %e-current_version only allowed with -dynamiclib} \
!      %{install_name*: %<install_name* \
!        %e-install_name only allowed with -dynamiclib} \
!      %{keep_private_externs:-Xlinker -keep_private_externs} \
!        %<keep_private_externs \
!      %{private_bundle:-Xlinker -private_bundle} \
!        %<private_bundle \
!     }",									\
!   "%{all_load:-Xlinker -all_load} %<all_load",				\
!   "%{arch_errors_fatal:-Xlinker -arch_errors_fatal} \
!     %<arch_errors_fatal",						\
!   "%{bind_at_load:-Xlinker -bind_at_load} %<bind_at_load",		\
!   "%{bundle:%{!dynamiclib:-Xlinker -bundle; \
!               :%e-bundle not allowed with -dynamiclib}}",	\
!   "%{dead_strip:-Xlinker -dead_strip} %<dead_strip",			\
!   "%{dylib_file*:-Xlinker -dylib_file -Xlinker %*} %<dylib_file*",	\
!   "%{dylinker:-Xlinker -dylinker} %<dylinker",				\
!   "%{dylinker_install_name*:-Xlinker -dylinker_install_name -Xlinker %*}\
!     %<dylinker_install_name*",						\
!   "%{exported_symbols_list*:-Xlinker -exported_symbols_list -Xlinker %*}\
!     %<exported_symbols_list",						\
!   "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls", \
!   "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables",		\
!   "%{fapple-kext|mkernel:-static}",					\
!   "%{filelist*:-Xlinker -filelist -Xlinker %*} %<filelist*",		\
!   "%{flat_namespace:-Xlinker -flat_namespace} %<flat_namespace",	\
!   "%{force_cpusubtype_ALL:-Xassembler -force_cpusubtype_ALL} ",		\
!   "%{force_flat_namespace: \
!      %{!dynamiclib:-Xlinker -force_flat_namespace; \
!        :%e-force_flat_namespace not allowed with -dynamiclib}} \
!     %<force_flat_namespace",						\
!   "%{framework*:-Xlinker -framework -Xlinker %*} %<framework*",		\
!   "%{gfull:-g -fno-eliminate-unused-debug-symbols} %<gfull",		\
!   "%{gused:-g -feliminate-unused-debug-symbols} %<gused",		\
!   "%{gsplit-dwarf:%ngsplit-dwarf is not supported on this platform} \
!     %<gsplit-dwarf",							\
!   "%{headerpad_max_install_names:-Xlinker -headerpad_max_install_names}\
!     %<headerpad_max_install_names",					\
!   "%{image_base*:-Xlinker -image_base -Xlinker %*} %<image_base*",	\
!   "%{init*:-Xlinker -init -Xlinker %*} %<init*",			\
!   "%{multi_module:-Xlinker -multi_module} %<multi_module",		\
!   "%{multiply_defined*:-Xlinker -multiply_defined -Xlinker %*} \
!      %<multiply_defined* ",						\
!   "%{multiplydefinedunused*:\
!      -Xlinker -multiply_defined_unused -Xlinker %*} \
!      %<multiplydefinedunused* ",					\
!   "%{no_dead_strip_inits_and_terms:\
!      -Xlinker -no_dead_strip_inits_and_terms} \
!      %<no_dead_strip_inits_and_terms",					\
!   "%{nofixprebinding:-Xlinker -nofixprebinding} %<nofixprebinding",	\
!   "%{nomultidefs:-Xlinker -nomultidefs} %<nomultidefs",			\
!   "%{pagezero_size*:-Xlinker -pagezero_size -Xlinker %*} \
!     %<pagezero_size",							\
!   "%{prebind:-Xlinker -prebind} %<prebind",				\
!   "%{noprebind:-Xlinker -noprebind} %<noprebind",			\
!   "%{prebind_all_twolevel_modules:\
!      -Xlinker -prebind_all_twolevel_modules} \
!      %<prebind_all_twolevel_modules",					\
!   "%{preload:-Xlinker -preload} %<preload",				\
!   "%{read_only_relocs*:-Xlinker -read_only_relocs -Xlinker %*} \
!      %<read_only_relocs*",						\
!   "%{rpath*: -Xlinker -rpath -Xlinker %*}",				\
!   "%{seg_addr_table_filename*: \
!      -Xlinker -seg_addr_table_filename -Xlinker %*} \
!      %<seg_addr_table_filename*",					\
!   "%{seg_addr_table*:-Xlinker -seg_addr_table -Xlinker %*} \
!      %<seg_addr_table*",						\
!   "%{seg1addr*:-Xlinker -image_base -Xlinker %*} %<seg1addr*",		\
!   "%{seglinkedit:-Xlinker -seglinkedit} %<seglinkedit",			\
!   "%{noseglinkedit:-Xlinker -noseglinkedit} %<noseglinkedit",		\
!   "%{segs_read_only_addr*:-Xlinker -segs_read_only_addr -Xlinker %*} \
!     %<segs_read_only_addr*",						\
!   "%{segs_read_write_addr*:-Xlinker -segs_read_write_addr -Xlinker %*} \
!     %<segs_read_write_addr*",						\
!   "%{single_module:-Xlinker -single_module} %<single_module",		\
!   "%{sub_library*:-Xlinker -sub_library -Xlinker %*} %<sub_library*",	\
!   "%{sub_umbrella*:-Xlinker -sub_umbrella -Xlinker %*} %<sub_umbrella*",\
!   "%{twolevel_namespace:-Xlinker -twolevel_namespace} \
!      %<twolevel_namespace",						\
!   "%{twolevel_namespace_hints:-Xlinker -twolevel_namespace_hints} \
!      %<twolevel_namespace_hints",					\
!   "%{umbrella*:-Xlinker -umbrella -Xlinker %*} %<umbrella*",		\
!   "%{undefined*:-Xlinker -undefined -Xlinker %*} %<undefined*",		\
!   "%{unexported_symbols_list*:\
!      -Xlinker -unexported_symbols_list -Xlinker %*} \
!      %<unexported_symbols_list*",					\
!   "%{weak_reference_mismatches*:\
!     -Xlinker -weak_reference_mismatches -Xlinker %*} \
!     %<weak_reference_mismatches*",					\
!   "%{whyload:-Xlinker -whyload} %<whyload",				\
!   "%{whatsloaded:-Xlinker -whatsloaded} %<whatsloaded",			\
!   "%{w:-Xlinker -w}",							\
!   "%<y*",								\
!   "%<Mach "
  
  #if LD64_HAS_EXPORT_DYNAMIC
  #define DARWIN_RDYNAMIC "%{rdynamic:-export_dynamic}"
*************** extern GTY(()) int darwin_ms_struct;
*** 156,164 ****
     %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }"
  
  #define DARWIN_CC1_SPEC							\
!   "%{findirect-virtual-calls: -fapple-kext} %<findirect-virtual-calls " \
!   "%{fterminated-vtables: -fapple-kext} %<fterminated-vtables "		\
!   "%<filelist* %<framework*"
  
  #define SUBSUBTARGET_OVERRIDE_OPTIONS					\
    do {									\
--- 288,294 ----
     %:version-compare(>= 10.7 mmacosx-version-min= -no_pie) }"
  
  #define DARWIN_CC1_SPEC							\
!   "%<dynamic %<dynamiclib %<force_cpusubtype_ALL "
  
  #define SUBSUBTARGET_OVERRIDE_OPTIONS					\
    do {									\
*************** extern GTY(()) int darwin_ms_struct;
*** 183,189 ****
  
  #undef	CPP_SPEC
  #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \
! 	" %{pthread:-D_REENTRANT}"
  
  /* This is a fix for PR41260 by passing -no_compact_unwind on darwin10 and
     later until the assembler, linker and libunwind are able to deal with the
--- 313,319 ----
  
  #undef	CPP_SPEC
  #define CPP_SPEC "%{static:%{!dynamic:-D__STATIC__}}%{!static:-D__DYNAMIC__}" \
! 	" %{pthread:-D_REENTRANT} "
  
  /* This is a fix for PR41260 by passing -no_compact_unwind on darwin10 and
     later until the assembler, linker and libunwind are able to deal with the
*************** extern GTY(()) int darwin_ms_struct;
*** 211,217 ****
     linkers, and for positional arguments like libraries.  */
  
  #define LINK_COMMAND_SPEC_A \
!    "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
      %(linker)" \
      LINK_PLUGIN_SPEC \
      "%{flto*:%<fcompare-debug*} \
--- 341,347 ----
     linkers, and for positional arguments like libraries.  */
  
  #define LINK_COMMAND_SPEC_A \
!    "%{!c:%{!E:%{!S:%{!M:%{!MM:%{!fsyntax-only:%{!fdump=*: \
      %(linker)" \
      LINK_PLUGIN_SPEC \
      "%{flto*:%<fcompare-debug*} \
*************** extern GTY(()) int darwin_ms_struct;
*** 220,273 ****
     "%X %{s} %{t} %{Z} %{u*} \
      %{e*} %{r} \
      %{o*}%{!o:-o a.out} \
!     %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \
!     %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \
!     %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \
!       %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \
!     %{fgnu-tm: \
!       %{static|static-libgcc|static-libstdc++|static-libgfortran: libitm.a%s; : -litm } } \
!     %{!nostdlib:%{!r:%{!nodefaultlibs:\
        %{%:sanitize(address): -lasan } \
        %{%:sanitize(undefined): -lubsan } \
        %(link_ssp) \
!       %:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef.o) \
        %(link_gcc_c_sequence) \
      }}}\
!     %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} %{F*} "\
      DARWIN_PIE_SPEC \
      DARWIN_NOPIE_SPEC \
      DARWIN_RDYNAMIC \
      DARWIN_NOCOMPACT_UNWIND \
      "}}}}}}} %<pie %<no-pie %<rdynamic "
  
- #define DSYMUTIL "\ndsymutil"
- 
  /* Spec that controls whether the debug linker is run automatically for
     a link step.  This needs to be done if there is a source file on the
     command line which will result in a temporary object (and debug is
     enabled).  */
  
  #define DSYMUTIL_SPEC \
!    "%{!fdump=*:%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
!     %{v} \
!     %{g*:%{!gstabs*:%{%:debug-level-gt(0): -idsym}}}\
!     %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm|.s|.f|.f90|\
!       .f95|.f03|.f77|.for|.F|.F90|.F95|.F03: \
!     %{g*:%{!gstabs*:%{%:debug-level-gt(0): -dsym}}}}}}}}}}}"
  
  #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC
  
  /* Tell collect2 to run dsymutil for us as necessary.  */
  #define COLLECT_RUN_DSYMUTIL 1
  
! /* Fix PR47558 by linking against libSystem ahead of libgcc. See also
!    PR 80556 and the fallout from this.  */
! 
  #undef  LINK_GCC_C_SEQUENCE_SPEC
  #define LINK_GCC_C_SEQUENCE_SPEC \
! "%{!static:%{!static-libgcc: \
!     %:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
!   %G %{!nolibc:%L}"
  
  /* ld64 supports a sysroot, it just has a different name and there's no easy
     way to check for it at config time.  */
--- 350,411 ----
     "%X %{s} %{t} %{Z} %{u*} \
      %{e*} %{r} \
      %{o*}%{!o:-o a.out} \
!     %{!r:%{!nostdlib:%{!nostartfiles:%S}}} \
!     %{L*} %(link_libgcc) %o \
!     %{!r:%{!nostdlib:%{!nodefaultlibs:\
!       %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \
!       %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \
! 	%{static|static-libgcc|static-libstdc++|static-libgfortran: \
! 	  libgomp.a%s; : -lgomp }} \
!       %{fgnu-tm: \
! 	%{static|static-libgcc|static-libstdc++|static-libgfortran: \
! 	  libitm.a%s; : -litm }} \
        %{%:sanitize(address): -lasan } \
        %{%:sanitize(undefined): -lubsan } \
        %(link_ssp) \
!       %:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef) \
        %(link_gcc_c_sequence) \
+       %{!nodefaultexport:%{dylib|dynamiclib|bundle: \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= -U) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_get_address) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= -exported_symbol) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_get_address) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= -U) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_register_common) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= -exported_symbol) \
+ 	%:version-compare(>= 10.11 asm_macosx_version_min= ___emutls_register_common) \
+       }} \
      }}}\
!     %{!r:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} %{F*} "\
      DARWIN_PIE_SPEC \
      DARWIN_NOPIE_SPEC \
      DARWIN_RDYNAMIC \
      DARWIN_NOCOMPACT_UNWIND \
      "}}}}}}} %<pie %<no-pie %<rdynamic "
  
  /* Spec that controls whether the debug linker is run automatically for
     a link step.  This needs to be done if there is a source file on the
     command line which will result in a temporary object (and debug is
     enabled).  */
  
  #define DSYMUTIL_SPEC \
!   "%{!c:%{!E:%{!S:%{!r:%{!M:%{!MM:%{!fsyntax-only:%{!fdump=*:\
!      %{g*:%{!gstabs*:%{%:debug-level-gt(0): -idsym \
!        %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm|.s|.f|.f90|\
! 	 .f95|.f03|.f77|.for|.F|.F90|.F95|.F03|.d: -dsym }\
!       }}}\
!    }}}}}}}}"
  
  #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC
  
  /* Tell collect2 to run dsymutil for us as necessary.  */
  #define COLLECT_RUN_DSYMUTIL 1
  
! /* We only want one instance of %G, since libSystem (Darwin's -lc) does not
!    depend on libgcc. */
  #undef  LINK_GCC_C_SEQUENCE_SPEC
  #define LINK_GCC_C_SEQUENCE_SPEC \
!  "%G %{!nolibc:%L} "
  
  /* ld64 supports a sysroot, it just has a different name and there's no easy
     way to check for it at config time.  */
*************** extern GTY(()) int darwin_ms_struct;
*** 275,419 ****
  #define HAVE_LD_SYSROOT 1
  /* It seems the only (working) way to get a space after %R is to append a
     dangling '/'.  */
! #define SYSROOT_SPEC "%{!isysroot*:-syslibroot %R/ }"
  
  /* Do the same as clang, for now, and insert the sysroot for ld when an
     isysroot is specified.  */
! #define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}"
  
  /* Suppress the addition of extra prefix paths when a sysroot is in use.  */
  #define STANDARD_STARTFILE_PREFIX_1 ""
  #define STANDARD_STARTFILE_PREFIX_2 ""
  
! /* Please keep the random linker options in alphabetical order (modulo
!    'Z' and 'no' prefixes). Note that options taking arguments may appear
!    multiple times on a command line with different arguments each time,
!    so put a * after their names so all of them get passed.  */
  #define LINK_SPEC  \
!   "%{static}%{!static:-dynamic} \
     %:remove-outfile(-ldl) \
     %:remove-outfile(-lm) \
     %:remove-outfile(-lpthread) \
     %{fgnu-runtime: %{static|static-libgcc: \
                       %:replace-outfile(-lobjc libobjc-gnu.a%s); \
!                     :%:replace-outfile(-lobjc -lobjc-gnu ) } }\
     %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\
     %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\
     %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\
!    %{!Zdynamiclib: \
!      %{Zforce_cpusubtype_ALL:-arch %(darwin_arch) -force_cpusubtype_ALL} \
!      %{!Zforce_cpusubtype_ALL:-arch %(darwin_subarch)} \
!      %{Zbundle:-bundle} \
!      %{Zbundle_loader*:-bundle_loader %*} \
!      %{client_name*} \
!      %{compatibility_version*:%e-compatibility_version only allowed with -dynamiclib\
! } \
!      %{current_version*:%e-current_version only allowed with -dynamiclib} \
!      %{Zforce_flat_namespace:-force_flat_namespace} \
!      %{Zinstall_name*:%e-install_name only allowed with -dynamiclib} \
!      %{keep_private_externs} \
!      %{private_bundle} \
!     } \
!    %{Zdynamiclib: -dylib \
!      %{Zbundle:%e-bundle not allowed with -dynamiclib} \
!      %{Zbundle_loader*:%e-bundle_loader not allowed with -dynamiclib} \
!      %{client_name*:%e-client_name not allowed with -dynamiclib} \
!      %{compatibility_version*:-dylib_compatibility_version %*} \
!      %{current_version*:-dylib_current_version %*} \
!      %{Zforce_cpusubtype_ALL:-arch %(darwin_arch)} \
!      %{!Zforce_cpusubtype_ALL: -arch %(darwin_subarch)} \
!      %{Zforce_flat_namespace:%e-force_flat_namespace not allowed with -dynamiclib} \
!      %{Zinstall_name*:-dylib_install_name %*} \
!      %{keep_private_externs:%e-keep_private_externs not allowed with -dynamiclib} \
!      %{private_bundle:%e-private_bundle not allowed with -dynamiclib} \
!     } \
!    %{Zall_load:-all_load} \
!    %{Zallowable_client*:-allowable_client %*} \
!    %{Zbind_at_load:-bind_at_load} \
!    %{Zarch_errors_fatal:-arch_errors_fatal} \
!    %{Zdead_strip:-dead_strip} \
!    %{Zno_dead_strip_inits_and_terms:-no_dead_strip_inits_and_terms} \
!    %{Zdylib_file*:-dylib_file %*} \
!    %{Zdynamic:-dynamic}\
!    %{Zexported_symbols_list*:-exported_symbols_list %*} \
!    %{Zflat_namespace:-flat_namespace} \
!    %{headerpad_max_install_names} \
!    %{Zimage_base*:-image_base %*} \
!    %{Zinit*:-init %*} \
!    %{mmacosx-version-min=*:-macosx_version_min %*} \
!    %{nomultidefs} \
!    %{Zmulti_module:-multi_module} %{Zsingle_module:-single_module} \
!    %{Zmultiply_defined*:-multiply_defined %*} \
!    %{!Zmultiply_defined*:%{shared-libgcc: \
       %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
!      %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \
!    %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \
!    %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \
!    %{read_only_relocs} \
!    %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \
!    %{Zsegaddr*:-segaddr %*} \
!    %{Zsegs_read_only_addr*:-segs_read_only_addr %*} \
!    %{Zsegs_read_write_addr*:-segs_read_write_addr %*} \
!    %{Zseg_addr_table*: -seg_addr_table %*} \
!    %{Zfn_seg_addr_table_filename*:-seg_addr_table_filename %*} \
!    %{sub_library*} %{sub_umbrella*} \
!    " LINK_SYSROOT_SPEC " \
!    %{twolevel_namespace} %{twolevel_namespace_hints} \
!    %{Zumbrella*: -umbrella %*} \
!    %{undefined*} \
!    %{Zunexported_symbols_list*:-unexported_symbols_list %*} \
!    %{Zweak_reference_mismatches*:-weak_reference_mismatches %*} \
!    %{!Zweak_reference_mismatches*:-weak_reference_mismatches non-weak} \
!    %{w} \
!    %{pagezero_size*} %{segs_read_*} %{seglinkedit} %{noseglinkedit}  \
!    %{sectalign*} %{sectobjectsymbols*} %{segcreate*} %{whyload} \
!    %{whatsloaded} %{dylinker_install_name*} \
!    %{dylinker} "
! 
  
  /* Machine dependent libraries.  */
  
  #define LIB_SPEC "%{!static:-lSystem}"
  
! /* Support -mmacosx-version-min by supplying different (stub) libgcc_s.dylib
!    libraries to link against, and by not linking against libgcc_s on
!    earlier-than-10.3.9.  If we need exceptions, prior to 10.3.9, then we have
!    to link the static eh lib, since there's no shared version on the system.
! 
!    Note that by default, except as above, -lgcc_eh is not linked against.
     This is because,in general, we need to unwind through system libraries that
     are linked with the shared unwinder in libunwind (or libgcc_s for 10.4/5).
  
!    The static version of the current libgcc unwinder (which differs from the
!    implementation in libunwind.dylib on systems Darwin10 [10.6]+) can be used
!    by specifying -static-libgcc.
  
!    If libgcc_eh is linked against, it has to be before -lgcc, because it might
!    need symbols from -lgcc.  */
  
  #undef REAL_LIBGCC_SPEC
! #define REAL_LIBGCC_SPEC						   \
!    "%{static-libgcc|static: -lgcc_eh -lgcc;				   \
!       shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime:		   \
!        %:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh)	   \
!        %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
!        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
!        %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \
!        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
!        -lgcc ;								   \
!       :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
!        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
!        %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_ext.10.4) \
!        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
!        -lgcc }"
  
  /* We specify crt0.o as -lcrt0.o so that ld will search the library path.  */
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC							    \
! "%{Zdynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}}		    \
!  %{!Zdynamiclib:%{Zbundle:%(darwin_bundle1)}				    \
!      %{!Zbundle:%{pg:%{static:-lgcrt0.o}				    \
                       %{!static:%{object:-lgcrt0.o}			    \
                                 %{!object:%{preload:-lgcrt0.o}		    \
                                   %{!preload:-lgcrt1.o                       \
--- 413,522 ----
  #define HAVE_LD_SYSROOT 1
  /* It seems the only (working) way to get a space after %R is to append a
     dangling '/'.  */
! #define SYSROOT_SPEC "%{!isysroot*:-syslibroot %R/ } "
  
  /* Do the same as clang, for now, and insert the sysroot for ld when an
     isysroot is specified.  */
! #define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*} "
  
  /* Suppress the addition of extra prefix paths when a sysroot is in use.  */
  #define STANDARD_STARTFILE_PREFIX_1 ""
  #define STANDARD_STARTFILE_PREFIX_2 ""
  
! 
! /* Please keep the random linker options in alphabetical order.
!    Note that options taking arguments may appear multiple times on a command
!    line with different arguments each time, so put a * after their names so
!    all of them get passed.  */
  #define LINK_SPEC  \
!   "%{static}%{!static:%{!dynamic:-dynamic}} \
     %:remove-outfile(-ldl) \
     %:remove-outfile(-lm) \
     %:remove-outfile(-lpthread) \
     %{fgnu-runtime: %{static|static-libgcc: \
                       %:replace-outfile(-lobjc libobjc-gnu.a%s); \
!                     :%:replace-outfile(-lobjc -lobjc-gnu )}}\
     %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\
     %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\
     %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\
!    %{force_cpusubtype_ALL:-arch %(darwin_arch)} \
!    %{!force_cpusubtype_ALL:-arch %(darwin_subarch)} "\
!    LINK_SYSROOT_SPEC \
!   "%{mmacosx-version-min=*:-macosx_version_min %*} \
!    %{!multiply_defined*:%{shared-libgcc: \
       %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
!      %:version-compare(< 10.5 mmacosx-version-min= suppress) }} \
!    %{sectalign*} %{sectcreate*} %{sectobjectsymbols*}  %{sectorder*} \
!    %{segaddr*} %{segcreate*} %{segprot*} "
  
  /* Machine dependent libraries.  */
  
  #define LIB_SPEC "%{!static:-lSystem}"
  
! /*
!    Note that by default, -lgcc_eh is not linked against.
     This is because,in general, we need to unwind through system libraries that
     are linked with the shared unwinder in libunwind (or libgcc_s for 10.4/5).
  
!    For -static-libgcc: < 10.6, use the unwinder in libgcc_eh (and find
!    the emultls impl. there too).
  
!    For -static-libgcc: >= 10.6, the unwinder *still* comes from libSystem and
!    we find the emutls impl from lemutls_w. In either case, the builtins etc.
!    are linked from -lgcc.
! 
!    When we have specified shared-libgcc or any case that might require
!    exceptions, we pull the libgcc content (including emulated tls) from
!    -lgcc_s.1 in GCC and the unwinder from /usr/lib/libgcc_s.1 for < 10.6 and
!    libSystem for >= 10.6 respectively.
!    Otherwise, we just link the emutls/builtins from convenience libs.
! 
!    If we need exceptions, prior to 10.3.9, then we have to link the static
!    eh lib, since there's no shared version on the system.
! 
!    In all cases, libgcc_s.1 will be installed with the compiler, or any app
!    built using it, so we can link the builtins and emutls shared on all.
! 
!    We have to work around that DYLD_XXXX are disabled in macOS 10.11+ which
!    means that any bootstrap trying to use a shared libgcc with a bumped SO-
!    name will fail.  This means that we do not accept shared libgcc for these
!    versions.
  
+    For -static-libgcc: >= 10.6, the unwinder *still* comes from libSystem and
+    we find the emutls impl from lemutls_w. In either case, the builtins etc.
+    are linked from -lgcc.
+ >
+    Otherwise, we just link the shared version of gcc_s.1.1 and pick up
+    exceptions:
+      * Prior to 10.3.9, then we have to link the static eh lib, since there
+        is no shared version on the system.
+      * from 10.3.9 to 10.5, from /usr/lib/libgcc_s.1.dylib
+      * from 10.6 onwards, from libSystem.dylib
+ 
+    In all cases, libgcc_s.1.1 will be installed with the compiler, or any app
+    built using it, so we can link the builtins and emutls shared on all.
+ */
  #undef REAL_LIBGCC_SPEC
! #define REAL_LIBGCC_SPEC \
! "%{static-libgcc|static:						  \
!     %:version-compare(!> 10.6 mmacosx-version-min= -lgcc_eh)		  \
!     %:version-compare(>= 10.6 mmacosx-version-min= -lemutls_w);		  \
!    shared-libgcc|fexceptions|fobjc-exceptions|fgnu-runtime:		  \
!     %:version-compare(!> 10.11 mmacosx-version-min= -lgcc_s.1.1)	  \
!     %:version-compare(>= 10.11 mmacosx-version-min= -lemutls_w)		  \
!     %:version-compare(!> 10.3.9 mmacosx-version-min= -lgcc_eh)		  \
!     %:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4)   \
!     %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5);	  \
!    : -lemutls_w								  \
!   } -lgcc "
  
  /* We specify crt0.o as -lcrt0.o so that ld will search the library path.  */
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC							    \
! "%{dynamiclib: %(darwin_dylib1) %{fgnu-tm: -lcrttms.o}}			   \
!  %{!dynamiclib:%{bundle:%(darwin_bundle1)}				    \
!      %{!bundle:%{pg:%{static:-lgcrt0.o}					    \
                       %{!static:%{object:-lgcrt0.o}			    \
                                 %{!object:%{preload:-lgcrt0.o}		    \
                                   %{!preload:-lgcrt1.o                       \
*************** extern GTY(()) int darwin_ms_struct;
*** 424,430 ****
                                  %{!object:%{preload:-lcrt0.o}		    \
                                    %{!preload: %(darwin_crt1)		    \
  					      %(darwin_crt2)}}}}}}	    \
!  %(darwin_crt3)"
  
  /* We want a destructor last in the list.  */
  #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}"
--- 527,533 ----
                                  %{!object:%{preload:-lcrt0.o}		    \
                                    %{!preload: %(darwin_crt1)		    \
  					      %(darwin_crt2)}}}}}}	    \
!  %(darwin_crt3) %<dynamiclib "
  
  /* We want a destructor last in the list.  */
  #define TM_DESTRUCTOR "%{fgnu-tm: -lcrttme.o}"
*************** extern GTY(()) int darwin_ms_struct;
*** 464,487 ****
  #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION
  /* Emit macosx version (but only major).  */
  #define ASM_MMACOSX_VERSION_MIN_SPEC \
!   " %{asm_macosx_version_min=*: -mmacosx-version-min=%*} %<asm_macosx_version_min=*"
  #else
! #define ASM_MMACOSX_VERSION_MIN_SPEC " %<asm_macosx_version_min=*"
  #endif
  
- /* When we detect that we're cctools or llvm as, we need to insert the right
-    additional options.  */
  #if HAVE_GNU_AS
  #define ASM_OPTIONS ""
  #else
  #define ASM_OPTIONS "%{v} %{w:-W} %{I*}"
  #endif
  
  /* Default Darwin ASM_SPEC, very simple. */
! #define ASM_SPEC "-arch %(darwin_arch) \
!   " ASM_OPTIONS " \
!   %{Zforce_cpusubtype_ALL:-force_cpusubtype_ALL} \
!   %{static}" ASM_MMACOSX_VERSION_MIN_SPEC
  
  #ifdef HAVE_AS_STABS_DIRECTIVE
  /* We only pass a debug option to the assembler if that supports stabs, since
--- 567,591 ----
  #ifdef HAVE_AS_MMACOSX_VERSION_MIN_OPTION
  /* Emit macosx version (but only major).  */
  #define ASM_MMACOSX_VERSION_MIN_SPEC \
! "%{asm_macosx_version_min=*: -mmacosx-version-min=%* } \
!    %<asm_macosx_version_min=* "
  #else
! #define ASM_MMACOSX_VERSION_MIN_SPEC " %<asm_macosx_version_min=* "
  #endif
  
  #if HAVE_GNU_AS
+ /* The options are added in gcc.c for this case.  */
  #define ASM_OPTIONS ""
  #else
+ /* When we detect that we're cctools or llvm as, we need to insert the right
+    additional options.  Actually, currently these are the same as GAS.  */
  #define ASM_OPTIONS "%{v} %{w:-W} %{I*}"
  #endif
  
  /* Default Darwin ASM_SPEC, very simple. */
! #define ASM_SPEC \
! "%{static} -arch %(darwin_arch) " \
! ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC
  
  #ifdef HAVE_AS_STABS_DIRECTIVE
  /* We only pass a debug option to the assembler if that supports stabs, since
*************** extern GTY(()) int darwin_ms_struct;
*** 495,501 ****
  #define ASM_DEBUG_OPTION_SPEC	""
  
  #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.  */
--- 599,606 ----
  #define ASM_DEBUG_OPTION_SPEC	""
  
  #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.  */
*************** extern GTY(()) section * darwin_sections
*** 841,846 ****
--- 946,953 ----
        sprintf (LABEL, "*%s%ld", "lubsan_type", (long)(NUM));\
      else if (strcmp ("LASAN", PREFIX) == 0)	\
        sprintf (LABEL, "*%s%ld", "lASAN", (long)(NUM));\
+     else if (strcmp ("LTRAMP", PREFIX) == 0)	\
+       sprintf (LABEL, "*%s%ld", "lTRAMP", (long)(NUM));\
      else						\
        sprintf (LABEL, "*%s%ld", PREFIX, (long)(NUM));	\
    } while (0)
*************** 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 */
--- 1203,1225 ----
  /* 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"
  
+ /* Emit start labels for init and term sections from this version.  */
+ #define MIN_LD64_INIT_TERM_START_LABELS "136.0"
+ 
+ /* 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-10.4.0/gcc/config/darwin.opt
*** gcc-10.3.0/gcc/config/darwin.opt	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/darwin.opt	Tue Jun 28 08:54:27 2022
*************** Target RejectNegative Joined Separate Re
*** 90,100 ****
  ; Driver options.
  
  all_load
! Driver RejectNegative Alias(Zall_load)
  Load all members of archive libraries, rather than only those that satisfy undefined symbols.
  
  allowable_client
! Driver RejectNegative Separate Alias(Zallowable_client)
  -allowable_client <name>	The output dylib is private to the client <name>.
  
  arch
--- 90,100 ----
  ; Driver options.
  
  all_load
! Driver RejectNegative
  Load all members of archive libraries, rather than only those that satisfy undefined symbols.
  
  allowable_client
! Driver RejectNegative Separate
  -allowable_client <name>	The output dylib is private to the client <name>.
  
  arch
*************** Driver RejectNegative Separate
*** 102,108 ****
  -arch <name>	Generate output for architecture <name>.
  
  arch_errors_fatal
! Driver RejectNegative Alias(Zarch_errors_fatal)
  Mismatches between file architecture and one specified by \"-arch\" are errors instead of warnings.
  
  asm_macosx_version_min=
--- 102,108 ----
  -arch <name>	Generate output for architecture <name>.
  
  arch_errors_fatal
! Driver RejectNegative
  Mismatches between file architecture and one specified by \"-arch\" are errors instead of warnings.
  
  asm_macosx_version_min=
*************** Driver RejectNegative Joined
*** 110,124 ****
  The earliest macOS version on which this program will run (formatted for the assembler).
  
  bind_at_load
! Driver RejectNegative Alias(Zbind_at_load)
  Generate an output executable that binds symbols on load, rather than lazily.
  
  bundle
! Driver RejectNegative Alias(Zbundle)
  Generate a Mach-O bundle (file type MH_BUNDLE).
  
  bundle_loader
! Driver RejectNegative Separate Alias(Zbundle_loader)
  -bundle_loader <executable>	Treat <executable> (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution.
  
  client_name
--- 110,124 ----
  The earliest macOS version on which this program will run (formatted for the assembler).
  
  bind_at_load
! Driver RejectNegative
  Generate an output executable that binds symbols on load, rather than lazily.
  
  bundle
! Driver RejectNegative
  Generate a Mach-O bundle (file type MH_BUNDLE).
  
  bundle_loader
! Driver RejectNegative Separate
  -bundle_loader <executable>	Treat <executable> (that will be loading this bundle) as if it was one of the dynamic libraries the bundle is linked against for symbol resolution.
  
  client_name
*************** Driver RejectNegative Separate
*** 134,144 ****
  -current_version <number>	Set the current version for the library to <number>.
  
  dead_strip
! Driver RejectNegative Alias(Zdead_strip)
  Remove code and data that is unreachable from any exported symbol (including the entry point).
  
  dylib_file
! Driver Separate Alias(Zdylib_file)
  
  dylinker
  Driver RejectNegative
--- 134,145 ----
  -current_version <number>	Set the current version for the library to <number>.
  
  dead_strip
! Driver RejectNegative
  Remove code and data that is unreachable from any exported symbol (including the entry point).
  
  dylib_file
! Driver RejectNegative Separate
! -dylib_file install_name:file_name	This allows linking of a dylib with \"install_name\" but to be found in a different install position \"file_name\"
  
  dylinker
  Driver RejectNegative
*************** Driver RejectNegative Separate
*** 149,163 ****
  -dylinker_install_name <path>	Only used for building dyld.
  
  dynamic
! Driver RejectNegative Alias(Zdynamic)
  The default (and opposite of -static), implied by user mode executables, shared libraries and bundles.
  
  dynamiclib
! Driver RejectNegative Alias(Zdynamiclib)
  Produce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\".
  
  exported_symbols_list
! Driver RejectNegative Separate Alias(Zexported_symbols_list)
  -exported_symbols_list <filename>	Export global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\".
  
  filelist
--- 150,164 ----
  -dylinker_install_name <path>	Only used for building dyld.
  
  dynamic
! Driver RejectNegative
  The default (and opposite of -static), implied by user mode executables, shared libraries and bundles.
  
  dynamiclib
! Driver RejectNegative
  Produce a Mach-O shared library (file type MH_DYLIB), synonym for \"-shared\".
  
  exported_symbols_list
! Driver RejectNegative Separate
  -exported_symbols_list <filename>	Export global symbols in <filename> in linked output file; any symbols not mentioned will be treated as \"hidden\".
  
  filelist
*************** Driver RejectNegative
*** 169,183 ****
  Used for generating code for some older kernel revisions.
  
  flat_namespace
! Driver RejectNegative Alias(Zflat_namespace)
  Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol.
  
  force_cpusubtype_ALL
! Driver RejectNegative Alias(Zforce_cpusubtype_ALL)
  For the assembler (and linker) permit any architecture sub-variant to be used without error.
  
  force_flat_namespace
! Driver RejectNegative Alias(Zforce_flat_namespace)
  Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs.
  
  framework
--- 170,184 ----
  Used for generating code for some older kernel revisions.
  
  flat_namespace
! Driver RejectNegative
  Ignore the normal two-level namespace; resolve symbols in command line order and do not record which library provided the resolved symbol.
  
  force_cpusubtype_ALL
! Driver RejectNegative
  For the assembler (and linker) permit any architecture sub-variant to be used without error.
  
  force_flat_namespace
! Driver RejectNegative
  Set the output object such that, on loading, dyld will ignore any two-level namespace information and resolve symbols in the discovery order for loaded libs.
  
  framework
*************** Driver RejectNegative
*** 201,215 ****
  Automatically adds space for longer path names in load commands (up to MAXPATHLEN).
  
  image_base
! Driver RejectNegative Separate Alias(Zimage_base)
  -image_base <address>	Specify <address> as the base address for a dylib or bundle.
  
  init
! Driver RejectNegative Separate Alias(Zinit)
  -init <symbol_name>	The symbol <symbol_name> will be used as the first initialiser for a dylib.
  
  install_name
! Driver RejectNegative Separate Alias(Zinstall_name)
  -install_name <name>	Set the install name for a dylib.
  
  keep_private_externs
--- 202,216 ----
  Automatically adds space for longer path names in load commands (up to MAXPATHLEN).
  
  image_base
! Driver RejectNegative Separate
  -image_base <address>	Specify <address> as the base address for a dylib or bundle.
  
  init
! Driver RejectNegative Separate
  -init <symbol_name>	The symbol <symbol_name> will be used as the first initialiser for a dylib.
  
  install_name
! Driver RejectNegative Separate
  -install_name <name>	Set the install name for a dylib.
  
  keep_private_externs
*************** Driver RejectNegative
*** 217,237 ****
  Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported.
  
  multi_module
! Driver RejectNegative Alias(Zmulti_module)
  (Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4.
  
  multiply_defined
! Driver RejectNegative Separate Alias(Zmultiply_defined)
  (Obsolete after 10.4) -multiply_defined <treatment>	Provided a mechanism for warning about symbols defined in multiple dylibs.
  
  multiply_defined_unused
! Driver RejectNegative Separate Alias(Zmultiplydefinedunused)
  (Obsolete after 10.4) -multiply_defined_unused <treatment>	Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs.
  
  no_dead_strip_inits_and_terms
! Driver RejectNegative Alias(Zno_dead_strip_inits_and_terms)
  (Obsolete) Current linkers never dead-strip these items, so the option is not needed.
  
  nofixprebinding
  Driver RejectNegative
  (Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an executable.
--- 218,242 ----
  Usually \"private extern\" (hidden) symbols are made local when linking, this command suppresses that such that they remain exported.
  
  multi_module
! Driver RejectNegative
  (Obsolete after 10.4) Multi modules are ignored at runtime since macOS 10.4.
  
  multiply_defined
! Driver RejectNegative Separate
  (Obsolete after 10.4) -multiply_defined <treatment>	Provided a mechanism for warning about symbols defined in multiple dylibs.
  
  multiply_defined_unused
! Driver RejectNegative Separate
  (Obsolete after 10.4) -multiply_defined_unused <treatment>	Provided a mechanism for warning about symbols defined in the current executable also being defined in linked dylibs.
  
  no_dead_strip_inits_and_terms
! Driver RejectNegative
  (Obsolete) Current linkers never dead-strip these items, so the option is not needed.
  
+ nodefaultexport
+ Driver RejectNegative
+ Do not add a default symbol exports to modules or dynamic libraries.
+ 
  nofixprebinding
  Driver RejectNegative
  (Obsolete after 10.3.9) Set MH_NOPREFIXBINDING, in an executable.
*************** Driver RejectNegative Separate Args(3)
*** 299,310 ****
  (Obsolete) -sectorder <segname> <sectname> <orderfile>	Replaced by a more general option \"-order_file\".
  
  seg_addr_table
! Driver RejectNegative Separate Alias(Zseg_addr_table)
  -seg_addr_table <file>	Specify the base addresses for dynamic libraries; <file> contains a line for each library.
  
  ; This is only usable by the ld_classic linker.
  seg_addr_table_filename
! Driver RejectNegative Separate Alias(Zfn_seg_addr_table_filename)
  (Obsolete, ld_classic only) -seg_addr_table_filename <path>.
  
  seg1addr
--- 304,315 ----
  (Obsolete) -sectorder <segname> <sectname> <orderfile>	Replaced by a more general option \"-order_file\".
  
  seg_addr_table
! Driver RejectNegative Separate
  -seg_addr_table <file>	Specify the base addresses for dynamic libraries; <file> contains a line for each library.
  
  ; This is only usable by the ld_classic linker.
  seg_addr_table_filename
! Driver RejectNegative Separate
  (Obsolete, ld_classic only) -seg_addr_table_filename <path>.
  
  seg1addr
*************** Driver RejectNegative Separate
*** 312,318 ****
  Synonym for \"image_base\".
  
  segaddr
! Driver RejectNegative Separate Args(2) Alias(Zsegaddr)
  -segaddr <name> <address>	Set the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb).
  
  ; This is only usable by the ld_classic linker.
--- 317,323 ----
  Synonym for \"image_base\".
  
  segaddr
! Driver RejectNegative Separate Args(2)
  -segaddr <name> <address>	Set the base address of segment <name> to <address> which must be aligned to a page boundary (currently 4kb).
  
  ; This is only usable by the ld_classic linker.
*************** Driver RejectNegative Separate Args(3)
*** 329,343 ****
  -segprot <segname> <max_prot> <init_prot>	The virtual memory protections for segment <segname> have maximum and initial values <max_prot> and <init_prot> respectively.  The specified values may contain \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\".
  
  segs_read_only_addr
! Driver RejectNegative Separate Alias(Zsegs_read_only_addr)
  -segs_read_only_addr <address>	Specify that <address> is the base address of the read-only segments of a dylib.
  
  segs_read_write_addr
! Driver RejectNegative Separate Alias(Zsegs_read_write_addr)
  -segs_read_write_addr <address>	Specify that <address> is the base address address of the read-write segments of a dylib.
  
  single_module
! Driver RejectNegative Alias(Zsingle_module)
  (Obsolete)	This is the default.
  
  sub_library
--- 334,348 ----
  -segprot <segname> <max_prot> <init_prot>	The virtual memory protections for segment <segname> have maximum and initial values <max_prot> and <init_prot> respectively.  The specified values may contain \"r\", \"w\", \"x\" or \"-\" the latter meaning \"no access\".
  
  segs_read_only_addr
! Driver RejectNegative Separate
  -segs_read_only_addr <address>	Specify that <address> is the base address of the read-only segments of a dylib.
  
  segs_read_write_addr
! Driver RejectNegative Separate
  -segs_read_write_addr <address>	Specify that <address> is the base address address of the read-write segments of a dylib.
  
  single_module
! Driver RejectNegative
  (Obsolete)	This is the default.
  
  sub_library
*************** Driver RejectNegative
*** 357,363 ****
  Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged).
  
  umbrella
! Driver RejectNegative Separate Alias(Zumbrella)
  -umbrella <framework>	The specified framework will be re-exported.
  
  undefined
--- 362,368 ----
  Add extra information to the executable that can speed up dynamic loading (provided that dependent libraries are unchanged).
  
  umbrella
! Driver RejectNegative
  -umbrella <framework>	The specified framework will be re-exported.
  
  undefined
*************** Driver RejectNegative Separate
*** 365,375 ****
  -undefined <treatment>	Specify the handling for undefined symbols (default is error).
  
  unexported_symbols_list
! Driver RejectNegative Separate Alias(Zunexported_symbols_list)
  -unexported_symbols_list <filename>	Do not export the global symbols listed in <filename>.
  
  weak_reference_mismatches
! Driver RejectNegative Separate Alias(Zweak_reference_mismatches)
  -weak_reference_mismatches <treatment>	Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak.
  
  whatsloaded
--- 370,380 ----
  -undefined <treatment>	Specify the handling for undefined symbols (default is error).
  
  unexported_symbols_list
! Driver RejectNegative Separate
  -unexported_symbols_list <filename>	Do not export the global symbols listed in <filename>.
  
  weak_reference_mismatches
! Driver RejectNegative Separate
  -weak_reference_mismatches <treatment>	Specifies what to do if a symbol import conflicts between file (weak in one and not in another) the default is to treat the symbol as non-weak.
  
  whatsloaded
*************** Driver RejectNegative Joined
*** 391,487 ****
  Mach
  Driver RejectNegative
  (Obsolete and unhandled by ld64, ignored)	ld should produce an executable (only handled by ld_classic).
- 
- ;; These are not "real" options, but placeholders used to hide the real options
- ;; from generic options processing... FIXME: they can be eliminated now.
- 
- Zall_load
- Driver
- 
- Zallowable_client
- Driver Separate
- 
- Zarch_errors_fatal
- Driver
- 
- Zbind_at_load
- Driver
- 
- Zbundle
- Driver
- 
- Zbundle_loader
- Driver Separate
- 
- Zdead_strip
- Driver
- 
- Zdylib_file
- Driver Separate
- 
- Zdynamic
- Driver
- 
- Zdynamiclib
- Driver
- 
- Zexported_symbols_list
- Driver Separate
- 
- Zfn_seg_addr_table_filename
- Driver Separate
- 
- Zflat_namespace
- Driver
- 
- Zforce_cpusubtype_ALL
- Driver
- 
- Zforce_flat_namespace
- Driver
- 
- Zimage_base
- Driver Separate
- 
- Zinit
- Driver Separate
- 
- Zinstall_name
- Driver Separate
- 
- Zmulti_module
- Driver
- 
- Zmultiply_defined
- Driver Separate
- 
- Zmultiplydefinedunused
- Driver Separate
- 
- Zno_dead_strip_inits_and_terms
- Driver
- 
- Zseg_addr_table
- Driver Separate
- 
- Zsegaddr
- Driver Separate Args(2)
- 
- Zsegs_read_only_addr
- Driver Separate
- 
- Zsegs_read_write_addr
- Driver Separate
- 
- Zsingle_module
- Driver
- 
- Zumbrella
- Driver Separate
- 
- Zunexported_symbols_list
- Driver Separate
- 
- Zweak_reference_mismatches
- Driver Separate
- 
--- 396,398 ----
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512dqintrin.h gcc-10.4.0/gcc/config/i386/avx512dqintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512dqintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/avx512dqintrin.h	Tue Jun 28 08:54:27 2022
*************** _mm512_fpclass_ps_mask (__m512 __A, cons
*** 2655,2661 ****
  
  #define _mm512_mask_fpclass_ps_mask(u, x, c)				\
    ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
! 						 (int) (c),(__mmask8)(u)))
  
  #define _mm512_fpclass_pd_mask(X, C)                                    \
    ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
--- 2655,2661 ----
  
  #define _mm512_mask_fpclass_ps_mask(u, x, c)				\
    ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
! 						 (int) (c),(__mmask16)(u)))
  
  #define _mm512_fpclass_pd_mask(X, C)                                    \
    ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
*************** _mm512_fpclass_ps_mask (__m512 __A, cons
*** 2663,2669 ****
  
  #define _mm512_fpclass_ps_mask(x, c)                                    \
    ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
! 						 (int) (c),(__mmask8)-1))
  
  #define _mm_reduce_sd(A, B, C)						\
    ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A),	\
--- 2663,2669 ----
  
  #define _mm512_fpclass_ps_mask(x, c)                                    \
    ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
! 						 (int) (c),(__mmask16)-1))
  
  #define _mm_reduce_sd(A, B, C)						\
    ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A),	\
diff -Nrcpad gcc-10.3.0/gcc/config/i386/avx512fintrin.h gcc-10.4.0/gcc/config/i386/avx512fintrin.h
*** gcc-10.3.0/gcc/config/i386/avx512fintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/avx512fintrin.h	Tue Jun 28 08:54:27 2022
*************** _mm_maskz_scalef_round_ss (__mmask8 __U,
*** 3237,3267 ****
  						      (__mmask8) __U, __R);
  }
  #else
! #define _mm512_scalef_round_pd(A, B, C)            \
!     (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_undefined_pd(), -1, C)
  
! #define _mm512_mask_scalef_round_pd(W, U, A, B, C) \
!     (__m512d)__builtin_ia32_scalefpd512_mask(A, B, W, U, C)
  
! #define _mm512_maskz_scalef_round_pd(U, A, B, C)   \
!     (__m512d)__builtin_ia32_scalefpd512_mask(A, B, (__v8df)_mm512_setzero_pd(), U, C)
  
! #define _mm512_scalef_round_ps(A, B, C)            \
!     (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_undefined_ps(), -1, C)
  
! #define _mm512_mask_scalef_round_ps(W, U, A, B, C) \
!     (__m512)__builtin_ia32_scalefps512_mask(A, B, W, U, C)
  
! #define _mm512_maskz_scalef_round_ps(U, A, B, C)   \
!     (__m512)__builtin_ia32_scalefps512_mask(A, B, (__v16sf)_mm512_setzero_ps(), U, C)
  
! #define _mm_scalef_round_sd(A, B, C)            \
!     (__m128d)__builtin_ia32_scalefsd_mask_round (A, B, \
! 	(__v2df)_mm_setzero_pd (), -1, C)
  
! #define _mm_scalef_round_ss(A, B, C)            \
!     (__m128)__builtin_ia32_scalefss_mask_round (A, B, \
! 	(__v4sf)_mm_setzero_ps (), -1, C)
  #endif
  
  #ifdef __OPTIMIZE__
--- 3237,3303 ----
  						      (__mmask8) __U, __R);
  }
  #else
! #define _mm512_scalef_round_pd(A, B, C)					\
!   ((__m512d)								\
!    __builtin_ia32_scalefpd512_mask((A), (B),				\
! 				   (__v8df) _mm512_undefined_pd(),	\
! 				   -1, (C)))
  
! #define _mm512_mask_scalef_round_pd(W, U, A, B, C)			\
!   ((__m512d) __builtin_ia32_scalefpd512_mask((A), (B), (W), (U), (C)))
  
! #define _mm512_maskz_scalef_round_pd(U, A, B, C)			\
!   ((__m512d)								\
!    __builtin_ia32_scalefpd512_mask((A), (B),				\
! 				   (__v8df) _mm512_setzero_pd(),	\
! 				   (U), (C)))
  
! #define _mm512_scalef_round_ps(A, B, C)					\
!   ((__m512)								\
!    __builtin_ia32_scalefps512_mask((A), (B),				\
! 				   (__v16sf) _mm512_undefined_ps(),	\
! 				   -1, (C)))
  
! #define _mm512_mask_scalef_round_ps(W, U, A, B, C)			\
!   ((__m512) __builtin_ia32_scalefps512_mask((A), (B), (W), (U), (C)))
  
! #define _mm512_maskz_scalef_round_ps(U, A, B, C)			\
!   ((__m512)								\
!    __builtin_ia32_scalefps512_mask((A), (B),				\
! 				   (__v16sf) _mm512_setzero_ps(),	\
! 				   (U), (C)))
  
! #define _mm_scalef_round_sd(A, B, C)					\
!   ((__m128d)								\
!    __builtin_ia32_scalefsd_mask_round ((A), (B),			\
! 				       (__v2df) _mm_undefined_pd (),	\
! 				       -1, (C)))
  
! #define _mm_scalef_round_ss(A, B, C)					\
!   ((__m128)								\
!    __builtin_ia32_scalefss_mask_round ((A), (B),			\
! 				       (__v4sf) _mm_undefined_ps (),	\
! 				       -1, (C)))
! 
! #define _mm_mask_scalef_round_sd(W, U, A, B, C)				\
!   ((__m128d)								\
!    __builtin_ia32_scalefsd_mask_round ((A), (B), (W), (U), (C)))
! 
! #define _mm_mask_scalef_round_ss(W, U, A, B, C)				\
!   ((__m128)								\
!    __builtin_ia32_scalefss_mask_round ((A), (B), (W), (U), (C)))
! 
! #define _mm_maskz_scalef_round_sd(U, A, B, C)				\
!   ((__m128d)								\
!    __builtin_ia32_scalefsd_mask_round ((A), (B),			\
! 				       (__v2df) _mm_setzero_pd (),	\
! 				       (U), (C)))
! 
! #define _mm_maskz_scalef_round_ss(U, A, B, C)				\
!   ((__m128)								\
!    __builtin_ia32_scalefss_mask_round ((A), (B),			\
! 				       (__v4sf) _mm_setzero_ps (),	\
! 				       (U), (C)))
  #endif
  
  #ifdef __OPTIMIZE__
diff -Nrcpad gcc-10.3.0/gcc/config/i386/darwin.h gcc-10.4.0/gcc/config/i386/darwin.h
*** gcc-10.3.0/gcc/config/i386/darwin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/darwin.h	Tue Jun 28 08:54:27 2022
*************** along with GCC; see the file COPYING3.
*** 39,72 ****
  #endif
  #endif
  
- /* WORKAROUND pr80556:
-    For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected
-    from libSystem).  This doesn't use the keymgr (see keymgr.c) and therefore
-    the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not
-    updated to include new images, and might not even be valid for a single
-    image.
-    Therefore, for 64b exes at least, we must use the libunwind implementation,
-    even when static-libgcc is specified.  We put libSystem first so that
-    unwinder symbols are satisfied from there.
-    We default to 64b for single-arch builds, so apply this unconditionally. */
- #undef REAL_LIBGCC_SPEC
- #define REAL_LIBGCC_SPEC						   \
-    "%{static-libgcc|static: 						   \
-        %:version-compare(>= 10.6 mmacosx-version-min= -lSystem)		   \
-        -lgcc_eh -lgcc;							   \
-       shared-libgcc|fexceptions|fgnu-runtime:				   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4)	   \
-        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)	   \
-        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
-        -lgcc ;								   \
-       :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
-        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)	   \
-        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
-        -lgcc }"
- 
- /* Size of the Obj-C jump buffer.  */
  #define OBJC_JBLEN ((TARGET_64BIT) ? ((9 * 2) + 3 + 16) : (18))
  
  #undef TARGET_FPMATH_DEFAULT
--- 39,44 ----
*************** along with GCC; see the file COPYING3.
*** 135,144 ****
    %{mfentry*:%eDarwin does not support -mfentry or associated options}" \
    DARWIN_CC1_SPEC
  
  #undef ASM_SPEC
! #define ASM_SPEC "-arch %(darwin_arch) \
!   " ASM_OPTIONS " -force_cpusubtype_ALL \
!   %{static}" ASM_MMACOSX_VERSION_MIN_SPEC
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
--- 107,125 ----
    %{mfentry*:%eDarwin does not support -mfentry or associated options}" \
    DARWIN_CC1_SPEC
  
+ /* This is a workaround for a tool bug: see PR100340.  */
+ 
+ #ifdef HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN
+ #define EXTRA_ASM_OPTS " -mllvm -x86-pad-for-align=false "
+ #else
+ #define EXTRA_ASM_OPTS ""
+ #endif
+ 
  #undef ASM_SPEC
! #define ASM_SPEC \
! "%{static} -arch %(darwin_arch) " \
!  ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC EXTRA_ASM_OPTS \
! "%{!force_cpusubtype_ALL:-force_cpusubtype_ALL} "
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
diff -Nrcpad gcc-10.3.0/gcc/config/i386/darwin32-biarch.h gcc-10.4.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-10.4.0/gcc/config/i386/darwin32-biarch.h	Tue Jun 28 08:54:27 2022
*************** along with GCC; see the file COPYING3.
*** 21,52 ****
  #undef DARWIN_ARCH_SPEC
  #define DARWIN_ARCH_SPEC "%{m64:x86_64;:i386}"
  
- /* WORKAROUND pr80556:
-    For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected
-    from libSystem).  This doesn't use the keymgr (see keymgr.c) and therefore
-    the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not
-    updated to include new images, and might not even be valid for a single
-    image.
-    Therefore, for 64b exes at least, we must use the libunwind implementation,
-    even when static-libgcc is specified.  We put libSystem first so that
-    unwinder symbols are satisfied from there. */
- #undef REAL_LIBGCC_SPEC
- #define REAL_LIBGCC_SPEC						   \
-    "%{static-libgcc|static: 						   \
-       %{m64:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)}	   \
-         -lgcc_eh -lgcc;							   \
-       shared-libgcc|fexceptions|fgnu-runtime:				   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4)	   \
-        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)	   \
-        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
-        -lgcc ;								   \
-       :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
-        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)	   \
-        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
-        -lgcc }"
- 
  #undef  DARWIN_SUBARCH_SPEC
  #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
  
--- 21,26 ----
diff -Nrcpad gcc-10.3.0/gcc/config/i386/darwin64-biarch.h gcc-10.4.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-10.4.0/gcc/config/i386/darwin64-biarch.h	Tue Jun 28 08:54:27 2022
*************** along with GCC; see the file COPYING3.
*** 22,53 ****
  #undef  DARWIN_ARCH_SPEC
  #define DARWIN_ARCH_SPEC "%{m32:i386;:x86_64}"
  
- /* WORKAROUND pr80556:
-    For x86_64 Darwin10 and later, the unwinder is in libunwind (redirected
-    from libSystem).  This doesn't use the keymgr (see keymgr.c) and therefore
-    the calls that libgcc makes to obtain the KEYMGR_GCC3_DW2_OBJ_LIST are not
-    updated to include new images, and might not even be valid for a single
-    image.
-    Therefore, for 64b exes at least, we must use the libunwind implementation,
-    even when static-libgcc is specified.  We put libSystem first so that
-    unwinder symbols are satisfied from there. */
- #undef REAL_LIBGCC_SPEC
- #define REAL_LIBGCC_SPEC						   \
-    "%{static-libgcc|static: 						   \
-       %{!m32:%:version-compare(>= 10.6 mmacosx-version-min= -lSystem)}	   \
-         -lgcc_eh -lgcc;							   \
-       shared-libgcc|fexceptions|fgnu-runtime:				   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_s.10.4)	   \
-        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)	   \
-        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
-        -lgcc ;								   \
-       :%:version-compare(>< 10.3.9 10.5 mmacosx-version-min= -lgcc_s.10.4) \
-        %:version-compare(>< 10.5 10.6 mmacosx-version-min= -lgcc_s.10.5)   \
-        %:version-compare(!> 10.5 mmacosx-version-min= -lgcc_ext.10.4)	   \
-        %:version-compare(>= 10.5 mmacosx-version-min= -lgcc_ext.10.5)	   \
-        -lgcc }"
- 
  #undef  DARWIN_SUBARCH_SPEC
  #define DARWIN_SUBARCH_SPEC DARWIN_ARCH_SPEC
  
--- 22,27 ----
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-builtins.c gcc-10.4.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-10.4.0/gcc/config/i386/i386-builtins.c	Tue Jun 28 08:54:27 2022
*************** fold_builtin_cpu (tree fndecl, tree *arg
*** 2323,2329 ****
        /* Return __cpu_model.__cpu_features[0] & 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);
      }
    gcc_unreachable ();
  }
--- 2323,2333 ----
        /* Return __cpu_model.__cpu_features[0] & field_val  */
        final = build2 (BIT_AND_EXPR, unsigned_type_node, array_elt,
  		      build_int_cstu (unsigned_type_node, field_val));
!       if (isa_names_table[i].feature == (INT_TYPE_SIZE - 1))
! 	return build2 (NE_EXPR, integer_type_node, final,
! 		       build_int_cst (unsigned_type_node, 0));
!       else
! 	return build1 (CONVERT_EXPR, integer_type_node, final);
      }
    gcc_unreachable ();
  }
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386-expand.c gcc-10.4.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-10.4.0/gcc/config/i386/i386-expand.c	Tue Jun 28 08:54:27 2022
*************** ix86_split_idivmod (machine_mode mode, r
*** 1140,1145 ****
--- 1140,1148 ----
    rtx scratch, tmp0, tmp1, tmp2;
    rtx (*gen_divmod4_1) (rtx, rtx, rtx, rtx);
  
+   operands[2] = force_reg (mode, operands[2]);
+   operands[3] = force_reg (mode, operands[3]);
+ 
    switch (mode)
      {
      case E_SImode:
*************** ix86_expand_call (rtx retval, rtx fnaddr
*** 7940,7945 ****
--- 7943,7949 ----
      pop = NULL;
    gcc_assert (!TARGET_64BIT || !pop);
  
+   rtx addr = XEXP (fnaddr, 0);
    if (TARGET_MACHO && !TARGET_64BIT)
      {
  #if TARGET_MACHO
*************** ix86_expand_call (rtx retval, rtx fnaddr
*** 7952,7958 ****
        /* Static functions and indirect calls don't need the pic register.  Also,
  	 check if PLT was explicitly avoided via no-plt or "noplt" attribute, making
  	 it an indirect call.  */
-       rtx addr = XEXP (fnaddr, 0);
        if (flag_pic
  	  && GET_CODE (addr) == SYMBOL_REF
  	  && !SYMBOL_REF_LOCAL_P (addr))
--- 7956,7961 ----
*************** ix86_expand_call (rtx retval, rtx fnaddr
*** 8115,8120 ****
--- 8118,8137 ----
  	}
      }
  
+   if (TARGET_MACHO && TARGET_64BIT && !sibcall
+       && ((GET_CODE (addr) == SYMBOL_REF && !SYMBOL_REF_LOCAL_P (addr))
+ 	  || !fndecl || TREE_PUBLIC (fndecl)))
+     {
+       /* We allow public functions defined in a TU to bind locally for PIC
+ 	 code (the default) on 64bit Mach-O.
+ 	 If such functions are not inlined, we cannot tell at compile-time if
+ 	 they will be called via the lazy symbol resolver (this can depend on
+ 	 options given at link-time).  Therefore, we must assume that the lazy
+ 	 resolver could be used which clobbers R11 and R10.  */
+       clobber_reg (&use, gen_rtx_REG (DImode, R11_REG));
+       clobber_reg (&use, gen_rtx_REG (DImode, R10_REG));
+     }
+ 
    if (vec_len > 1)
      call = gen_rtx_PARALLEL (VOIDmode, gen_rtvec_v (vec_len, vec));
    rtx_insn *call_insn = emit_call_insn (call);
*************** rdseed_step:
*** 11929,11934 ****
--- 11946,11954 ----
        return target;
  
      case IX86_BUILTIN_READ_FLAGS:
+       if (ignore)
+ 	return const0_rtx;
+ 
        emit_insn (gen_push (gen_rtx_REG (word_mode, FLAGS_REG)));
  
        if (optimize
*************** quarter:
*** 14059,14067 ****
  	      else
  		{
  		  word = expand_simple_binop (word_mode, ASHIFT, word, shift,
! 					      word, 1, OPTAB_LIB_WIDEN);
  		  word = expand_simple_binop (word_mode, IOR, word, elt,
! 					      word, 1, OPTAB_LIB_WIDEN);
  		}
  	    }
  
--- 14079,14087 ----
  	      else
  		{
  		  word = expand_simple_binop (word_mode, ASHIFT, word, shift,
! 					      NULL_RTX, 1, OPTAB_LIB_WIDEN);
  		  word = expand_simple_binop (word_mode, IOR, word, elt,
! 					      NULL_RTX, 1, OPTAB_LIB_WIDEN);
  		}
  	    }
  
*************** ix86_expand_vector_init (bool mmx_ok, rt
*** 14114,14124 ****
        if (GET_MODE_NUNITS (GET_MODE (x)) * 2 == n_elts)
  	{
  	  rtx ops[2] = { XVECEXP (vals, 0, 0), XVECEXP (vals, 0, 1) };
! 	  if (inner_mode == QImode || inner_mode == HImode)
  	    {
  	      unsigned int n_bits = n_elts * GET_MODE_SIZE (inner_mode);
! 	      mode = mode_for_vector (SImode, n_bits / 4).require ();
! 	      inner_mode = mode_for_vector (SImode, n_bits / 8).require ();
  	      ops[0] = gen_lowpart (inner_mode, ops[0]);
  	      ops[1] = gen_lowpart (inner_mode, ops[1]);
  	      subtarget = gen_reg_rtx (mode);
--- 14134,14148 ----
        if (GET_MODE_NUNITS (GET_MODE (x)) * 2 == n_elts)
  	{
  	  rtx ops[2] = { XVECEXP (vals, 0, 0), XVECEXP (vals, 0, 1) };
! 	  if (inner_mode == QImode
! 	      || inner_mode == HImode
! 	      || inner_mode == TImode)
  	    {
  	      unsigned int n_bits = n_elts * GET_MODE_SIZE (inner_mode);
! 	      scalar_mode elt_mode = inner_mode == TImode ? DImode : SImode;
! 	      n_bits /= GET_MODE_SIZE (elt_mode);
! 	      mode = mode_for_vector (elt_mode, n_bits).require ();
! 	      inner_mode = mode_for_vector (elt_mode, n_bits / 2).require ();
  	      ops[0] = gen_lowpart (inner_mode, ops[0]);
  	      ops[1] = gen_lowpart (inner_mode, ops[1]);
  	      subtarget = gen_reg_rtx (mode);
*************** void ix86_emit_i387_log1p (rtx op0, rtx
*** 15310,15315 ****
--- 15334,15344 ----
    rtx cst, cstln2, cst1;
    rtx_insn *insn;
  
+   /* The emit_jump call emits pending stack adjust, make sure it is emitted
+      before the conditional jump, otherwise the stack adjustment will be
+      only conditional.  */
+   do_pending_stack_adjust ();
+ 
    cst = const_double_from_real_value
      (REAL_VALUE_ATOF ("0.29289321881345247561810596348408353", XFmode), XFmode);
    cstln2 = force_reg (XFmode, standard_80387_constant_rtx (4)); /* fldln2 */
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386.c gcc-10.4.0/gcc/config/i386/i386.c
*** gcc-10.3.0/gcc/config/i386/i386.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/i386.c	Tue Jun 28 08:54:27 2022
*************** ix86_function_arg (cumulative_args_t cum
*** 3223,3229 ****
        if (POINTER_TYPE_P (arg.type))
  	{
  	  /* This is the pointer argument.  */
! 	  gcc_assert (TYPE_MODE (arg.type) == Pmode);
  	  /* It is at -WORD(AP) in the current frame in interrupt and
  	     exception handlers.  */
  	  reg = plus_constant (Pmode, arg_pointer_rtx, -UNITS_PER_WORD);
--- 3223,3229 ----
        if (POINTER_TYPE_P (arg.type))
  	{
  	  /* This is the pointer argument.  */
! 	  gcc_assert (TYPE_MODE (arg.type) == ptr_mode);
  	  /* It is at -WORD(AP) in the current frame in interrupt and
  	     exception handlers.  */
  	  reg = plus_constant (Pmode, arg_pointer_rtx, -UNITS_PER_WORD);
*************** standard_80387_constant_p (rtx x)
*** 4649,4655 ****
    /* For XFmode constants, try to find a special 80387 instruction when
       optimizing for size or on those CPUs that benefit from them.  */
    if (mode == XFmode
!       && (optimize_function_for_size_p (cfun) || TARGET_EXT_80387_CONSTANTS))
      {
        int i;
  
--- 4649,4656 ----
    /* For XFmode constants, try to find a special 80387 instruction when
       optimizing for size or on those CPUs that benefit from them.  */
    if (mode == XFmode
!       && (optimize_function_for_size_p (cfun) || TARGET_EXT_80387_CONSTANTS)
!       && !flag_rounding_math)
      {
        int i;
  
*************** ix86_compute_frame_layout (void)
*** 6356,6367 ****
  	 area, see the SEH code in config/i386/winnt.c for the rationale.  */
        frame->hard_frame_pointer_offset = frame->sse_reg_save_offset;
  
!       /* If we can leave the frame pointer where it is, do so.  Also, return
  	 the establisher frame for __builtin_frame_address (0) or else if the
! 	 frame overflows the SEH maximum frame size.  */
        const HOST_WIDE_INT diff
  	= frame->stack_pointer_offset - frame->hard_frame_pointer_offset;
!       if (diff <= 255)
  	{
  	  /* The resulting diff will be a multiple of 16 lower than 255,
  	     i.e. at most 240 as required by the unwind data structure.  */
--- 6357,6385 ----
  	 area, see the SEH code in config/i386/winnt.c for the rationale.  */
        frame->hard_frame_pointer_offset = frame->sse_reg_save_offset;
  
!       /* If we can leave the frame pointer where it is, do so; however return
  	 the establisher frame for __builtin_frame_address (0) or else if the
! 	 frame overflows the SEH maximum frame size.
! 
! 	 Note that the value returned by __builtin_frame_address (0) is quite
! 	 constrained, because setjmp is piggybacked on the SEH machinery with
! 	 recent versions of MinGW:
! 
! 	  #    elif defined(__SEH__)
! 	  #     if defined(__aarch64__) || defined(_ARM64_)
! 	  #      define setjmp(BUF) _setjmp((BUF), __builtin_sponentry())
! 	  #     elif (__MINGW_GCC_VERSION < 40702)
! 	  #      define setjmp(BUF) _setjmp((BUF), mingw_getsp())
! 	  #     else
! 	  #      define setjmp(BUF) _setjmp((BUF), __builtin_frame_address (0))
! 	  #     endif
! 
! 	 and the second argument passed to _setjmp, if not null, is forwarded
! 	 to the TargetFrame parameter of RtlUnwindEx by longjmp (after it has
! 	 built an ExceptionRecord on the fly describing the setjmp buffer).  */
        const HOST_WIDE_INT diff
  	= frame->stack_pointer_offset - frame->hard_frame_pointer_offset;
!       if (diff <= 255 && !crtl->accesses_prior_frames)
  	{
  	  /* The resulting diff will be a multiple of 16 lower than 255,
  	     i.e. at most 240 as required by the unwind data structure.  */
*************** legitimate_pic_address_disp_p (rtx disp)
*** 10318,10341 ****
  	      if (is_imported_p (op0))
  		return true;
  
! 	      if (SYMBOL_REF_FAR_ADDR_P (op0)
! 		  || !SYMBOL_REF_LOCAL_P (op0))
  		break;
  
! 	      /* Function-symbols need to be resolved only for
! 	         large-model.
! 	         For the small-model we don't need to resolve anything
! 	         here.  */
  	      if ((ix86_cmodel != CM_LARGE_PIC
! 	           && SYMBOL_REF_FUNCTION_P (op0))
  		  || ix86_cmodel == CM_SMALL_PIC)
  		return true;
- 	      /* Non-external symbols don't need to be resolved for
- 	         large, and medium-model.  */
- 	      if ((ix86_cmodel == CM_LARGE_PIC
- 		   || ix86_cmodel == CM_MEDIUM_PIC)
- 		  && !SYMBOL_REF_EXTERNAL_P (op0))
- 		return true;
  	    }
  	  else if (!SYMBOL_REF_FAR_ADDR_P (op0)
  		   && (SYMBOL_REF_LOCAL_P (op0)
--- 10336,10354 ----
  	      if (is_imported_p (op0))
  		return true;
  
! 	      if (SYMBOL_REF_FAR_ADDR_P (op0) || !SYMBOL_REF_LOCAL_P (op0))
  		break;
  
! 	      /* Non-external-weak function symbols need to be resolved only
! 		 for the large model.  Non-external symbols don't need to be
! 		 resolved for large and medium models.  For the small model,
! 		 we don't need to resolve anything here.  */
  	      if ((ix86_cmodel != CM_LARGE_PIC
! 		   && SYMBOL_REF_FUNCTION_P (op0)
! 		   && !(SYMBOL_REF_EXTERNAL_P (op0) && SYMBOL_REF_WEAK (op0)))
! 		  || !SYMBOL_REF_EXTERNAL_P (op0)
  		  || ix86_cmodel == CM_SMALL_PIC)
  		return true;
  	    }
  	  else if (!SYMBOL_REF_FAR_ADDR_P (op0)
  		   && (SYMBOL_REF_LOCAL_P (op0)
*************** ix86_print_operand_address_as (FILE *fil
*** 13465,13471 ****
  static void
  ix86_print_operand_address (FILE *file, machine_mode /*mode*/, rtx addr)
  {
!   ix86_print_operand_address_as (file, addr, ADDR_SPACE_GENERIC, false);
  }
  
  /* Implementation of TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA.  */
--- 13478,13487 ----
  static void
  ix86_print_operand_address (FILE *file, machine_mode /*mode*/, rtx addr)
  {
!   if (this_is_asm_operands && ! address_operand (addr, VOIDmode))
!     output_operand_lossage ("invalid constraints for operand");
!   else
!     ix86_print_operand_address_as (file, addr, ADDR_SPACE_GENERIC, false);
  }
  
  /* Implementation of TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA.  */
*************** ix86_output_call_insn (rtx_insn *insn, r
*** 15836,15843 ****
  	    break;
  
  	  /* If we get to the epilogue note, prevent a catch region from
! 	     being adjacent to the standard epilogue sequence.  If non-
! 	     call-exceptions, we'll have done this during epilogue emission. */
  	  if (NOTE_P (i) && NOTE_KIND (i) == NOTE_INSN_EPILOGUE_BEG
  	      && !flag_non_call_exceptions
  	      && !can_throw_internal (insn))
--- 15852,15861 ----
  	    break;
  
  	  /* If we get to the epilogue note, prevent a catch region from
! 	     being adjacent to the standard epilogue sequence.  Note that,
! 	     if non-call exceptions are enabled, we already did it during
! 	     epilogue expansion, or else, if the insn can throw internally,
! 	     we already did it during the reorg pass.  */
  	  if (NOTE_P (i) && NOTE_KIND (i) == NOTE_INSN_EPILOGUE_BEG
  	      && !flag_non_call_exceptions
  	      && !can_throw_internal (insn))
*************** ix86_gimple_fold_builtin (gimple_stmt_it
*** 17831,17836 ****
--- 17849,17856 ----
  
      do_shift:
        gcc_assert (n_args >= 2);
+       if (!gimple_call_lhs (stmt))
+ 	break;
        arg0 = gimple_call_arg (stmt, 0);
        arg1 = gimple_call_arg (stmt, 1);
        if (n_args > 2)
*************** ix86_gimple_fold_builtin (gimple_stmt_it
*** 17894,17900 ****
  
      case IX86_BUILTIN_SHUFPD:
        arg2 = gimple_call_arg (stmt, 2);
!       if (TREE_CODE (arg2) == INTEGER_CST)
  	{
  	  location_t loc = gimple_location (stmt);
  	  unsigned HOST_WIDE_INT imask = TREE_INT_CST_LOW (arg2);
--- 17914,17920 ----
  
      case IX86_BUILTIN_SHUFPD:
        arg2 = gimple_call_arg (stmt, 2);
!       if (TREE_CODE (arg2) == INTEGER_CST && gimple_call_lhs (stmt))
  	{
  	  location_t loc = gimple_location (stmt);
  	  unsigned HOST_WIDE_INT imask = TREE_INT_CST_LOW (arg2);
*************** ix86_stack_protect_fail (void)
*** 21333,21342 ****
     After all, the relocation needed is the same as for the call insn.
     Whether or not a particular assembler allows us to enter such, I
     guess we'll have to see.  */
  int
  asm_preferred_eh_data_format (int code, int global)
  {
!   if (flag_pic)
      {
        int type = DW_EH_PE_sdata8;
        if (!TARGET_64BIT
--- 21353,21364 ----
     After all, the relocation needed is the same as for the call insn.
     Whether or not a particular assembler allows us to enter such, I
     guess we'll have to see.  */
+ 
  int
  asm_preferred_eh_data_format (int code, int global)
  {
!   /* PE-COFF is effectively always -fPIC because of the .reloc section.  */
!   if (flag_pic || TARGET_PECOFF)
      {
        int type = DW_EH_PE_sdata8;
        if (!TARGET_64BIT
*************** asm_preferred_eh_data_format (int code,
*** 21345,21353 ****
--- 21367,21377 ----
  	type = DW_EH_PE_sdata4;
        return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | type;
      }
+ 
    if (ix86_cmodel == CM_SMALL
        || (ix86_cmodel == CM_MEDIUM && code))
      return DW_EH_PE_udata4;
+ 
    return DW_EH_PE_absptr;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/config/i386/i386.md gcc-10.4.0/gcc/config/i386/i386.md
*** gcc-10.3.0/gcc/config/i386/i386.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/i386.md	Tue Jun 28 08:54:27 2022
***************
*** 4411,4418 ****
       movddup is available.  */
    if (REG_P (operands[1]))
      {
!       if (!TARGET_SSE3
! 	  && REGNO (operands[0]) != REGNO (operands[1]))
  	{
  	  rtx tmp = lowpart_subreg (DFmode, operands[0], SFmode);
  	  emit_move_insn (tmp, operands[1]);
--- 4411,4418 ----
       movddup is available.  */
    if (REG_P (operands[1]))
      {
!       if ((!TARGET_SSE3 && REGNO (operands[0]) != REGNO (operands[1]))
! 	  || (EXT_REX_SSE_REG_P (operands[1]) && !TARGET_AVX512VL))
  	{
  	  rtx tmp = lowpart_subreg (DFmode, operands[0], SFmode);
  	  emit_move_insn (tmp, operands[1]);
***************
*** 10194,10203 ****
     (match_operand:MODEF 1 "register_operand")
     (match_operand:MODEF 2 "register_operand")]
    "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
!   "ix86_expand_xorsign (operands); DONE;")
  
  (define_insn_and_split "@xorsign<mode>3_1"
!   [(set (match_operand:MODEF 0 "register_operand" "=Yv")
  	(unspec:MODEF
  	  [(match_operand:MODEF 1 "register_operand" "Yv")
  	   (match_operand:MODEF 2 "register_operand" "0")
--- 10194,10209 ----
     (match_operand:MODEF 1 "register_operand")
     (match_operand:MODEF 2 "register_operand")]
    "SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH"
! {
!   if (rtx_equal_p (operands[1], operands[2]))
!     emit_insn (gen_abs<mode>2 (operands[0], operands[1]));
!   else
!     ix86_expand_xorsign (operands);
!   DONE;
! })
  
  (define_insn_and_split "@xorsign<mode>3_1"
!   [(set (match_operand:MODEF 0 "register_operand" "=&Yv")
  	(unspec:MODEF
  	  [(match_operand:MODEF 1 "register_operand" "Yv")
  	   (match_operand:MODEF 2 "register_operand" "0")
***************
*** 13812,13821 ****
     (set_attr "mode" "<MODE>")])
  
  (define_insn "bsr_rex64"
!   [(set (match_operand:DI 0 "register_operand" "=r")
  	(minus:DI (const_int 63)
! 		  (clz:DI (match_operand:DI 1 "nonimmediate_operand" "rm"))))
!    (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT"
    "bsr{q}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
--- 13818,13829 ----
     (set_attr "mode" "<MODE>")])
  
  (define_insn "bsr_rex64"
!   [(set (reg:CCZ FLAGS_REG)
! 	(compare:CCZ (match_operand:DI 1 "nonimmediate_operand" "rm")
! 		     (const_int 0)))
!    (set (match_operand:DI 0 "register_operand" "=r")
  	(minus:DI (const_int 63)
! 		  (clz:DI (match_dup 1))))]
    "TARGET_64BIT"
    "bsr{q}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
***************
*** 13824,13833 ****
     (set_attr "mode" "DI")])
  
  (define_insn "bsr"
!   [(set (match_operand:SI 0 "register_operand" "=r")
  	(minus:SI (const_int 31)
! 		  (clz:SI (match_operand:SI 1 "nonimmediate_operand" "rm"))))
!    (clobber (reg:CC FLAGS_REG))]
    ""
    "bsr{l}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
--- 13832,13843 ----
     (set_attr "mode" "DI")])
  
  (define_insn "bsr"
!   [(set (reg:CCZ FLAGS_REG)
! 	(compare:CCZ (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		     (const_int 0)))
!    (set (match_operand:SI 0 "register_operand" "=r")
  	(minus:SI (const_int 31)
! 		  (clz:SI (match_dup 1))))]
    ""
    "bsr{l}\t{%1, %0|%0, %1}"
    [(set_attr "type" "alu1")
***************
*** 13835,13859 ****
     (set_attr "znver1_decode" "vector")
     (set_attr "mode" "SI")])
  
- (define_insn "*bsrhi"
-   [(set (match_operand:HI 0 "register_operand" "=r")
- 	(minus:HI (const_int 15)
- 		  (clz:HI (match_operand:HI 1 "nonimmediate_operand" "rm"))))
-    (clobber (reg:CC FLAGS_REG))]
-   ""
-   "bsr{w}\t{%1, %0|%0, %1}"
-   [(set_attr "type" "alu1")
-    (set_attr "prefix_0f" "1")
-    (set_attr "znver1_decode" "vector")
-    (set_attr "mode" "HI")])
- 
  (define_expand "clz<mode>2"
    [(parallel
!      [(set (match_operand:SWI48 0 "register_operand")
  	   (minus:SWI48
  	     (match_dup 2)
! 	     (clz:SWI48 (match_operand:SWI48 1 "nonimmediate_operand"))))
!       (clobber (reg:CC FLAGS_REG))])
     (parallel
       [(set (match_dup 0) (xor:SWI48 (match_dup 0) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
--- 13845,13859 ----
     (set_attr "znver1_decode" "vector")
     (set_attr "mode" "SI")])
  
  (define_expand "clz<mode>2"
    [(parallel
!      [(set (reg:CCZ FLAGS_REG)
! 	(compare:CCZ (match_operand:SWI48 1 "nonimmediate_operand" "rm")
! 		     (const_int 0)))
!       (set (match_operand:SWI48 0 "register_operand")
  	   (minus:SWI48
  	     (match_dup 2)
! 	     (clz:SWI48 (match_dup 1))))])
     (parallel
       [(set (match_dup 0) (xor:SWI48 (match_dup 0) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
diff -Nrcpad gcc-10.3.0/gcc/config/i386/sse.md gcc-10.4.0/gcc/config/i386/sse.md
*** gcc-10.3.0/gcc/config/i386/sse.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/sse.md	Tue Jun 28 08:54:27 2022
***************
*** 6752,6758 ****
  (define_expand "vec_unpacks_float_hi_v8si"
    [(set (match_dup 2)
  	(vec_select:V4SI
! 	  (match_operand:V8SI 1 "vector_operand")
  	  (parallel [(const_int 4) (const_int 5)
  		     (const_int 6) (const_int 7)])))
     (set (match_operand:V4DF 0 "register_operand")
--- 6752,6758 ----
  (define_expand "vec_unpacks_float_hi_v8si"
    [(set (match_dup 2)
  	(vec_select:V4SI
! 	  (match_operand:V8SI 1 "register_operand")
  	  (parallel [(const_int 4) (const_int 5)
  		     (const_int 6) (const_int 7)])))
     (set (match_operand:V4DF 0 "register_operand")
***************
*** 16140,16151 ****
     (set_attr "mode" "TI")])
  
  (define_insn_and_split "ssse3_ph<plusminus_mnemonic>wv4hi3"
!   [(set (match_operand:V4HI 0 "register_operand" "=y,x,Yv")
  	(vec_concat:V4HI
  	  (vec_concat:V2HI
  	    (ssse3_plusminus:HI
  	      (vec_select:HI
! 		(match_operand:V4HI 1 "register_operand" "0,0,Yv")
  		(parallel [(const_int 0)]))
  	      (vec_select:HI (match_dup 1) (parallel [(const_int 1)])))
  	    (ssse3_plusminus:HI
--- 16140,16151 ----
     (set_attr "mode" "TI")])
  
  (define_insn_and_split "ssse3_ph<plusminus_mnemonic>wv4hi3"
!   [(set (match_operand:V4HI 0 "register_operand" "=y,x,x")
  	(vec_concat:V4HI
  	  (vec_concat:V2HI
  	    (ssse3_plusminus:HI
  	      (vec_select:HI
! 		(match_operand:V4HI 1 "register_operand" "0,0,x")
  		(parallel [(const_int 0)]))
  	      (vec_select:HI (match_dup 1) (parallel [(const_int 1)])))
  	    (ssse3_plusminus:HI
***************
*** 16154,16160 ****
  	  (vec_concat:V2HI
  	    (ssse3_plusminus:HI
  	      (vec_select:HI
! 		(match_operand:V4HI 2 "register_mmxmem_operand" "ym,x,Yv")
  		(parallel [(const_int 0)]))
  	      (vec_select:HI (match_dup 2) (parallel [(const_int 1)])))
  	    (ssse3_plusminus:HI
--- 16154,16160 ----
  	  (vec_concat:V2HI
  	    (ssse3_plusminus:HI
  	      (vec_select:HI
! 		(match_operand:V4HI 2 "register_mmxmem_operand" "ym,x,x")
  		(parallel [(const_int 0)]))
  	      (vec_select:HI (match_dup 2) (parallel [(const_int 1)])))
  	    (ssse3_plusminus:HI
***************
*** 16265,16280 ****
     (set_attr "mode" "TI")])
  
  (define_insn_and_split "ssse3_ph<plusminus_mnemonic>dv2si3"
!   [(set (match_operand:V2SI 0 "register_operand" "=y,x,Yv")
  	(vec_concat:V2SI
  	  (plusminus:SI
  	    (vec_select:SI
! 	      (match_operand:V2SI 1 "register_operand" "0,0,Yv")
  	      (parallel [(const_int 0)]))
  	    (vec_select:SI (match_dup 1) (parallel [(const_int 1)])))
  	  (plusminus:SI
  	    (vec_select:SI
! 	      (match_operand:V2SI 2 "register_mmxmem_operand" "ym,x,Yv")
  	      (parallel [(const_int 0)]))
  	    (vec_select:SI (match_dup 2) (parallel [(const_int 1)])))))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
--- 16265,16280 ----
     (set_attr "mode" "TI")])
  
  (define_insn_and_split "ssse3_ph<plusminus_mnemonic>dv2si3"
!   [(set (match_operand:V2SI 0 "register_operand" "=y,x,x")
  	(vec_concat:V2SI
  	  (plusminus:SI
  	    (vec_select:SI
! 	      (match_operand:V2SI 1 "register_operand" "0,0,x")
  	      (parallel [(const_int 0)]))
  	    (vec_select:SI (match_dup 1) (parallel [(const_int 1)])))
  	  (plusminus:SI
  	    (vec_select:SI
! 	      (match_operand:V2SI 2 "register_mmxmem_operand" "ym,x,x")
  	      (parallel [(const_int 0)]))
  	    (vec_select:SI (match_dup 2) (parallel [(const_int 1)])))))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
***************
*** 16727,16736 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "ssse3_psign<mode>3"
!   [(set (match_operand:MMXMODEI 0 "register_operand" "=y,x,Yv")
  	(unspec:MMXMODEI
! 	  [(match_operand:MMXMODEI 1 "register_operand" "0,0,Yv")
! 	   (match_operand:MMXMODEI 2 "register_mmxmem_operand" "ym,x,Yv")]
  	  UNSPEC_PSIGN))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
    "@
--- 16727,16736 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "ssse3_psign<mode>3"
!   [(set (match_operand:MMXMODEI 0 "register_operand" "=y,x,x")
  	(unspec:MMXMODEI
! 	  [(match_operand:MMXMODEI 1 "register_operand" "0,0,x")
! 	   (match_operand:MMXMODEI 2 "register_mmxmem_operand" "ym,x,x")]
  	  UNSPEC_PSIGN))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
    "@
***************
*** 16927,16933 ****
     (set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)"))
     (set_attr "mode" "DI,TI")])
  
! (define_insn "abs<mode>2"
    [(set (match_operand:MMXMODEI 0 "register_operand")
  	(abs:MMXMODEI
  	  (match_operand:MMXMODEI 1 "register_operand")))]
--- 16927,16933 ----
     (set (attr "prefix_rex") (symbol_ref "x86_extended_reg_mentioned_p (insn)"))
     (set_attr "mode" "DI,TI")])
  
! (define_expand "abs<mode>2"
    [(set (match_operand:MMXMODEI 0 "register_operand")
  	(abs:MMXMODEI
  	  (match_operand:MMXMODEI 1 "register_operand")))]
***************
*** 19418,19425 ****
  	    negate = true;
  	}
        par = gen_rtx_PARALLEL (V16QImode, rtvec_alloc (16));
        for (i = 0; i < 16; i++)
!         XVECEXP (par, 0, i) = operands[2];
  
        tmp = gen_reg_rtx (V16QImode);
        emit_insn (gen_vec_initv16qiqi (tmp, par));
--- 19418,19426 ----
  	    negate = true;
  	}
        par = gen_rtx_PARALLEL (V16QImode, rtvec_alloc (16));
+       tmp = lowpart_subreg (QImode, operands[2], SImode);
        for (i = 0; i < 16; i++)
! 	XVECEXP (par, 0, i) = tmp;
  
        tmp = gen_reg_rtx (V16QImode);
        emit_insn (gen_vec_initv16qiqi (tmp, par));
***************
*** 21728,21735 ****
    "TARGET_AVX512F"
  {
    operands[5]
!     = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[0], operands[2],
! 					operands[4]), UNSPEC_VSIBADDR);
  })
  
  (define_insn "*avx512f_scattersi<VI48F:mode>"
--- 21729,21737 ----
    "TARGET_AVX512F"
  {
    operands[5]
!     = gen_rtx_UNSPEC (Pmode, gen_rtvec (4, operands[0], operands[2],
! 					operands[4], operands[1]),
! 					UNSPEC_VSIBADDR);
  })
  
  (define_insn "*avx512f_scattersi<VI48F:mode>"
***************
*** 21737,21746 ****
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand" "n")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
! 	  [(match_operand:<avx512fmaskmode> 6 "register_operand" "1")
  	   (match_operand:VI48F 3 "register_operand" "v")]
  	  UNSPEC_SCATTER))
     (clobber (match_scratch:<avx512fmaskmode> 1 "=&Yk"))]
--- 21739,21749 ----
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand" "n")
! 	      (match_operand:<avx512fmaskmode> 6 "register_operand" "1")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
! 	  [(match_dup 6)
  	   (match_operand:VI48F 3 "register_operand" "v")]
  	  UNSPEC_SCATTER))
     (clobber (match_scratch:<avx512fmaskmode> 1 "=&Yk"))]
***************
*** 21766,21773 ****
    "TARGET_AVX512F"
  {
    operands[5]
!     = gen_rtx_UNSPEC (Pmode, gen_rtvec (3, operands[0], operands[2],
! 					operands[4]), UNSPEC_VSIBADDR);
  })
  
  (define_insn "*avx512f_scatterdi<VI48F:mode>"
--- 21769,21777 ----
    "TARGET_AVX512F"
  {
    operands[5]
!     = gen_rtx_UNSPEC (Pmode, gen_rtvec (4, operands[0], operands[2],
! 					operands[4], operands[1]),
! 					UNSPEC_VSIBADDR);
  })
  
  (define_insn "*avx512f_scatterdi<VI48F:mode>"
***************
*** 21775,21784 ****
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand" "n")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
! 	  [(match_operand:QI 6 "register_operand" "1")
  	   (match_operand:<VEC_GATHER_SRCDI> 3 "register_operand" "v")]
  	  UNSPEC_SCATTER))
     (clobber (match_scratch:QI 1 "=&Yk"))]
--- 21779,21789 ----
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand" "n")
! 	      (match_operand:QI 6 "register_operand" "1")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
! 	  [(match_dup 6)
  	   (match_operand:<VEC_GATHER_SRCDI> 3 "register_operand" "v")]
  	  UNSPEC_SCATTER))
     (clobber (match_scratch:QI 1 "=&Yk"))]
diff -Nrcpad gcc-10.3.0/gcc/config/i386/sync.md gcc-10.4.0/gcc/config/i386/sync.md
*** gcc-10.3.0/gcc/config/i386/sync.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/sync.md	Tue Jun 28 08:54:27 2022
***************
*** 212,289 ****
    DONE;
  })
  
- (define_peephole2
-   [(set (match_operand:DF 0 "fp_register_operand")
- 	(unspec:DF [(match_operand:DI 1 "memory_operand")]
- 		   UNSPEC_FILD_ATOMIC))
-    (set (match_operand:DI 2 "memory_operand")
- 	(unspec:DI [(match_dup 0)]
- 		   UNSPEC_FIST_ATOMIC))
-    (set (match_operand:DF 3 "any_fp_register_operand")
- 	(match_operand:DF 4 "memory_operand"))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (2, operands[0])
-    && rtx_equal_p (XEXP (operands[4], 0), XEXP (operands[2], 0))"
-   [(set (match_dup 3) (match_dup 5))]
-   "operands[5] = gen_lowpart (DFmode, operands[1]);")
- 
- (define_peephole2
-   [(set (match_operand:DF 0 "fp_register_operand")
- 	(unspec:DF [(match_operand:DI 1 "memory_operand")]
- 		   UNSPEC_FILD_ATOMIC))
-    (set (match_operand:DI 2 "memory_operand")
- 	(unspec:DI [(match_dup 0)]
- 		   UNSPEC_FIST_ATOMIC))
-    (set (mem:BLK (scratch:SI))
- 	(unspec:BLK [(mem:BLK (scratch:SI))] UNSPEC_MEMORY_BLOCKAGE))
-    (set (match_operand:DF 3 "any_fp_register_operand")
- 	(match_operand:DF 4 "memory_operand"))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (2, operands[0])
-    && rtx_equal_p (XEXP (operands[4], 0), XEXP (operands[2], 0))"
-   [(const_int 0)]
- {
-   emit_move_insn (operands[3], gen_lowpart (DFmode, operands[1]));
-   emit_insn (gen_memory_blockage ());
-   DONE;
- })
- 
- (define_peephole2
-   [(set (match_operand:DF 0 "sse_reg_operand")
- 	(unspec:DF [(match_operand:DI 1 "memory_operand")]
- 		   UNSPEC_LDX_ATOMIC))
-    (set (match_operand:DI 2 "memory_operand")
- 	(unspec:DI [(match_dup 0)]
- 		   UNSPEC_STX_ATOMIC))
-    (set (match_operand:DF 3 "any_fp_register_operand")
- 	(match_operand:DF 4 "memory_operand"))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (2, operands[0])
-    && rtx_equal_p (XEXP (operands[4], 0), XEXP (operands[2], 0))"
-   [(set (match_dup 3) (match_dup 5))]
-   "operands[5] = gen_lowpart (DFmode, operands[1]);")
- 
- (define_peephole2
-   [(set (match_operand:DF 0 "sse_reg_operand")
- 	(unspec:DF [(match_operand:DI 1 "memory_operand")]
- 		   UNSPEC_LDX_ATOMIC))
-    (set (match_operand:DI 2 "memory_operand")
- 	(unspec:DI [(match_dup 0)]
- 		   UNSPEC_STX_ATOMIC))
-    (set (mem:BLK (scratch:SI))
- 	(unspec:BLK [(mem:BLK (scratch:SI))] UNSPEC_MEMORY_BLOCKAGE))
-    (set (match_operand:DF 3 "any_fp_register_operand")
- 	(match_operand:DF 4 "memory_operand"))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (2, operands[0])
-    && rtx_equal_p (XEXP (operands[4], 0), XEXP (operands[2], 0))"
-   [(const_int 0)]
- {
-   emit_move_insn (operands[3], gen_lowpart (DFmode, operands[1]));
-   emit_insn (gen_memory_blockage ());
-   DONE;
- })
- 
  (define_expand "atomic_store<mode>"
    [(set (match_operand:ATOMIC 0 "memory_operand")
  	(unspec:ATOMIC [(match_operand:ATOMIC 1 "nonimmediate_operand")
--- 212,217 ----
***************
*** 373,450 ****
    DONE;
  })
  
- (define_peephole2
-   [(set (match_operand:DF 0 "memory_operand")
- 	(match_operand:DF 1 "any_fp_register_operand"))
-    (set (match_operand:DF 2 "fp_register_operand")
- 	(unspec:DF [(match_operand:DI 3 "memory_operand")]
- 		   UNSPEC_FILD_ATOMIC))
-    (set (match_operand:DI 4 "memory_operand")
- 	(unspec:DI [(match_dup 2)]
- 		   UNSPEC_FIST_ATOMIC))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (3, operands[2])
-    && rtx_equal_p (XEXP (operands[0], 0), XEXP (operands[3], 0))"
-   [(set (match_dup 5) (match_dup 1))]
-   "operands[5] = gen_lowpart (DFmode, operands[4]);")
- 
- (define_peephole2
-   [(set (match_operand:DF 0 "memory_operand")
- 	(match_operand:DF 1 "any_fp_register_operand"))
-    (set (mem:BLK (scratch:SI))
- 	(unspec:BLK [(mem:BLK (scratch:SI))] UNSPEC_MEMORY_BLOCKAGE))
-    (set (match_operand:DF 2 "fp_register_operand")
- 	(unspec:DF [(match_operand:DI 3 "memory_operand")]
- 		   UNSPEC_FILD_ATOMIC))
-    (set (match_operand:DI 4 "memory_operand")
- 	(unspec:DI [(match_dup 2)]
- 		   UNSPEC_FIST_ATOMIC))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (4, operands[2])
-    && rtx_equal_p (XEXP (operands[0], 0), XEXP (operands[3], 0))"
-   [(const_int 0)]
- {
-   emit_insn (gen_memory_blockage ());
-   emit_move_insn (gen_lowpart (DFmode, operands[4]), operands[1]);
-   DONE;
- })
- 
- (define_peephole2
-   [(set (match_operand:DF 0 "memory_operand")
- 	(match_operand:DF 1 "any_fp_register_operand"))
-    (set (match_operand:DF 2 "sse_reg_operand")
- 	(unspec:DF [(match_operand:DI 3 "memory_operand")]
- 		   UNSPEC_LDX_ATOMIC))
-    (set (match_operand:DI 4 "memory_operand")
- 	(unspec:DI [(match_dup 2)]
- 		   UNSPEC_STX_ATOMIC))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (3, operands[2])
-    && rtx_equal_p (XEXP (operands[0], 0), XEXP (operands[3], 0))"
-   [(set (match_dup 5) (match_dup 1))]
-   "operands[5] = gen_lowpart (DFmode, operands[4]);")
- 
- (define_peephole2
-   [(set (match_operand:DF 0 "memory_operand")
- 	(match_operand:DF 1 "any_fp_register_operand"))
-    (set (mem:BLK (scratch:SI))
- 	(unspec:BLK [(mem:BLK (scratch:SI))] UNSPEC_MEMORY_BLOCKAGE))
-    (set (match_operand:DF 2 "sse_reg_operand")
- 	(unspec:DF [(match_operand:DI 3 "memory_operand")]
- 		   UNSPEC_LDX_ATOMIC))
-    (set (match_operand:DI 4 "memory_operand")
- 	(unspec:DI [(match_dup 2)]
- 		   UNSPEC_STX_ATOMIC))]
-   "!TARGET_64BIT
-    && peep2_reg_dead_p (4, operands[2])
-    && rtx_equal_p (XEXP (operands[0], 0), XEXP (operands[3], 0))"
-   [(const_int 0)]
- {
-   emit_insn (gen_memory_blockage ());
-   emit_move_insn (gen_lowpart (DFmode, operands[4]), operands[1]);
-   DONE;
- })
- 
  ;; ??? You'd think that we'd be able to perform this via FLOAT + FIX_TRUNC
  ;; operations.  But the fix_trunc patterns want way more setup than we want
  ;; to provide.  Note that the scratch is DFmode instead of XFmode in order
--- 301,306 ----
***************
*** 794,800 ****
    rtx result = convert_modes (<MODE>mode, QImode, tem, 1);
    if (operands[4] == const0_rtx)
      result = expand_simple_binop (<MODE>mode, ASHIFT, result,
! 				  operands[2], operands[0], 0, OPTAB_DIRECT);
    if (result != operands[0])
      emit_move_insn (operands[0], result);
    DONE;
--- 650,656 ----
    rtx result = convert_modes (<MODE>mode, QImode, tem, 1);
    if (operands[4] == const0_rtx)
      result = expand_simple_binop (<MODE>mode, ASHIFT, result,
! 				  operands[2], operands[0], 0, OPTAB_WIDEN);
    if (result != operands[0])
      emit_move_insn (operands[0], result);
    DONE;
***************
*** 831,837 ****
    rtx result = convert_modes (<MODE>mode, QImode, tem, 1);
    if (operands[4] == const0_rtx)
      result = expand_simple_binop (<MODE>mode, ASHIFT, result,
! 				  operands[2], operands[0], 0, OPTAB_DIRECT);
    if (result != operands[0])
      emit_move_insn (operands[0], result);
    DONE;
--- 687,693 ----
    rtx result = convert_modes (<MODE>mode, QImode, tem, 1);
    if (operands[4] == const0_rtx)
      result = expand_simple_binop (<MODE>mode, ASHIFT, result,
! 				  operands[2], operands[0], 0, OPTAB_WIDEN);
    if (result != operands[0])
      emit_move_insn (operands[0], result);
    DONE;
***************
*** 869,875 ****
    rtx result = convert_modes (<MODE>mode, QImode, tem, 1);
    if (operands[4] == const0_rtx)
      result = expand_simple_binop (<MODE>mode, ASHIFT, result,
! 				  operands[2], operands[0], 0, OPTAB_DIRECT);
    if (result != operands[0])
      emit_move_insn (operands[0], result);
    DONE;
--- 725,731 ----
    rtx result = convert_modes (<MODE>mode, QImode, tem, 1);
    if (operands[4] == const0_rtx)
      result = expand_simple_binop (<MODE>mode, ASHIFT, result,
! 				  operands[2], operands[0], 0, OPTAB_WIDEN);
    if (result != operands[0])
      emit_move_insn (operands[0], result);
    DONE;
diff -Nrcpad gcc-10.3.0/gcc/config/i386/winnt.c gcc-10.4.0/gcc/config/i386/winnt.c
*** gcc-10.3.0/gcc/config/i386/winnt.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/i386/winnt.c	Tue Jun 28 08:54:27 2022
*************** i386_pe_seh_cold_init (FILE *f, const ch
*** 921,935 ****
  
    /* In the normal case, the frame pointer is near the bottom of the frame
       so we can do the full stack allocation and set it afterwards.  There
!      is an exception when the function accesses prior frames so, in this
!      case, we need to pre-allocate a small chunk before setting it.  */
!   if (crtl->accesses_prior_frames)
!     alloc_offset = seh->cfa_offset;
!   else
      alloc_offset = seh->sp_offset;
  
    offset = alloc_offset - INCOMING_FRAME_SP_OFFSET;
!   if (offset > 0 && offset < SEH_MAX_FRAME_SIZE)
      fprintf (f, "\t.seh_stackalloc\t" HOST_WIDE_INT_PRINT_DEC "\n", offset);
  
    for (int regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
--- 921,937 ----
  
    /* In the normal case, the frame pointer is near the bottom of the frame
       so we can do the full stack allocation and set it afterwards.  There
!      is an exception if the function overflows the SEH maximum frame size
!      or accesses prior frames so, in this case, we need to pre-allocate a
!      small chunk of stack before setting it.  */
!   offset = seh->sp_offset - INCOMING_FRAME_SP_OFFSET;
!   if (offset < SEH_MAX_FRAME_SIZE && !crtl->accesses_prior_frames)
      alloc_offset = seh->sp_offset;
+   else
+     alloc_offset = MIN (seh->cfa_offset + 240, seh->sp_offset);
  
    offset = alloc_offset - INCOMING_FRAME_SP_OFFSET;
!   if (offset > 0)
      fprintf (f, "\t.seh_stackalloc\t" HOST_WIDE_INT_PRINT_DEC "\n", offset);
  
    for (int regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
*************** i386_pe_seh_cold_init (FILE *f, const ch
*** 958,964 ****
        fprintf (f, ", " HOST_WIDE_INT_PRINT_DEC "\n", offset);
      }
  
!   if (crtl->accesses_prior_frames)
      {
        offset = seh->sp_offset - alloc_offset;
        if (offset > 0 && offset < SEH_MAX_FRAME_SIZE)
--- 960,966 ----
        fprintf (f, ", " HOST_WIDE_INT_PRINT_DEC "\n", offset);
      }
  
!   if (alloc_offset != seh->sp_offset)
      {
        offset = seh->sp_offset - alloc_offset;
        if (offset > 0 && offset < SEH_MAX_FRAME_SIZE)
*************** i386_pe_seh_unwind_emit (FILE *asm_out_f
*** 1242,1250 ****
    seh = cfun->machine->seh;
    if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
      {
!       /* See ix86_seh_fixup_eh_fallthru for the rationale.  */
        rtx_insn *prev = prev_active_insn (insn);
!       if (prev && !insn_nothrow_p (prev))
  	fputs ("\tnop\n", asm_out_file);
        fputs ("\t.seh_endproc\n", asm_out_file);
        seh->in_cold_section = true;
--- 1244,1252 ----
    seh = cfun->machine->seh;
    if (NOTE_P (insn) && NOTE_KIND (insn) == NOTE_INSN_SWITCH_TEXT_SECTIONS)
      {
!       /* See ix86_output_call_insn/seh_fixup_eh_fallthru for the rationale.  */
        rtx_insn *prev = prev_active_insn (insn);
!       if (prev && (CALL_P (prev) || !insn_nothrow_p (prev)))
  	fputs ("\tnop\n", asm_out_file);
        fputs ("\t.seh_endproc\n", asm_out_file);
        seh->in_cold_section = true;
diff -Nrcpad gcc-10.3.0/gcc/config/mips/mips.c gcc-10.4.0/gcc/config/mips/mips.c
*** gcc-10.3.0/gcc/config/mips/mips.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/mips/mips.c	Tue Jun 28 08:54:27 2022
*************** mips_atomic_assign_expand_fenv (tree *ho
*** 22418,22429 ****
    tree get_fcsr = mips_builtin_decls[MIPS_GET_FCSR];
    tree set_fcsr = mips_builtin_decls[MIPS_SET_FCSR];
    tree get_fcsr_hold_call = build_call_expr (get_fcsr, 0);
!   tree hold_assign_orig = build2 (MODIFY_EXPR, MIPS_ATYPE_USI,
! 				  fcsr_orig_var, get_fcsr_hold_call);
    tree hold_mod_val = build2 (BIT_AND_EXPR, MIPS_ATYPE_USI, fcsr_orig_var,
  			      build_int_cst (MIPS_ATYPE_USI, 0xfffff003));
!   tree hold_assign_mod = build2 (MODIFY_EXPR, MIPS_ATYPE_USI,
! 				 fcsr_mod_var, hold_mod_val);
    tree set_fcsr_hold_call = build_call_expr (set_fcsr, 1, fcsr_mod_var);
    tree hold_all = build2 (COMPOUND_EXPR, MIPS_ATYPE_USI,
  			  hold_assign_orig, hold_assign_mod);
--- 22418,22429 ----
    tree get_fcsr = mips_builtin_decls[MIPS_GET_FCSR];
    tree set_fcsr = mips_builtin_decls[MIPS_SET_FCSR];
    tree get_fcsr_hold_call = build_call_expr (get_fcsr, 0);
!   tree hold_assign_orig = build4 (TARGET_EXPR, MIPS_ATYPE_USI,
! 				  fcsr_orig_var, get_fcsr_hold_call, NULL, NULL);
    tree hold_mod_val = build2 (BIT_AND_EXPR, MIPS_ATYPE_USI, fcsr_orig_var,
  			      build_int_cst (MIPS_ATYPE_USI, 0xfffff003));
!   tree hold_assign_mod = build4 (TARGET_EXPR, MIPS_ATYPE_USI,
! 				 fcsr_mod_var, hold_mod_val, NULL, NULL);
    tree set_fcsr_hold_call = build_call_expr (set_fcsr, 1, fcsr_mod_var);
    tree hold_all = build2 (COMPOUND_EXPR, MIPS_ATYPE_USI,
  			  hold_assign_orig, hold_assign_mod);
*************** mips_atomic_assign_expand_fenv (tree *ho
*** 22433,22440 ****
    *clear = build_call_expr (set_fcsr, 1, fcsr_mod_var);
  
    tree get_fcsr_update_call = build_call_expr (get_fcsr, 0);
!   *update = build2 (MODIFY_EXPR, MIPS_ATYPE_USI,
! 		    exceptions_var, get_fcsr_update_call);
    tree set_fcsr_update_call = build_call_expr (set_fcsr, 1, fcsr_orig_var);
    *update = build2 (COMPOUND_EXPR, void_type_node, *update,
  		    set_fcsr_update_call);
--- 22433,22440 ----
    *clear = build_call_expr (set_fcsr, 1, fcsr_mod_var);
  
    tree get_fcsr_update_call = build_call_expr (get_fcsr, 0);
!   *update = build4 (TARGET_EXPR, MIPS_ATYPE_USI,
! 		    exceptions_var, get_fcsr_update_call, NULL, NULL);
    tree set_fcsr_update_call = build_call_expr (set_fcsr, 1, fcsr_orig_var);
    *update = build2 (COMPOUND_EXPR, void_type_node, *update,
  		    set_fcsr_update_call);
diff -Nrcpad gcc-10.3.0/gcc/config/nvptx/nvptx.c gcc-10.4.0/gcc/config/nvptx/nvptx.c
*** gcc-10.3.0/gcc/config/nvptx/nvptx.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/nvptx/nvptx.c	Tue Jun 28 08:54:27 2022
*************** nvptx_sese_pseudo (basic_block me, bb_se
*** 3571,3579 ****
    edge e;
    edge_iterator ei;
    int hi_back = depth;
!   pseudo_node_t node_back (0, depth);
    int hi_child = depth;
!   pseudo_node_t node_child (0, depth);
    basic_block child = NULL;
    unsigned num_children = 0;
    int usd = -dir * sese->dir;
--- 3571,3579 ----
    edge e;
    edge_iterator ei;
    int hi_back = depth;
!   pseudo_node_t node_back (NULL, depth);
    int hi_child = depth;
!   pseudo_node_t node_child (NULL, depth);
    basic_block child = NULL;
    unsigned num_children = 0;
    int usd = -dir * sese->dir;
*************** nvptx_sese_pseudo (basic_block me, bb_se
*** 3640,3646 ****
        else
  	{ /* Fallen off graph, backlink to entry node.  */
  	  hi_back = 0;
! 	  node_back = pseudo_node_t (0, 0);
  	}
      }
  
--- 3640,3646 ----
        else
  	{ /* Fallen off graph, backlink to entry node.  */
  	  hi_back = 0;
! 	  node_back = pseudo_node_t (NULL, 0);
  	}
      }
  
*************** nvptx_sese_pseudo (basic_block me, bb_se
*** 3661,3667 ****
        else
  	{
  	  /* back edge to entry node */
! 	  sese->push (pseudo_node_t (0, 0));
  	}
      }
    
--- 3661,3667 ----
        else
  	{
  	  /* back edge to entry node */
! 	  sese->push (pseudo_node_t (NULL, 0));
  	}
      }
    
*************** nvptx_sese_pseudo (basic_block me, bb_se
*** 3670,3676 ****
    if (!sese->brackets.length () || !edges || !edges->length ())
      {
        hi_back = 0;
!       node_back = pseudo_node_t (0, 0);
        sese->push (node_back);
      }
  
--- 3670,3676 ----
    if (!sese->brackets.length () || !edges || !edges->length ())
      {
        hi_back = 0;
!       node_back = pseudo_node_t (NULL, 0);
        sese->push (node_back);
      }
  
diff -Nrcpad gcc-10.3.0/gcc/config/pa/pa.md gcc-10.4.0/gcc/config/pa/pa.md
*** gcc-10.3.0/gcc/config/pa/pa.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/pa/pa.md	Tue Jun 28 08:54:27 2022
***************
*** 1383,1389 ****
                          (match_operand:SF 2 "reg_or_0_operand" "")])
  		      (label_ref (match_operand 3 "" ""))
  		      (pc)))]
!   ""
    "
  {
    pa_emit_bcond_fp (operands);
--- 1383,1389 ----
                          (match_operand:SF 2 "reg_or_0_operand" "")])
  		      (label_ref (match_operand 3 "" ""))
  		      (pc)))]
!   "! TARGET_SOFT_FLOAT"
    "
  {
    pa_emit_bcond_fp (operands);
***************
*** 1398,1404 ****
                          (match_operand:DF 2 "reg_or_0_operand" "")])
  		      (label_ref (match_operand 3 "" ""))
  		      (pc)))]
!   ""
    "
  {
    pa_emit_bcond_fp (operands);
--- 1398,1404 ----
                          (match_operand:DF 2 "reg_or_0_operand" "")])
  		      (label_ref (match_operand 3 "" ""))
  		      (pc)))]
!   "! TARGET_SOFT_FLOAT"
    "
  {
    pa_emit_bcond_fp (operands);
***************
*** 2237,2242 ****
--- 2237,2265 ----
     (set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,4")])
  
  (define_insn ""
+   [(set (match_operand:SI 0 "move_dest_operand"
+ 			  "=r,r,r,r,r,r,Q,!*q,!r")
+ 	(match_operand:SI 1 "move_src_operand"
+ 			  "A,r,J,N,K,RQ,rM,!rM,!*q"))]
+   "(register_operand (operands[0], SImode)
+     || reg_or_0_operand (operands[1], SImode))
+    && TARGET_SOFT_FLOAT
+    && TARGET_64BIT"
+   "@
+    ldw RT'%A1,%0
+    copy %1,%0
+    ldi %1,%0
+    ldil L'%1,%0
+    {zdepi|depwi,z} %Z1,%0
+    ldw%M1 %1,%0
+    stw%M0 %r1,%0
+    mtsar %r1
+    {mfctl|mfctl,w} %%sar,%0"
+   [(set_attr "type" "load,move,move,move,shift,load,store,move,move")
+    (set_attr "pa_combine_type" "addmove")
+    (set_attr "length" "4,4,4,4,4,4,4,4,4")])
+ 
+ (define_insn ""
    [(set (match_operand:SI 0 "indexed_memory_operand" "=R")
  	(match_operand:SI 1 "register_operand" "f"))]
    "!TARGET_SOFT_FLOAT
***************
*** 4024,4035 ****
    [(set (match_operand:DF 0 "move_dest_operand"
  			  "=!*r,*r,*r,*r,*r,Q,f,f,T")
  	(match_operand:DF 1 "move_src_operand"
! 			  "!*r,J,N,K,RQ,*rG,fG,RT,f"))]
    "(register_operand (operands[0], DFmode)
      || reg_or_0_operand (operands[1], DFmode))
     && !TARGET_SOFT_FLOAT && TARGET_64BIT"
    "@
!    copy %1,%0
     ldi %1,%0
     ldil L'%1,%0
     depdi,z %z1,%0
--- 4047,4058 ----
    [(set (match_operand:DF 0 "move_dest_operand"
  			  "=!*r,*r,*r,*r,*r,Q,f,f,T")
  	(match_operand:DF 1 "move_src_operand"
! 			  "!*rG,J,N,K,RQ,*rG,fG,RT,f"))]
    "(register_operand (operands[0], DFmode)
      || reg_or_0_operand (operands[1], DFmode))
     && !TARGET_SOFT_FLOAT && TARGET_64BIT"
    "@
!    copy %r1,%0
     ldi %1,%0
     ldil L'%1,%0
     depdi,z %z1,%0
***************
*** 4042,4047 ****
--- 4065,4089 ----
     (set_attr "pa_combine_type" "addmove")
     (set_attr "length" "4,4,4,4,4,4,4,4,4")])
  
+ (define_insn ""
+   [(set (match_operand:DF 0 "move_dest_operand"
+ 			  "=!*r,*r,*r,*r,*r,Q")
+ 	(match_operand:DF 1 "move_src_operand"
+ 			  "!*rG,J,N,K,RQ,*rG"))]
+   "(register_operand (operands[0], DFmode)
+     || reg_or_0_operand (operands[1], DFmode))
+    && TARGET_SOFT_FLOAT && TARGET_64BIT"
+   "@
+    copy %r1,%0
+    ldi %1,%0
+    ldil L'%1,%0
+    depdi,z %z1,%0
+    ldd%M1 %1,%0
+    std%M0 %r1,%0"
+   [(set_attr "type" "move,move,move,shift,load,store")
+    (set_attr "pa_combine_type" "addmove")
+    (set_attr "length" "4,4,4,4,4,4")])
+ 
  
  (define_expand "movdi"
    [(set (match_operand:DI 0 "general_operand" "")
***************
*** 4201,4206 ****
--- 4243,4270 ----
     (set_attr "length" "4,4,4,4,4,4,4,4,4,4,4,4")])
  
  (define_insn ""
+   [(set (match_operand:DI 0 "move_dest_operand"
+ 			  "=r,r,r,r,r,r,Q,!*q,!r")
+ 	(match_operand:DI 1 "move_src_operand"
+ 			  "A,r,J,N,K,RQ,rM,!rM,!*q"))]
+   "(register_operand (operands[0], DImode)
+     || reg_or_0_operand (operands[1], DImode))
+    && TARGET_SOFT_FLOAT && TARGET_64BIT"
+   "@
+    ldd RT'%A1,%0
+    copy %1,%0
+    ldi %1,%0
+    ldil L'%1,%0
+    depdi,z %z1,%0
+    ldd%M1 %1,%0
+    std%M0 %r1,%0
+    mtsar %r1
+    {mfctl|mfctl,w} %%sar,%0"
+   [(set_attr "type" "load,move,move,move,shift,load,store,move,move")
+    (set_attr "pa_combine_type" "addmove")
+    (set_attr "length" "4,4,4,4,4,4,4,4,4")])
+ 
+ (define_insn ""
    [(set (match_operand:DI 0 "indexed_memory_operand" "=R")
  	(match_operand:DI 1 "register_operand" "f"))]
    "!TARGET_SOFT_FLOAT
***************
*** 4406,4411 ****
--- 4470,4492 ----
     (set_attr "length" "4,4,4,4,4,4")])
  
  (define_insn ""
+   [(set (match_operand:SF 0 "move_dest_operand"
+ 			  "=!*r,*r,Q")
+ 	(match_operand:SF 1 "reg_or_0_or_nonsymb_mem_operand"
+ 			  "!*rG,RQ,*rG"))]
+   "(register_operand (operands[0], SFmode)
+     || reg_or_0_operand (operands[1], SFmode))
+    && TARGET_SOFT_FLOAT
+    && TARGET_64BIT"
+   "@
+    copy %r1,%0
+    ldw%M1 %1,%0
+    stw%M0 %r1,%0"
+   [(set_attr "type" "move,load,store")
+    (set_attr "pa_combine_type" "addmove")
+    (set_attr "length" "4,4,4")])
+ 
+ (define_insn ""
    [(set (match_operand:SF 0 "indexed_memory_operand" "=R")
  	(match_operand:SF 1 "register_operand" "f"))]
    "!TARGET_SOFT_FLOAT
***************
*** 5374,5405 ****
    [(set (match_operand:DI 0 "register_operand" "")
          (mult:DI (match_operand:DI 1 "register_operand" "")
  		 (match_operand:DI 2 "register_operand" "")))]
!   "TARGET_64BIT && ! TARGET_DISABLE_FPREGS && ! TARGET_SOFT_FLOAT"
    "
  {
    rtx low_product = gen_reg_rtx (DImode);
    rtx cross_product1 = gen_reg_rtx (DImode);
    rtx cross_product2 = gen_reg_rtx (DImode);
-   rtx cross_scratch = gen_reg_rtx (DImode);
-   rtx cross_product = gen_reg_rtx (DImode);
    rtx op1l, op1r, op2l, op2r;
-   rtx op1shifted, op2shifted;
  
!   op1shifted = gen_reg_rtx (DImode);
!   op2shifted = gen_reg_rtx (DImode);
!   op1l = gen_reg_rtx (SImode);
!   op1r = gen_reg_rtx (SImode);
!   op2l = gen_reg_rtx (SImode);
!   op2r = gen_reg_rtx (SImode);
  
!   emit_move_insn (op1shifted, gen_rtx_LSHIFTRT (DImode, operands[1],
! 						GEN_INT (32)));
!   emit_move_insn (op2shifted, gen_rtx_LSHIFTRT (DImode, operands[2],
! 						GEN_INT (32)));
!   op1r = force_reg (SImode, gen_rtx_SUBREG (SImode, operands[1], 4));
!   op2r = force_reg (SImode, gen_rtx_SUBREG (SImode, operands[2], 4));
!   op1l = force_reg (SImode, gen_rtx_SUBREG (SImode, op1shifted, 4));
!   op2l = force_reg (SImode, gen_rtx_SUBREG (SImode, op2shifted, 4));
  
    /* Emit multiplies for the cross products.  */
    emit_insn (gen_umulsidi3 (cross_product1, op2r, op1l));
--- 5455,5492 ----
    [(set (match_operand:DI 0 "register_operand" "")
          (mult:DI (match_operand:DI 1 "register_operand" "")
  		 (match_operand:DI 2 "register_operand" "")))]
!   "! optimize_size
!    && TARGET_PA_11
!    && ! TARGET_DISABLE_FPREGS
!    && ! TARGET_SOFT_FLOAT"
    "
  {
    rtx low_product = gen_reg_rtx (DImode);
    rtx cross_product1 = gen_reg_rtx (DImode);
    rtx cross_product2 = gen_reg_rtx (DImode);
    rtx op1l, op1r, op2l, op2r;
  
!   if (TARGET_64BIT)
!     {
!       rtx op1shifted = gen_reg_rtx (DImode);
!       rtx op2shifted = gen_reg_rtx (DImode);
  
!       emit_move_insn (op1shifted, gen_rtx_LSHIFTRT (DImode, operands[1],
! 						    GEN_INT (32)));
!       emit_move_insn (op2shifted, gen_rtx_LSHIFTRT (DImode, operands[2],
! 						    GEN_INT (32)));
!       op1r = force_reg (SImode, gen_rtx_SUBREG (SImode, operands[1], 4));
!       op2r = force_reg (SImode, gen_rtx_SUBREG (SImode, operands[2], 4));
!       op1l = force_reg (SImode, gen_rtx_SUBREG (SImode, op1shifted, 4));
!       op2l = force_reg (SImode, gen_rtx_SUBREG (SImode, op2shifted, 4));
!     }
!   else
!     {
!       op1r = force_reg (SImode, gen_lowpart (SImode, operands[1]));
!       op2r = force_reg (SImode, gen_lowpart (SImode, operands[2]));
!       op1l = force_reg (SImode, gen_highpart (SImode, operands[1]));
!       op2l = force_reg (SImode, gen_highpart (SImode, operands[2]));
!     }
  
    /* Emit multiplies for the cross products.  */
    emit_insn (gen_umulsidi3 (cross_product1, op2r, op1l));
***************
*** 5408,5420 ****
    /* Emit a multiply for the low sub-word.  */
    emit_insn (gen_umulsidi3 (low_product, copy_rtx (op2r), copy_rtx (op1r)));
  
!   /* Sum the cross products and shift them into proper position.  */
!   emit_insn (gen_adddi3 (cross_scratch, cross_product1, cross_product2));
!   emit_insn (gen_ashldi3 (cross_product, cross_scratch, GEN_INT (32)));
  
!   /* Add the cross product to the low product and store the result
!      into the output operand .  */
!   emit_insn (gen_adddi3 (operands[0], cross_product, low_product));
    DONE;
  }")
  
--- 5495,5529 ----
    /* Emit a multiply for the low sub-word.  */
    emit_insn (gen_umulsidi3 (low_product, copy_rtx (op2r), copy_rtx (op1r)));
  
!   if (TARGET_64BIT)
!     {
!       rtx cross_scratch = gen_reg_rtx (DImode);
!       rtx cross_product = gen_reg_rtx (DImode);
  
!       /* Sum the cross products and shift them into proper position.  */
!       emit_insn (gen_adddi3 (cross_scratch, cross_product1, cross_product2));
!       emit_insn (gen_ashldi3 (cross_product, cross_scratch, GEN_INT (32)));
! 
!       /* Add the cross product to the low product and store the result
! 	 into the output operand .  */
!       emit_insn (gen_adddi3 (operands[0], cross_product, low_product));
!     }
!   else
!     {
!       rtx cross_scratch = gen_reg_rtx (SImode);
! 
!       /* Sum cross products.  */
!       emit_move_insn (cross_scratch,
! 		      gen_rtx_PLUS (SImode,
! 				    gen_lowpart (SImode, cross_product1),
! 				    gen_lowpart (SImode, cross_product2)));
!       emit_move_insn (gen_lowpart (SImode, operands[0]),
! 		      gen_lowpart (SImode, low_product));
!       emit_move_insn (gen_highpart (SImode, operands[0]),
! 		      gen_rtx_PLUS (SImode,
! 				    gen_highpart (SImode, low_product),
! 				    cross_scratch));
!     }
    DONE;
  }")
  
diff -Nrcpad gcc-10.3.0/gcc/config/riscv/riscv.opt gcc-10.4.0/gcc/config/riscv/riscv.opt
*** gcc-10.3.0/gcc/config/riscv/riscv.opt	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/riscv/riscv.opt	Tue Jun 28 08:54:27 2022
*************** Target Report Var(TARGET_PLT) Init(1)
*** 30,36 ****
  When generating -fpic code, allow the use of PLTs. Ignored for fno-pic.
  
  mabi=
! Target Report RejectNegative Joined Enum(abi_type) Var(riscv_abi) Init(ABI_ILP32)
  Specify integer and floating-point calling convention.
  
  mpreferred-stack-boundary=
--- 30,36 ----
  When generating -fpic code, allow the use of PLTs. Ignored for fno-pic.
  
  mabi=
! Target Report RejectNegative Joined Enum(abi_type) Var(riscv_abi) Init(ABI_ILP32) Negative(mabi=)
  Specify integer and floating-point calling convention.
  
  mpreferred-stack-boundary=
*************** Target Report Mask(DIV)
*** 71,77 ****
  Use hardware instructions for integer division.
  
  march=
! Target Report RejectNegative Joined
  -march=	Generate code for given RISC-V ISA (e.g. RV64IM).  ISA strings must be
  lower-case.
  
--- 71,77 ----
  Use hardware instructions for integer division.
  
  march=
! Target Report RejectNegative Joined Negative(march=)
  -march=	Generate code for given RISC-V ISA (e.g. RV64IM).  ISA strings must be
  lower-case.
  
diff -Nrcpad gcc-10.3.0/gcc/config/riscv/t-riscv gcc-10.4.0/gcc/config/riscv/t-riscv
*** gcc-10.3.0/gcc/config/riscv/t-riscv	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/riscv/t-riscv	Tue Jun 28 08:54:27 2022
*************** riscv-builtins.o: $(srcdir)/config/riscv
*** 6,12 ****
  		$(srcdir)/config/riscv/riscv-builtins.c
  
  riscv-sr.o: $(srcdir)/config/riscv/riscv-sr.c $(CONFIG_H) \
!   $(SYSTEM_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-sr.c
  
--- 6,12 ----
  		$(srcdir)/config/riscv/riscv-builtins.c
  
  riscv-sr.o: $(srcdir)/config/riscv/riscv-sr.c $(CONFIG_H) \
!   $(SYSTEM_H) $(TM_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-sr.c
  
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/aix.h gcc-10.4.0/gcc/config/rs6000/aix.h
*** gcc-10.3.0/gcc/config/rs6000/aix.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/aix.h	Tue Jun 28 08:54:27 2022
***************
*** 280,282 ****
--- 280,287 ----
  /* Use standard DWARF numbering for DWARF debugging information.  */
  #define RS6000_USE_DWARF_NUMBERING
  
+ /* Replace -m64 with -maix64 and -m32 with -maix32.  */
+ #undef SUBTARGET_DRIVER_SELF_SPECS
+ #define SUBTARGET_DRIVER_SELF_SPECS	\
+ "%{m64:-maix64} %<m64",			\
+ "%{m32:-maix32} %<m32"
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/aix64.opt gcc-10.4.0/gcc/config/rs6000/aix64.opt
*** gcc-10.3.0/gcc/config/rs6000/aix64.opt	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/aix64.opt	Tue Jun 28 08:54:27 2022
*************** Driver
*** 53,55 ****
--- 53,61 ----
  
  pthread
  Driver
+ 
+ m64
+ Driver
+ 
+ m32
+ Driver
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/altivec.h gcc-10.4.0/gcc/config/rs6000/altivec.h
*** gcc-10.3.0/gcc/config/rs6000/altivec.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/altivec.h	Tue Jun 28 08:54:27 2022
***************
*** 129,135 ****
  #define vec_vcfux __builtin_vec_vcfux
  #define vec_cts __builtin_vec_cts
  #define vec_ctu __builtin_vec_ctu
! #define vec_cpsgn __builtin_vec_copysign
  #define vec_double __builtin_vec_double
  #define vec_doublee __builtin_vec_doublee
  #define vec_doubleo __builtin_vec_doubleo
--- 129,135 ----
  #define vec_vcfux __builtin_vec_vcfux
  #define vec_cts __builtin_vec_cts
  #define vec_ctu __builtin_vec_ctu
! #define vec_cpsgn(x,y) __builtin_vec_copysign(y,x)
  #define vec_double __builtin_vec_double
  #define vec_doublee __builtin_vec_doublee
  #define vec_doubleo __builtin_vec_doubleo
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/bmi2intrin.h gcc-10.4.0/gcc/config/rs6000/bmi2intrin.h
*** gcc-10.3.0/gcc/config/rs6000/bmi2intrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/bmi2intrin.h	Tue Jun 28 08:54:27 2022
*************** extern __inline unsigned long long
*** 77,115 ****
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _pdep_u64 (unsigned long long __X, unsigned long long __M)
  {
!   unsigned long result = 0x0UL;
!   const unsigned long mask = 0x8000000000000000UL;
!   unsigned long m = __M;
!   unsigned long c, t;
!   unsigned long p;
  
    /* The pop-count of the mask gives the number of the bits from
     source to process.  This is also needed to shift bits from the
     source into the correct position for the result.  */
!   p = 64 - __builtin_popcountl (__M);
  
    /* The loop is for the number of '1' bits in the mask and clearing
     each mask bit as it is processed.  */
!   while (m != 0)
      {
!       c = __builtin_clzl (m);
!       t = __X << (p - c);
!       m ^= (mask >> c);
!       result |= (t & (mask >> c));
!       p++;
      }
!   return (result);
  }
  
  extern __inline unsigned long long
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _pext_u64 (unsigned long long __X, unsigned long long __M)
  {
!   unsigned long p = 0x4040404040404040UL; // initial bit permute control
!   const unsigned long mask = 0x8000000000000000UL;
!   unsigned long m = __M;
!   unsigned long c;
!   unsigned long result;
  
    /* if the mask is constant and selects 8 bits or less we can use
     the Power8 Bit permute instruction.  */
--- 77,115 ----
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _pdep_u64 (unsigned long long __X, unsigned long long __M)
  {
!   unsigned long __result = 0x0UL;
!   const unsigned long __mask = 0x8000000000000000UL;
!   unsigned long __m = __M;
!   unsigned long __c, __t;
!   unsigned long __p;
  
    /* The pop-count of the mask gives the number of the bits from
     source to process.  This is also needed to shift bits from the
     source into the correct position for the result.  */
!   __p = 64 - __builtin_popcountl (__M);
  
    /* The loop is for the number of '1' bits in the mask and clearing
     each mask bit as it is processed.  */
!   while (__m != 0)
      {
!       __c = __builtin_clzl (__m);
!       __t = __X << (__p - __c);
!       __m ^= (__mask >> __c);
!       __result |= (__t & (__mask >> __c));
!       __p++;
      }
!   return __result;
  }
  
  extern __inline unsigned long long
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _pext_u64 (unsigned long long __X, unsigned long long __M)
  {
!   unsigned long __p = 0x4040404040404040UL; // initial bit permute control
!   const unsigned long __mask = 0x8000000000000000UL;
!   unsigned long __m = __M;
!   unsigned long __c;
!   unsigned long __result;
  
    /* if the mask is constant and selects 8 bits or less we can use
     the Power8 Bit permute instruction.  */
*************** _pext_u64 (unsigned long long __X, unsig
*** 118,151 ****
        /* Also if the pext mask is constant, then the popcount is
         constant, we can evaluate the following loop at compile
         time and use a constant bit permute vector.  */
!       for (long i = 0; i < __builtin_popcountl (__M); i++)
  	{
! 	  c = __builtin_clzl (m);
! 	  p = (p << 8) | c;
! 	  m ^= (mask >> c);
  	}
!       result = __builtin_bpermd (p, __X);
      }
    else
      {
!       p = 64 - __builtin_popcountl (__M);
!       result = 0;
        /* We could a use a for loop here, but that combined with
         -funroll-loops can expand to a lot of code.  The while
         loop avoids unrolling and the compiler commons the xor
!        from clearing the mask bit with the (m != 0) test.  The
         result is a more compact loop setup and body.  */
!       while (m != 0)
  	{
! 	  unsigned long t;
! 	  c = __builtin_clzl (m);
! 	  t = (__X & (mask >> c)) >> (p - c);
! 	  m ^= (mask >> c);
! 	  result |= (t);
! 	  p++;
  	}
      }
!   return (result);
  }
  
  /* these 32-bit implementations depend on 64-bit pdep/pext
--- 118,151 ----
        /* Also if the pext mask is constant, then the popcount is
         constant, we can evaluate the following loop at compile
         time and use a constant bit permute vector.  */
!       for (long __i = 0; __i < __builtin_popcountl (__M); __i++)
  	{
! 	  __c = __builtin_clzl (__m);
! 	  __p = (__p << 8) | __c;
! 	  __m ^= (__mask >> __c);
  	}
!       __result = __builtin_bpermd (__p, __X);
      }
    else
      {
!       __p = 64 - __builtin_popcountl (__M);
!       __result = 0;
        /* We could a use a for loop here, but that combined with
         -funroll-loops can expand to a lot of code.  The while
         loop avoids unrolling and the compiler commons the xor
!        from clearing the mask bit with the (__m != 0) test.  The
         result is a more compact loop setup and body.  */
!       while (__m != 0)
  	{
! 	  unsigned long __t;
! 	  __c = __builtin_clzl (__m);
! 	  __t = (__X & (__mask >> __c)) >> (__p - __c);
! 	  __m ^= (__mask >> __c);
! 	  __result |= (__t);
! 	  __p++;
  	}
      }
!   return __result;
  }
  
  /* these 32-bit implementations depend on 64-bit pdep/pext
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/darwin.h gcc-10.4.0/gcc/config/rs6000/darwin.h
*** gcc-10.3.0/gcc/config/rs6000/darwin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/darwin.h	Tue Jun 28 08:54:27 2022
***************
*** 203,209 ****
  
  /* Make both r2 and r13 available for allocation.  */
  #define FIXED_R2 0
! #define FIXED_R13 0
  
  /* Base register for access to local variables of the function.  */
  
--- 203,209 ----
  
  /* Make both r2 and r13 available for allocation.  */
  #define FIXED_R2 0
! #define FIXED_R13 TARGET_64BIT
  
  /* Base register for access to local variables of the function.  */
  
***************
*** 213,218 ****
--- 213,221 ----
  #undef  RS6000_PIC_OFFSET_TABLE_REGNUM
  #define RS6000_PIC_OFFSET_TABLE_REGNUM 31
  
+ #undef FIRST_SAVED_GP_REGNO
+ #define FIRST_SAVED_GP_REGNO 13
+ 
  /* Darwin's stack must remain 16-byte aligned for both 32 and 64 bit
     ABIs.  */
  
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/darwin.md gcc-10.4.0/gcc/config/rs6000/darwin.md
*** gcc-10.3.0/gcc/config/rs6000/darwin.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/darwin.md	Tue Jun 28 08:54:27 2022
*************** You should have received a copy of the G
*** 121,141 ****
     stw %0,lo16(%2)(%1)"
    [(set_attr "type" "store")])
  
- ;; 64-bit MachO load/store support
- 
  ;; Mach-O PIC.
  
  (define_insn "@macho_high_<mode>"
    [(set (match_operand:P 0 "gpc_reg_operand" "=b*r")
  	(high:P (match_operand 1 "" "")))]
!   "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN)"
    "lis %0,ha16(%1)")
  
  (define_insn "@macho_low_<mode>"
    [(set (match_operand:P 0 "gpc_reg_operand" "=r")
  	(lo_sum:P (match_operand:P 1 "gpc_reg_operand" "b")
  		   (match_operand 2 "" "")))]
!    "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN)"
     "la %0,lo16(%2)(%1)")
  
  (define_split
--- 121,152 ----
     stw %0,lo16(%2)(%1)"
    [(set_attr "type" "store")])
  
  ;; Mach-O PIC.
  
  (define_insn "@macho_high_<mode>"
    [(set (match_operand:P 0 "gpc_reg_operand" "=b*r")
  	(high:P (match_operand 1 "" "")))]
!   "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && !flag_pic"
    "lis %0,ha16(%1)")
  
  (define_insn "@macho_low_<mode>"
    [(set (match_operand:P 0 "gpc_reg_operand" "=r")
  	(lo_sum:P (match_operand:P 1 "gpc_reg_operand" "b")
  		   (match_operand 2 "" "")))]
!    "TARGET_MACHO && (DEFAULT_ABI == ABI_DARWIN) && !flag_pic"
!    "la %0,lo16(%2)(%1)")
! 
! (define_insn "@machopic_high_<mode>"
!   [(set (match_operand:P 0 "gpc_reg_operand" "=b*r")
! 	(high:P (match_operand 1 "macho_pic_address" "")))]
!   "TARGET_MACHO && flag_pic"
!   "lis %0,ha16(%1)")
! 
! (define_insn "@machopic_low_<mode>"
!   [(set (match_operand:P 0 "gpc_reg_operand" "=r")
! 	(lo_sum:P (match_operand:P 1 "gpc_reg_operand" "b")
! 		   (match_operand 2 "macho_pic_address" "")))]
!    "TARGET_MACHO && flag_pic"
     "la %0,lo16(%2)(%1)")
  
  (define_split
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/emmintrin.h gcc-10.4.0/gcc/config/rs6000/emmintrin.h
*** gcc-10.3.0/gcc/config/rs6000/emmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/emmintrin.h	Tue Jun 28 08:54:27 2022
*************** _mm_setzero_pd (void)
*** 141,149 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_move_sd (__m128d __A, __m128d __B)
  {
!   __v2df result = (__v2df) __A;
!   result [0] = ((__v2df) __B)[0];
!   return (__m128d) result;
  }
  
  /* Load two DPFP values from P.  The address must be 16-byte aligned.  */
--- 141,149 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_move_sd (__m128d __A, __m128d __B)
  {
!   __v2df __result = (__v2df) __A;
!   __result [0] = ((__v2df) __B)[0];
!   return (__m128d) __result;
  }
  
  /* Load two DPFP values from P.  The address must be 16-byte aligned.  */
*************** _mm_sqrt_pd (__m128d __A)
*** 329,337 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sqrt_sd (__m128d __A, __m128d __B)
  {
!   __v2df c;
!   c = vec_sqrt ((__v2df) _mm_set1_pd (__B[0]));
!   return (__m128d) _mm_setr_pd (c[0], __A[1]);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 329,337 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sqrt_sd (__m128d __A, __m128d __B)
  {
!   __v2df __c;
!   __c = vec_sqrt ((__v2df) _mm_set1_pd (__B[0]));
!   return (__m128d) _mm_setr_pd (__c[0], __A[1]);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_min_pd (__m128d __A, __m128d __B)
*** 343,353 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_min_sd (__m128d __A, __m128d __B)
  {
!   __v2df a, b, c;
!   a = vec_splats (__A[0]);
!   b = vec_splats (__B[0]);
!   c = vec_min (a, b);
!   return (__m128d) _mm_setr_pd (c[0], __A[1]);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 343,353 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_min_sd (__m128d __A, __m128d __B)
  {
!   __v2df __a, __b, __c;
!   __a = vec_splats (__A[0]);
!   __b = vec_splats (__B[0]);
!   __c = vec_min (__a, __b);
!   return (__m128d) _mm_setr_pd (__c[0], __A[1]);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_max_pd (__m128d __A, __m128d __B)
*** 359,369 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_max_sd (__m128d __A, __m128d __B)
  {
!   __v2df a, b, c;
!   a = vec_splats (__A[0]);
!   b = vec_splats (__B[0]);
!   c = vec_max (a, b);
!   return (__m128d) _mm_setr_pd (c[0], __A[1]);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 359,369 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_max_sd (__m128d __A, __m128d __B)
  {
!   __v2df __a, __b, __c;
!   __a = vec_splats (__A[0]);
!   __b = vec_splats (__B[0]);
!   __c = vec_max (__a, __b);
!   return (__m128d) _mm_setr_pd (__c[0], __A[1]);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cmpge_pd (__m128d __A, __m128d __B)
*** 399,406 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpneq_pd (__m128d __A, __m128d __B)
  {
!   __v2df temp = (__v2df) vec_cmpeq ((__v2df) __A, (__v2df)__B);
!   return ((__m128d)vec_nor (temp, temp));
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 399,406 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpneq_pd (__m128d __A, __m128d __B)
  {
!   __v2df __temp = (__v2df) vec_cmpeq ((__v2df) __A, (__v2df)__B);
!   return ((__m128d)vec_nor (__temp, __temp));
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cmpnge_pd (__m128d __A, __m128d __B)
*** 427,452 ****
    return ((__m128d)vec_cmplt ((__v2df) __A, (__v2df) __B));
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_pd (__m128d __A, __m128d __B)
  {
- #if _ARCH_PWR8
    __v2du c, d;
    /* Compare against self will return false (0's) if NAN.  */
    c = (__v2du)vec_cmpeq (__A, __A);
    d = (__v2du)vec_cmpeq (__B, __B);
- #else
-   __v2du a, b;
-   __v2du c, d;
-   const __v2du double_exp_mask  = {0x7ff0000000000000, 0x7ff0000000000000};
-   a = (__v2du)vec_abs ((__v2df)__A);
-   b = (__v2du)vec_abs ((__v2df)__B);
-   c = (__v2du)vec_cmpgt (double_exp_mask, a);
-   d = (__v2du)vec_cmpgt (double_exp_mask, b);
- #endif
    /* A != NAN and B != NAN.  */
    return ((__m128d)vec_and(c, d));
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_pd (__m128d __A, __m128d __B)
--- 427,444 ----
    return ((__m128d)vec_cmplt ((__v2df) __A, (__v2df) __B));
  }
  
+ #if _ARCH_PWR8
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_pd (__m128d __A, __m128d __B)
  {
    __v2du c, d;
    /* Compare against self will return false (0's) if NAN.  */
    c = (__v2du)vec_cmpeq (__A, __A);
    d = (__v2du)vec_cmpeq (__B, __B);
    /* A != NAN and B != NAN.  */
    return ((__m128d)vec_and(c, d));
  }
+ #endif
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_pd (__m128d __A, __m128d __B)
*************** _mm_cmpnge_sd (__m128d __A, __m128d __B)
*** 583,588 ****
--- 575,581 ----
    return (__m128d) _mm_setr_pd (c[0], __A[1]);
  }
  
+ #if _ARCH_PWR8
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_sd (__m128d __A, __m128d __B)
  {
*************** _mm_cmpord_sd (__m128d __A, __m128d __B)
*** 590,595 ****
--- 583,589 ----
    r = (__v2df)_mm_cmpord_pd (vec_splats (__A[0]), vec_splats (__B[0]));
    return (__m128d) _mm_setr_pd (r[0], ((__v2df)__A)[1]);
  }
+ #endif
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_sd (__m128d __A, __m128d __B)
*************** _mm_setzero_si128 (void)
*** 855,866 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtepi32_pd (__m128i __A)
  {
!   __v2di val;
    /* For LE need to generate Vector Unpack Low Signed Word.
       Which is generated from unpackh.  */
!   val = (__v2di)vec_unpackh ((__v4si)__A);
  
!   return (__m128d)vec_ctf (val, 0);
  }
  #endif
  
--- 849,860 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtepi32_pd (__m128i __A)
  {
!   __v2di __val;
    /* For LE need to generate Vector Unpack Low Signed Word.
       Which is generated from unpackh.  */
!   __val = (__v2di)vec_unpackh ((__v4si)__A);
  
!   return (__m128d)vec_ctf (__val, 0);
  }
  #endif
  
*************** _mm_cvtepi32_ps (__m128i __A)
*** 873,988 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpd_epi32 (__m128d __A)
  {
!   __v2df rounded = vec_rint (__A);
!   __v4si result, temp;
!   const __v4si vzero =
      { 0, 0, 0, 0 };
  
    /* VSX Vector truncate Double-Precision to integer and Convert to
     Signed Integer Word format with Saturate.  */
    __asm__(
        "xvcvdpsxws %x0,%x1"
!       : "=wa" (temp)
!       : "wa" (rounded)
        : );
  
  #ifdef _ARCH_PWR8
  #ifdef __LITTLE_ENDIAN__
!   temp = vec_mergeo (temp, temp);
  #else
!   temp = vec_mergee (temp, temp);
  #endif
!   result = (__v4si) vec_vpkudum ((__vector long long) temp,
! 				 (__vector long long) vzero);
  #else
    {
!     const __v16qu pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
  	0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f };
!     result = (__v4si) vec_perm ((__v16qu) temp, (__v16qu) vzero, pkperm);
    }
  #endif
!   return (__m128i) result;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpd_pi32 (__m128d __A)
  {
!   __m128i result = _mm_cvtpd_epi32(__A);
  
!   return (__m64) result[0];
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpd_ps (__m128d __A)
  {
!   __v4sf result;
!   __v4si temp;
!   const __v4si vzero = { 0, 0, 0, 0 };
  
    __asm__(
        "xvcvdpsp %x0,%x1"
!       : "=wa" (temp)
        : "wa" (__A)
        : );
  
  #ifdef _ARCH_PWR8
  #ifdef __LITTLE_ENDIAN__
!   temp = vec_mergeo (temp, temp);
  #else
!   temp = vec_mergee (temp, temp);
  #endif
!   result = (__v4sf) vec_vpkudum ((__vector long long) temp,
! 				 (__vector long long) vzero);
  #else
    {
!     const __v16qu pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
  	0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f };
!     result = (__v4sf) vec_perm ((__v16qu) temp, (__v16qu) vzero, pkperm);
    }
  #endif
!   return ((__m128)result);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttpd_epi32 (__m128d __A)
  {
!   __v4si result;
!   __v4si temp;
!   const __v4si vzero = { 0, 0, 0, 0 };
  
    /* VSX Vector truncate Double-Precision to integer and Convert to
     Signed Integer Word format with Saturate.  */
    __asm__(
        "xvcvdpsxws %x0,%x1"
!       : "=wa" (temp)
        : "wa" (__A)
        : );
  
  #ifdef _ARCH_PWR8
  #ifdef __LITTLE_ENDIAN__
!   temp = vec_mergeo (temp, temp);
  #else
!   temp = vec_mergee (temp, temp);
  #endif
!   result = (__v4si) vec_vpkudum ((__vector long long) temp,
! 				 (__vector long long) vzero);
  #else
    {
!     const __v16qu pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
  	0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f };
!     result = (__v4si) vec_perm ((__v16qu) temp, (__v16qu) vzero, pkperm);
    }
  #endif
  
!   return ((__m128i) result);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttpd_pi32 (__m128d __A)
  {
!   __m128i result = _mm_cvttpd_epi32 (__A);
  
!   return (__m64) result[0];
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 867,982 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpd_epi32 (__m128d __A)
  {
!   __v2df __rounded = vec_rint (__A);
!   __v4si __result, __temp;
!   const __v4si __vzero =
      { 0, 0, 0, 0 };
  
    /* VSX Vector truncate Double-Precision to integer and Convert to
     Signed Integer Word format with Saturate.  */
    __asm__(
        "xvcvdpsxws %x0,%x1"
!       : "=wa" (__temp)
!       : "wa" (__rounded)
        : );
  
  #ifdef _ARCH_PWR8
  #ifdef __LITTLE_ENDIAN__
!   __temp = vec_mergeo (__temp, __temp);
  #else
!   __temp = vec_mergee (__temp, __temp);
  #endif
!   __result = (__v4si) vec_vpkudum ((__vector long long) __temp,
! 				 (__vector long long) __vzero);
  #else
    {
!     const __v16qu __pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
  	0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f };
!     __result = (__v4si) vec_perm ((__v16qu) __temp, (__v16qu) __vzero, __pkperm);
    }
  #endif
!   return (__m128i) __result;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpd_pi32 (__m128d __A)
  {
!   __m128i __result = _mm_cvtpd_epi32(__A);
  
!   return (__m64) __result[0];
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpd_ps (__m128d __A)
  {
!   __v4sf __result;
!   __v4si __temp;
!   const __v4si __vzero = { 0, 0, 0, 0 };
  
    __asm__(
        "xvcvdpsp %x0,%x1"
!       : "=wa" (__temp)
        : "wa" (__A)
        : );
  
  #ifdef _ARCH_PWR8
  #ifdef __LITTLE_ENDIAN__
!   __temp = vec_mergeo (__temp, __temp);
  #else
!   __temp = vec_mergee (__temp, __temp);
  #endif
!   __result = (__v4sf) vec_vpkudum ((__vector long long) __temp,
! 				 (__vector long long) __vzero);
  #else
    {
!     const __v16qu __pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
  	0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f };
!     __result = (__v4sf) vec_perm ((__v16qu) __temp, (__v16qu) __vzero, __pkperm);
    }
  #endif
!   return ((__m128)__result);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttpd_epi32 (__m128d __A)
  {
!   __v4si __result;
!   __v4si __temp;
!   const __v4si __vzero = { 0, 0, 0, 0 };
  
    /* VSX Vector truncate Double-Precision to integer and Convert to
     Signed Integer Word format with Saturate.  */
    __asm__(
        "xvcvdpsxws %x0,%x1"
!       : "=wa" (__temp)
        : "wa" (__A)
        : );
  
  #ifdef _ARCH_PWR8
  #ifdef __LITTLE_ENDIAN__
!   __temp = vec_mergeo (__temp, __temp);
  #else
!   __temp = vec_mergee (__temp, __temp);
  #endif
!   __result = (__v4si) vec_vpkudum ((__vector long long) __temp,
! 				 (__vector long long) __vzero);
  #else
    {
!     const __v16qu __pkperm = {0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0a, 0x0b,
  	0x14, 0x15, 0x16, 0x17, 0x1c, 0x1d, 0x1e, 0x1f };
!     __result = (__v4si) vec_perm ((__v16qu) __temp, (__v16qu) __vzero, __pkperm);
    }
  #endif
  
!   return ((__m128i) __result);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttpd_pi32 (__m128d __A)
  {
!   __m128i __result = _mm_cvttpd_epi32 (__A);
  
!   return (__m64) __result[0];
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cvtsi128_si32 (__m128i __A)
*** 995,1029 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi32_pd (__m64 __A)
  {
!   __v4si temp;
!   __v2di tmp2;
!   __v2df result;
  
!   temp = (__v4si)vec_splats (__A);
!   tmp2 = (__v2di)vec_unpackl (temp);
!   result = vec_ctf ((__vector signed long long) tmp2, 0);
!   return (__m128d)result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtps_epi32 (__m128 __A)
  {
!   __v4sf rounded;
!   __v4si result;
  
!   rounded = vec_rint((__v4sf) __A);
!   result = vec_cts (rounded, 0);
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttps_epi32 (__m128 __A)
  {
!   __v4si result;
  
!   result = vec_cts ((__v4sf) __A, 0);
!   return (__m128i) result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 989,1023 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi32_pd (__m64 __A)
  {
!   __v4si __temp;
!   __v2di __tmp2;
!   __v2df __result;
  
!   __temp = (__v4si)vec_splats (__A);
!   __tmp2 = (__v2di)vec_unpackl (__temp);
!   __result = vec_ctf ((__vector signed long long) __tmp2, 0);
!   return (__m128d)__result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtps_epi32 (__m128 __A)
  {
!   __v4sf __rounded;
!   __v4si __result;
  
!   __rounded = vec_rint((__v4sf) __A);
!   __result = vec_cts (__rounded, 0);
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttps_epi32 (__m128 __A)
  {
!   __v4si __result;
  
!   __result = vec_cts ((__v4sf) __A, 0);
!   return (__m128i) __result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cvtps_pd (__m128 __A)
*** 1035,1082 ****
  #else
    /* Otherwise the compiler is not current and so need to generate the
       equivalent code.  */
!   __v4sf a = (__v4sf)__A;
!   __v4sf temp;
!   __v2df result;
  #ifdef __LITTLE_ENDIAN__
    /* The input float values are in elements {[0], [1]} but the convert
       instruction needs them in elements {[1], [3]}, So we use two
       shift left double vector word immediates to get the elements
       lined up.  */
!   temp = __builtin_vsx_xxsldwi (a, a, 3);
!   temp = __builtin_vsx_xxsldwi (a, temp, 2);
  #else
    /* The input float values are in elements {[0], [1]} but the convert
       instruction needs them in elements {[0], [2]}, So we use two
       shift left double vector word immediates to get the elements
       lined up.  */
!   temp = vec_vmrghw (a, a);
  #endif
    __asm__(
        " xvcvspdp %x0,%x1"
!       : "=wa" (result)
!       : "wa" (temp)
        : );
!   return (__m128d) result;
  #endif
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsd_si32 (__m128d __A)
  {
!   __v2df rounded = vec_rint((__v2df) __A);
!   int result = ((__v2df)rounded)[0];
  
!   return result;
  }
  /* Intel intrinsic.  */
  extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsd_si64 (__m128d __A)
  {
!   __v2df rounded = vec_rint ((__v2df) __A );
!   long long result = ((__v2df) rounded)[0];
  
!   return result;
  }
  
  /* Microsoft intrinsic.  */
--- 1029,1076 ----
  #else
    /* Otherwise the compiler is not current and so need to generate the
       equivalent code.  */
!   __v4sf __a = (__v4sf)__A;
!   __v4sf __temp;
!   __v2df __result;
  #ifdef __LITTLE_ENDIAN__
    /* The input float values are in elements {[0], [1]} but the convert
       instruction needs them in elements {[1], [3]}, So we use two
       shift left double vector word immediates to get the elements
       lined up.  */
!   __temp = __builtin_vsx_xxsldwi (__a, __a, 3);
!   __temp = __builtin_vsx_xxsldwi (__a, __temp, 2);
  #else
    /* The input float values are in elements {[0], [1]} but the convert
       instruction needs them in elements {[0], [2]}, So we use two
       shift left double vector word immediates to get the elements
       lined up.  */
!   __temp = vec_vmrghw (__a, __a);
  #endif
    __asm__(
        " xvcvspdp %x0,%x1"
!       : "=wa" (__result)
!       : "wa" (__temp)
        : );
!   return (__m128d) __result;
  #endif
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsd_si32 (__m128d __A)
  {
!   __v2df __rounded = vec_rint((__v2df) __A);
!   int __result = ((__v2df)__rounded)[0];
  
!   return __result;
  }
  /* Intel intrinsic.  */
  extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsd_si64 (__m128d __A)
  {
!   __v2df __rounded = vec_rint ((__v2df) __A );
!   long long __result = ((__v2df) __rounded)[0];
  
!   return __result;
  }
  
  /* Microsoft intrinsic.  */
*************** _mm_cvtsd_si64x (__m128d __A)
*** 1089,1106 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttsd_si32 (__m128d __A)
  {
!   int result = ((__v2df)__A)[0];
  
!   return result;
  }
  
  /* Intel intrinsic.  */
  extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttsd_si64 (__m128d __A)
  {
!   long long result = ((__v2df)__A)[0];
  
!   return result;
  }
  
  /* Microsoft intrinsic.  */
--- 1083,1100 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttsd_si32 (__m128d __A)
  {
!   int __result = ((__v2df)__A)[0];
  
!   return __result;
  }
  
  /* Intel intrinsic.  */
  extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttsd_si64 (__m128d __A)
  {
!   long long __result = ((__v2df)__A)[0];
  
!   return __result;
  }
  
  /* Microsoft intrinsic.  */
*************** _mm_cvttsd_si64x (__m128d __A)
*** 1113,1158 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsd_ss (__m128 __A, __m128d __B)
  {
!   __v4sf result = (__v4sf)__A;
  
  #ifdef __LITTLE_ENDIAN__
!   __v4sf temp_s;
    /* Copy double element[0] to element [1] for conversion.  */
!   __v2df temp_b = vec_splat((__v2df)__B, 0);
  
    /* Pre-rotate __A left 3 (logically right 1) elements.  */
!   result = __builtin_vsx_xxsldwi (result, result, 3);
    /* Convert double to single float scalar in a vector.  */
    __asm__(
        "xscvdpsp %x0,%x1"
!       : "=wa" (temp_s)
!       : "wa" (temp_b)
        : );
    /* Shift the resulting scalar into vector element [0].  */
!   result = __builtin_vsx_xxsldwi (result, temp_s, 1);
  #else
!   result [0] = ((__v2df)__B)[0];
  #endif
!   return (__m128) result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi32_sd (__m128d __A, int __B)
  {
!   __v2df result = (__v2df)__A;
!   double db = __B;
!   result [0] = db;
!   return (__m128d)result;
  }
  
  /* Intel intrinsic.  */
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi64_sd (__m128d __A, long long __B)
  {
!   __v2df result = (__v2df)__A;
!   double db = __B;
!   result [0] = db;
!   return (__m128d)result;
  }
  
  /* Microsoft intrinsic.  */
--- 1107,1152 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsd_ss (__m128 __A, __m128d __B)
  {
!   __v4sf __result = (__v4sf)__A;
  
  #ifdef __LITTLE_ENDIAN__
!   __v4sf __temp_s;
    /* Copy double element[0] to element [1] for conversion.  */
!   __v2df __temp_b = vec_splat((__v2df)__B, 0);
  
    /* Pre-rotate __A left 3 (logically right 1) elements.  */
!   __result = __builtin_vsx_xxsldwi (__result, __result, 3);
    /* Convert double to single float scalar in a vector.  */
    __asm__(
        "xscvdpsp %x0,%x1"
!       : "=wa" (__temp_s)
!       : "wa" (__temp_b)
        : );
    /* Shift the resulting scalar into vector element [0].  */
!   __result = __builtin_vsx_xxsldwi (__result, __temp_s, 1);
  #else
!   __result [0] = ((__v2df)__B)[0];
  #endif
!   return (__m128) __result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi32_sd (__m128d __A, int __B)
  {
!   __v2df __result = (__v2df)__A;
!   double __db = __B;
!   __result [0] = __db;
!   return (__m128d)__result;
  }
  
  /* Intel intrinsic.  */
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi64_sd (__m128d __A, long long __B)
  {
!   __v2df __result = (__v2df)__A;
!   double __db = __B;
!   __result [0] = __db;
!   return (__m128d)__result;
  }
  
  /* Microsoft intrinsic.  */
*************** _mm_cvtss_sd (__m128d __A, __m128 __B)
*** 1167,1211 ****
  {
  #ifdef __LITTLE_ENDIAN__
    /* Use splat to move element [0] into position for the convert. */
!   __v4sf temp = vec_splat ((__v4sf)__B, 0);
!   __v2df res;
    /* Convert single float scalar to double in a vector.  */
    __asm__(
        "xscvspdp %x0,%x1"
!       : "=wa" (res)
!       : "wa" (temp)
        : );
!   return (__m128d) vec_mergel (res, (__v2df)__A);
  #else
!   __v2df res = (__v2df)__A;
!   res [0] = ((__v4sf)__B) [0];
!   return (__m128d) res;
  #endif
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shuffle_pd(__m128d __A, __m128d __B, const int __mask)
  {
!   __vector double result;
!   const int litmsk = __mask & 0x3;
  
!   if (litmsk == 0)
!     result = vec_mergeh (__A, __B);
  #if __GNUC__ < 6
!   else if (litmsk == 1)
!     result = vec_xxpermdi (__B, __A, 2);
!   else if (litmsk == 2)
!     result = vec_xxpermdi (__B, __A, 1);
  #else
!   else if (litmsk == 1)
!     result = vec_xxpermdi (__A, __B, 2);
!   else if (litmsk == 2)
!     result = vec_xxpermdi (__A, __B, 1);
  #endif
    else
!     result = vec_mergel (__A, __B);
  
!   return result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1161,1205 ----
  {
  #ifdef __LITTLE_ENDIAN__
    /* Use splat to move element [0] into position for the convert. */
!   __v4sf __temp = vec_splat ((__v4sf)__B, 0);
!   __v2df __res;
    /* Convert single float scalar to double in a vector.  */
    __asm__(
        "xscvspdp %x0,%x1"
!       : "=wa" (__res)
!       : "wa" (__temp)
        : );
!   return (__m128d) vec_mergel (__res, (__v2df)__A);
  #else
!   __v2df __res = (__v2df)__A;
!   __res [0] = ((__v4sf)__B) [0];
!   return (__m128d) __res;
  #endif
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shuffle_pd(__m128d __A, __m128d __B, const int __mask)
  {
!   __vector double __result;
!   const int __litmsk = __mask & 0x3;
  
!   if (__litmsk == 0)
!     __result = vec_mergeh (__A, __B);
  #if __GNUC__ < 6
!   else if (__litmsk == 1)
!     __result = vec_xxpermdi (__B, __A, 2);
!   else if (__litmsk == 2)
!     __result = vec_xxpermdi (__B, __A, 1);
  #else
!   else if (__litmsk == 1)
!     __result = vec_xxpermdi (__A, __B, 2);
!   else if (__litmsk == 2)
!     __result = vec_xxpermdi (__A, __B, 1);
  #endif
    else
!     __result = vec_mergel (__A, __B);
  
!   return __result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_unpacklo_pd (__m128d __A, __m128d __
*** 1223,1239 ****
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_loadh_pd (__m128d __A, double const *__B)
  {
!   __v2df result = (__v2df)__A;
!   result [1] = *__B;
!   return (__m128d)result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_loadl_pd (__m128d __A, double const *__B)
  {
!   __v2df result = (__v2df)__A;
!   result [0] = *__B;
!   return (__m128d)result;
  }
  
  #ifdef _ARCH_PWR8
--- 1217,1233 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_loadh_pd (__m128d __A, double const *__B)
  {
!   __v2df __result = (__v2df)__A;
!   __result [1] = *__B;
!   return (__m128d)__result;
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_loadl_pd (__m128d __A, double const *__B)
  {
!   __v2df __result = (__v2df)__A;
!   __result [0] = *__B;
!   return (__m128d)__result;
  }
  
  #ifdef _ARCH_PWR8
*************** _mm_loadl_pd (__m128d __A, double const
*** 1243,1250 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movemask_pd (__m128d  __A)
  {
!   __vector unsigned long long result;
!   static const __vector unsigned int perm_mask =
      {
  #ifdef __LITTLE_ENDIAN__
  	0x80800040, 0x80808080, 0x80808080, 0x80808080
--- 1237,1244 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movemask_pd (__m128d  __A)
  {
!   __vector unsigned long long __result;
!   static const __vector unsigned int __perm_mask =
      {
  #ifdef __LITTLE_ENDIAN__
  	0x80800040, 0x80808080, 0x80808080, 0x80808080
*************** _mm_movemask_pd (__m128d  __A)
*** 1253,1266 ****
  #endif
      };
  
!   result = ((__vector unsigned long long)
  	    vec_vbpermq ((__vector unsigned char) __A,
! 			 (__vector unsigned char) perm_mask));
  
  #ifdef __LITTLE_ENDIAN__
!   return result[1];
  #else
!   return result[0];
  #endif
  }
  #endif /* _ARCH_PWR8 */
--- 1247,1260 ----
  #endif
      };
  
!   __result = ((__vector unsigned long long)
  	    vec_vbpermq ((__vector unsigned char) __A,
! 			 (__vector unsigned char) __perm_mask));
  
  #ifdef __LITTLE_ENDIAN__
!   return __result[1];
  #else
!   return __result[0];
  #endif
  }
  #endif /* _ARCH_PWR8 */
*************** _mm_subs_epu16 (__m128i __A, __m128i __B
*** 1432,1448 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_madd_epi16 (__m128i __A, __m128i __B)
  {
!   __vector signed int zero = {0, 0, 0, 0};
  
!   return (__m128i) vec_vmsumshm ((__v8hi)__A, (__v8hi)__B, zero);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_epi16 (__m128i __A, __m128i __B)
  {
!   __vector signed int w0, w1;
  
!   __vector unsigned char xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
--- 1426,1442 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_madd_epi16 (__m128i __A, __m128i __B)
  {
!   __vector signed int __zero = {0, 0, 0, 0};
  
!   return (__m128i) vec_vmsumshm ((__v8hi)__A, (__v8hi)__B, __zero);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_epi16 (__m128i __A, __m128i __B)
  {
!   __vector signed int __w0, __w1;
  
!   __vector unsigned char __xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
*************** _mm_mulhi_epi16 (__m128i __A, __m128i __
*** 1452,1460 ****
  #endif
      };
  
!   w0 = vec_vmulesh ((__v8hi)__A, (__v8hi)__B);
!   w1 = vec_vmulosh ((__v8hi)__A, (__v8hi)__B);
!   return (__m128i) vec_perm (w0, w1, xform1);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1446,1454 ----
  #endif
      };
  
!   __w0 = vec_vmulesh ((__v8hi)__A, (__v8hi)__B);
!   __w1 = vec_vmulosh ((__v8hi)__A, (__v8hi)__B);
!   return (__m128i) vec_perm (__w0, __w1, __xform1);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_mullo_epi16 (__m128i __A, __m128i __
*** 1466,1499 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mul_su32 (__m64 __A, __m64 __B)
  {
!   unsigned int a = __A;
!   unsigned int b = __B;
  
!   return ((__m64)a * (__m64)b);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mul_epu32 (__m128i __A, __m128i __B)
  {
! #if __GNUC__ < 8
!   __v2du result;
  
  #ifdef __LITTLE_ENDIAN__
    /* VMX Vector Multiply Odd Unsigned Word.  */
    __asm__(
        "vmulouw %0,%1,%2"
!       : "=v" (result)
        : "v" (__A), "v" (__B)
        : );
  #else
    /* VMX Vector Multiply Even Unsigned Word.  */
    __asm__(
        "vmuleuw %0,%1,%2"
!       : "=v" (result)
        : "v" (__A), "v" (__B)
        : );
  #endif
!   return (__m128i) result;
  #else
    return (__m128i) vec_mule ((__v4su)__A, (__v4su)__B);
  #endif
--- 1460,1493 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mul_su32 (__m64 __A, __m64 __B)
  {
!   unsigned int __a = __A;
!   unsigned int __b = __B;
  
!   return ((__m64)__a * (__m64)__b);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mul_epu32 (__m128i __A, __m128i __B)
  {
! #if __GNUC__ < 8 || !defined (_ARCH_PWR8)
!   __v2du __result;
  
  #ifdef __LITTLE_ENDIAN__
    /* VMX Vector Multiply Odd Unsigned Word.  */
    __asm__(
        "vmulouw %0,%1,%2"
!       : "=v" (__result)
        : "v" (__A), "v" (__B)
        : );
  #else
    /* VMX Vector Multiply Even Unsigned Word.  */
    __asm__(
        "vmuleuw %0,%1,%2"
!       : "=v" (__result)
        : "v" (__A), "v" (__B)
        : );
  #endif
!   return (__m128i) __result;
  #else
    return (__m128i) vec_mule ((__v4su)__A, (__v4su)__B);
  #endif
*************** _mm_mul_epu32 (__m128i __A, __m128i __B)
*** 1502,1623 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_epi16 (__m128i __A, int __B)
  {
!   __v8hu lshift;
!   __v8hi result = { 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__B >= 0 && __B < 16)
      {
        if (__builtin_constant_p(__B))
! 	lshift = (__v8hu) vec_splat_s16(__B);
        else
! 	lshift = vec_splats ((unsigned short) __B);
  
!       result = vec_sl ((__v8hi) __A, lshift);
      }
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_epi32 (__m128i __A, int __B)
  {
!   __v4su lshift;
!   __v4si result = { 0, 0, 0, 0 };
  
    if (__B >= 0 && __B < 32)
      {
        if (__builtin_constant_p(__B) && __B < 16)
! 	lshift = (__v4su) vec_splat_s32(__B);
        else
! 	lshift = vec_splats ((unsigned int) __B);
  
!       result = vec_sl ((__v4si) __A, lshift);
      }
  
!   return (__m128i) result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_epi64 (__m128i __A, int __B)
  {
!   __v2du lshift;
!   __v2di result = { 0, 0 };
  
    if (__B >= 0 && __B < 64)
      {
        if (__builtin_constant_p(__B) && __B < 16)
! 	lshift = (__v2du) vec_splat_s32(__B);
        else
! 	lshift = (__v2du) vec_splats ((unsigned int) __B);
  
!       result = vec_sl ((__v2di) __A, lshift);
      }
  
!   return (__m128i) result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srai_epi16 (__m128i __A, int __B)
  {
!   __v8hu rshift = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hi result;
  
    if (__B < 16)
      {
        if (__builtin_constant_p(__B))
! 	rshift = (__v8hu) vec_splat_s16(__B);
        else
! 	rshift = vec_splats ((unsigned short) __B);
      }
!   result = vec_sra ((__v8hi) __A, rshift);
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srai_epi32 (__m128i __A, int __B)
  {
!   __v4su rshift = { 31, 31, 31, 31 };
!   __v4si result;
  
    if (__B < 32)
      {
        if (__builtin_constant_p(__B))
  	{
  	  if (__B < 16)
! 	      rshift = (__v4su) vec_splat_s32(__B);
  	    else
! 	      rshift = (__v4su) vec_splats((unsigned int)__B);
  	}
        else
! 	rshift = vec_splats ((unsigned int) __B);
      }
!   result = vec_sra ((__v4si) __A, rshift);
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_bslli_si128 (__m128i __A, const int __N)
  {
!   __v16qu result;
!   const __v16qu zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__N < 16)
!     result = vec_sld ((__v16qu) __A, zeros, __N);
    else
!     result = zeros;
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_bsrli_si128 (__m128i __A, const int __N)
  {
!   __v16qu result;
!   const __v16qu zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__N < 16)
  #ifdef __LITTLE_ENDIAN__
--- 1496,1617 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_epi16 (__m128i __A, int __B)
  {
!   __v8hu __lshift;
!   __v8hi __result = { 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__B >= 0 && __B < 16)
      {
        if (__builtin_constant_p(__B))
! 	__lshift = (__v8hu) vec_splat_s16(__B);
        else
! 	__lshift = vec_splats ((unsigned short) __B);
  
!       __result = vec_sl ((__v8hi) __A, __lshift);
      }
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_epi32 (__m128i __A, int __B)
  {
!   __v4su __lshift;
!   __v4si __result = { 0, 0, 0, 0 };
  
    if (__B >= 0 && __B < 32)
      {
        if (__builtin_constant_p(__B) && __B < 16)
! 	__lshift = (__v4su) vec_splat_s32(__B);
        else
! 	__lshift = vec_splats ((unsigned int) __B);
  
!       __result = vec_sl ((__v4si) __A, __lshift);
      }
  
!   return (__m128i) __result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_epi64 (__m128i __A, int __B)
  {
!   __v2du __lshift;
!   __v2di __result = { 0, 0 };
  
    if (__B >= 0 && __B < 64)
      {
        if (__builtin_constant_p(__B) && __B < 16)
! 	__lshift = (__v2du) vec_splat_s32(__B);
        else
! 	__lshift = (__v2du) vec_splats ((unsigned int) __B);
  
!       __result = vec_sl ((__v2di) __A, __lshift);
      }
  
!   return (__m128i) __result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srai_epi16 (__m128i __A, int __B)
  {
!   __v8hu __rshift = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hi __result;
  
    if (__B < 16)
      {
        if (__builtin_constant_p(__B))
! 	__rshift = (__v8hu) vec_splat_s16(__B);
        else
! 	__rshift = vec_splats ((unsigned short) __B);
      }
!   __result = vec_sra ((__v8hi) __A, __rshift);
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srai_epi32 (__m128i __A, int __B)
  {
!   __v4su __rshift = { 31, 31, 31, 31 };
!   __v4si __result;
  
    if (__B < 32)
      {
        if (__builtin_constant_p(__B))
  	{
  	  if (__B < 16)
! 	      __rshift = (__v4su) vec_splat_s32(__B);
  	    else
! 	      __rshift = (__v4su) vec_splats((unsigned int)__B);
  	}
        else
! 	__rshift = vec_splats ((unsigned int) __B);
      }
!   __result = vec_sra ((__v4si) __A, __rshift);
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_bslli_si128 (__m128i __A, const int __N)
  {
!   __v16qu __result;
!   const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__N < 16)
!     __result = vec_sld ((__v16qu) __A, __zeros, __N);
    else
!     __result = __zeros;
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_bsrli_si128 (__m128i __A, const int __N)
  {
!   __v16qu __result;
!   const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__N < 16)
  #ifdef __LITTLE_ENDIAN__
*************** _mm_bsrli_si128 (__m128i __A, const int
*** 1625,1645 ****
        /* Would like to use Vector Shift Left Double by Octet
  	 Immediate here to use the immediate form and avoid
  	 load of __N * 8 value into a separate VR.  */
!       result = vec_sld (zeros, (__v16qu) __A, (16 - __N));
      else
  #endif
        {
! 	__v16qu shift = vec_splats((unsigned char)(__N*8));
  #ifdef __LITTLE_ENDIAN__
! 	result = vec_sro ((__v16qu)__A, shift);
  #else
! 	result = vec_slo ((__v16qu)__A, shift);
  #endif
        }
    else
!     result = zeros;
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1619,1639 ----
        /* Would like to use Vector Shift Left Double by Octet
  	 Immediate here to use the immediate form and avoid
  	 load of __N * 8 value into a separate VR.  */
!       __result = vec_sld (__zeros, (__v16qu) __A, (16 - __N));
      else
  #endif
        {
! 	__v16qu __shift = vec_splats((unsigned char)(__N*8));
  #ifdef __LITTLE_ENDIAN__
! 	__result = vec_sro ((__v16qu)__A, __shift);
  #else
! 	__result = vec_slo ((__v16qu)__A, __shift);
  #endif
        }
    else
!     __result = __zeros;
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_srli_si128 (__m128i __A, const int _
*** 1651,1889 ****
  extern __inline  __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_si128 (__m128i __A, const int _imm5)
  {
!   __v16qu result;
!   const __v16qu zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (_imm5 < 16)
  #ifdef __LITTLE_ENDIAN__
!     result = vec_sld ((__v16qu) __A, zeros, _imm5);
  #else
!     result = vec_sld (zeros, (__v16qu) __A, (16 - _imm5));
  #endif
    else
!     result = zeros;
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  
  _mm_srli_epi16 (__m128i  __A, int __B)
  {
!   __v8hu rshift;
!   __v8hi result = { 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__B < 16)
      {
        if (__builtin_constant_p(__B))
! 	rshift = (__v8hu) vec_splat_s16(__B);
        else
! 	rshift = vec_splats ((unsigned short) __B);
  
!       result = vec_sr ((__v8hi) __A, rshift);
      }
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srli_epi32 (__m128i __A, int __B)
  {
!   __v4su rshift;
!   __v4si result = { 0, 0, 0, 0 };
  
    if (__B < 32)
      {
        if (__builtin_constant_p(__B))
  	{
  	  if (__B < 16)
! 	      rshift = (__v4su) vec_splat_s32(__B);
  	    else
! 	      rshift = (__v4su) vec_splats((unsigned int)__B);
  	}
        else
! 	rshift = vec_splats ((unsigned int) __B);
  
!       result = vec_sr ((__v4si) __A, rshift);
      }
  
!   return (__m128i) result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srli_epi64 (__m128i __A, int __B)
  {
!   __v2du rshift;
!   __v2di result = { 0, 0 };
  
    if (__B < 64)
      {
        if (__builtin_constant_p(__B))
  	{
  	  if (__B < 16)
! 	      rshift = (__v2du) vec_splat_s32(__B);
  	    else
! 	      rshift = (__v2du) vec_splats((unsigned long long)__B);
  	}
        else
! 	rshift = (__v2du) vec_splats ((unsigned int) __B);
  
!       result = vec_sr ((__v2di) __A, rshift);
      }
  
!   return (__m128i) result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_epi16 (__m128i __A, __m128i __B)
  {
!   __v8hu lshift;
!   __vector __bool short shmask;
!   const __v8hu shmax = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hu result;
  
  #ifdef __LITTLE_ENDIAN__
!   lshift = vec_splat ((__v8hu) __B, 0);
  #else
!   lshift = vec_splat ((__v8hu) __B, 3);
  #endif
!   shmask = vec_cmple (lshift, shmax);
!   result = vec_sl ((__v8hu) __A, lshift);
!   result = vec_sel ((__v8hu) shmask, result, shmask);
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_epi32 (__m128i __A, __m128i __B)
  {
!   __v4su lshift;
!   __vector __bool int shmask;
!   const __v4su shmax = { 32, 32, 32, 32 };
!   __v4su result;
  #ifdef __LITTLE_ENDIAN__
!   lshift = vec_splat ((__v4su) __B, 0);
  #else
!   lshift = vec_splat ((__v4su) __B, 1);
  #endif
!   shmask = vec_cmplt (lshift, shmax);
!   result = vec_sl ((__v4su) __A, lshift);
!   result = vec_sel ((__v4su) shmask, result, shmask);
  
!   return (__m128i) result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_epi64 (__m128i __A, __m128i __B)
  {
!   __v2du lshift;
!   __vector __bool long long shmask;
!   const __v2du shmax = { 64, 64 };
!   __v2du result;
  
!   lshift = vec_splat ((__v2du) __B, 0);
!   shmask = vec_cmplt (lshift, shmax);
!   result = vec_sl ((__v2du) __A, lshift);
!   result = vec_sel ((__v2du) shmask, result, shmask);
  
!   return (__m128i) result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_epi16 (__m128i __A, __m128i __B)
  {
!   const __v8hu rshmax = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hu rshift;
!   __v8hi result;
  
  #ifdef __LITTLE_ENDIAN__
!   rshift = vec_splat ((__v8hu)__B, 0);
  #else
!   rshift = vec_splat ((__v8hu)__B, 3);
  #endif
!   rshift = vec_min (rshift, rshmax);
!   result = vec_sra ((__v8hi) __A, rshift);
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_epi32 (__m128i __A, __m128i __B)
  {
!   const __v4su rshmax = { 31, 31, 31, 31 };
!   __v4su rshift;
!   __v4si result;
  
  #ifdef __LITTLE_ENDIAN__
!   rshift = vec_splat ((__v4su)__B, 0);
  #else
!   rshift = vec_splat ((__v4su)__B, 1);
  #endif
!   rshift = vec_min (rshift, rshmax);
!   result = vec_sra ((__v4si) __A, rshift);
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_epi16 (__m128i __A, __m128i __B)
  {
!   __v8hu rshift;
!   __vector __bool short shmask;
!   const __v8hu shmax = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hu result;
  
  #ifdef __LITTLE_ENDIAN__
!   rshift = vec_splat ((__v8hu) __B, 0);
  #else
!   rshift = vec_splat ((__v8hu) __B, 3);
  #endif
!   shmask = vec_cmple (rshift, shmax);
!   result = vec_sr ((__v8hu) __A, rshift);
!   result = vec_sel ((__v8hu) shmask, result, shmask);
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_epi32 (__m128i __A, __m128i __B)
  {
!   __v4su rshift;
!   __vector __bool int shmask;
!   const __v4su shmax = { 32, 32, 32, 32 };
!   __v4su result;
  
  #ifdef __LITTLE_ENDIAN__
!   rshift = vec_splat ((__v4su) __B, 0);
  #else
!   rshift = vec_splat ((__v4su) __B, 1);
  #endif
!   shmask = vec_cmplt (rshift, shmax);
!   result = vec_sr ((__v4su) __A, rshift);
!   result = vec_sel ((__v4su) shmask, result, shmask);
  
!   return (__m128i) result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_epi64 (__m128i __A, __m128i __B)
  {
!   __v2du rshift;
!   __vector __bool long long shmask;
!   const __v2du shmax = { 64, 64 };
!   __v2du result;
  
!   rshift = vec_splat ((__v2du) __B, 0);
!   shmask = vec_cmplt (rshift, shmax);
!   result = vec_sr ((__v2du) __A, rshift);
!   result = vec_sel ((__v2du) shmask, result, shmask);
  
!   return (__m128i) result;
  }
  #endif
  
--- 1645,1883 ----
  extern __inline  __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_slli_si128 (__m128i __A, const int _imm5)
  {
!   __v16qu __result;
!   const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (_imm5 < 16)
  #ifdef __LITTLE_ENDIAN__
!     __result = vec_sld ((__v16qu) __A, __zeros, _imm5);
  #else
!     __result = vec_sld (__zeros, (__v16qu) __A, (16 - _imm5));
  #endif
    else
!     __result = __zeros;
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  
  _mm_srli_epi16 (__m128i  __A, int __B)
  {
!   __v8hu __rshift;
!   __v8hi __result = { 0, 0, 0, 0, 0, 0, 0, 0 };
  
    if (__B < 16)
      {
        if (__builtin_constant_p(__B))
! 	__rshift = (__v8hu) vec_splat_s16(__B);
        else
! 	__rshift = vec_splats ((unsigned short) __B);
  
!       __result = vec_sr ((__v8hi) __A, __rshift);
      }
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srli_epi32 (__m128i __A, int __B)
  {
!   __v4su __rshift;
!   __v4si __result = { 0, 0, 0, 0 };
  
    if (__B < 32)
      {
        if (__builtin_constant_p(__B))
  	{
  	  if (__B < 16)
! 	      __rshift = (__v4su) vec_splat_s32(__B);
  	    else
! 	      __rshift = (__v4su) vec_splats((unsigned int)__B);
  	}
        else
! 	__rshift = vec_splats ((unsigned int) __B);
  
!       __result = vec_sr ((__v4si) __A, __rshift);
      }
  
!   return (__m128i) __result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srli_epi64 (__m128i __A, int __B)
  {
!   __v2du __rshift;
!   __v2di __result = { 0, 0 };
  
    if (__B < 64)
      {
        if (__builtin_constant_p(__B))
  	{
  	  if (__B < 16)
! 	      __rshift = (__v2du) vec_splat_s32(__B);
  	    else
! 	      __rshift = (__v2du) vec_splats((unsigned long long)__B);
  	}
        else
! 	__rshift = (__v2du) vec_splats ((unsigned int) __B);
  
!       __result = vec_sr ((__v2di) __A, __rshift);
      }
  
!   return (__m128i) __result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_epi16 (__m128i __A, __m128i __B)
  {
!   __v8hu __lshift;
!   __vector __bool short __shmask;
!   const __v8hu __shmax = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hu __result;
  
  #ifdef __LITTLE_ENDIAN__
!   __lshift = vec_splat ((__v8hu) __B, 0);
  #else
!   __lshift = vec_splat ((__v8hu) __B, 3);
  #endif
!   __shmask = vec_cmple (__lshift, __shmax);
!   __result = vec_sl ((__v8hu) __A, __lshift);
!   __result = vec_sel ((__v8hu) __shmask, __result, __shmask);
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_epi32 (__m128i __A, __m128i __B)
  {
!   __v4su __lshift;
!   __vector __bool int __shmask;
!   const __v4su __shmax = { 32, 32, 32, 32 };
!   __v4su __result;
  #ifdef __LITTLE_ENDIAN__
!   __lshift = vec_splat ((__v4su) __B, 0);
  #else
!   __lshift = vec_splat ((__v4su) __B, 1);
  #endif
!   __shmask = vec_cmplt (__lshift, __shmax);
!   __result = vec_sl ((__v4su) __A, __lshift);
!   __result = vec_sel ((__v4su) __shmask, __result, __shmask);
  
!   return (__m128i) __result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_epi64 (__m128i __A, __m128i __B)
  {
!   __v2du __lshift;
!   __vector __bool long long __shmask;
!   const __v2du __shmax = { 64, 64 };
!   __v2du __result;
  
!   __lshift = vec_splat ((__v2du) __B, 0);
!   __shmask = vec_cmplt (__lshift, __shmax);
!   __result = vec_sl ((__v2du) __A, __lshift);
!   __result = vec_sel ((__v2du) __shmask, __result, __shmask);
  
!   return (__m128i) __result;
  }
  #endif
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_epi16 (__m128i __A, __m128i __B)
  {
!   const __v8hu __rshmax = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hu __rshift;
!   __v8hi __result;
  
  #ifdef __LITTLE_ENDIAN__
!   __rshift = vec_splat ((__v8hu)__B, 0);
  #else
!   __rshift = vec_splat ((__v8hu)__B, 3);
  #endif
!   __rshift = vec_min (__rshift, __rshmax);
!   __result = vec_sra ((__v8hi) __A, __rshift);
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_epi32 (__m128i __A, __m128i __B)
  {
!   const __v4su __rshmax = { 31, 31, 31, 31 };
!   __v4su __rshift;
!   __v4si __result;
  
  #ifdef __LITTLE_ENDIAN__
!   __rshift = vec_splat ((__v4su)__B, 0);
  #else
!   __rshift = vec_splat ((__v4su)__B, 1);
  #endif
!   __rshift = vec_min (__rshift, __rshmax);
!   __result = vec_sra ((__v4si) __A, __rshift);
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_epi16 (__m128i __A, __m128i __B)
  {
!   __v8hu __rshift;
!   __vector __bool short __shmask;
!   const __v8hu __shmax = { 15, 15, 15, 15, 15, 15, 15, 15 };
!   __v8hu __result;
  
  #ifdef __LITTLE_ENDIAN__
!   __rshift = vec_splat ((__v8hu) __B, 0);
  #else
!   __rshift = vec_splat ((__v8hu) __B, 3);
  #endif
!   __shmask = vec_cmple (__rshift, __shmax);
!   __result = vec_sr ((__v8hu) __A, __rshift);
!   __result = vec_sel ((__v8hu) __shmask, __result, __shmask);
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_epi32 (__m128i __A, __m128i __B)
  {
!   __v4su __rshift;
!   __vector __bool int __shmask;
!   const __v4su __shmax = { 32, 32, 32, 32 };
!   __v4su __result;
  
  #ifdef __LITTLE_ENDIAN__
!   __rshift = vec_splat ((__v4su) __B, 0);
  #else
!   __rshift = vec_splat ((__v4su) __B, 1);
  #endif
!   __shmask = vec_cmplt (__rshift, __shmax);
!   __result = vec_sr ((__v4su) __A, __rshift);
!   __result = vec_sel ((__v4su) __shmask, __result, __shmask);
  
!   return (__m128i) __result;
  }
  
  #ifdef _ARCH_PWR8
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_epi64 (__m128i __A, __m128i __B)
  {
!   __v2du __rshift;
!   __vector __bool long long __shmask;
!   const __v2du __shmax = { 64, 64 };
!   __v2du __result;
  
!   __rshift = vec_splat ((__v2du) __B, 0);
!   __shmask = vec_cmplt (__rshift, __shmax);
!   __result = vec_sr ((__v2du) __A, __rshift);
!   __result = vec_sel ((__v2du) __shmask, __result, __shmask);
  
!   return (__m128i) __result;
  }
  #endif
  
*************** _mm_extract_epi16 (__m128i const __A, in
*** 1998,2008 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_insert_epi16 (__m128i const __A, int const __D, int const __N)
  {
!   __v8hi result = (__v8hi)__A;
  
!   result [(__N & 7)] = __D;
  
!   return (__m128i) result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1992,2002 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_insert_epi16 (__m128i const __A, int const __D, int const __N)
  {
!   __v8hi __result = (__v8hi)__A;
  
!   __result [(__N & 7)] = __D;
  
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_min_epu8 (__m128i __A, __m128i __B)
*** 2037,2057 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movemask_epi8 (__m128i __A)
  {
!   __vector unsigned long long result;
!   static const __vector unsigned char perm_mask =
      {
  	0x78, 0x70, 0x68, 0x60, 0x58, 0x50, 0x48, 0x40,
  	0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x08, 0x00
      };
  
!   result = ((__vector unsigned long long)
  	    vec_vbpermq ((__vector unsigned char) __A,
! 			 (__vector unsigned char) perm_mask));
  
  #ifdef __LITTLE_ENDIAN__
!   return result[1];
  #else
!   return result[0];
  #endif
  }
  #endif /* _ARCH_PWR8 */
--- 2031,2051 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movemask_epi8 (__m128i __A)
  {
!   __vector unsigned long long __result;
!   static const __vector unsigned char __perm_mask =
      {
  	0x78, 0x70, 0x68, 0x60, 0x58, 0x50, 0x48, 0x40,
  	0x38, 0x30, 0x28, 0x20, 0x18, 0x10, 0x08, 0x00
      };
  
!   __result = ((__vector unsigned long long)
  	    vec_vbpermq ((__vector unsigned char) __A,
! 			 (__vector unsigned char) __perm_mask));
  
  #ifdef __LITTLE_ENDIAN__
!   return __result[1];
  #else
!   return __result[0];
  #endif
  }
  #endif /* _ARCH_PWR8 */
*************** _mm_movemask_epi8 (__m128i __A)
*** 2059,2066 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_epu16 (__m128i __A, __m128i __B)
  {
!   __v4su w0, w1;
!   __v16qu xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
--- 2053,2060 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_epu16 (__m128i __A, __m128i __B)
  {
!   __v4su __w0, __w1;
!   __v16qu __xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
*************** _mm_mulhi_epu16 (__m128i __A, __m128i __
*** 2070,2088 ****
  #endif
      };
  
!   w0 = vec_vmuleuh ((__v8hu)__A, (__v8hu)__B);
!   w1 = vec_vmulouh ((__v8hu)__A, (__v8hu)__B);
!   return (__m128i) vec_perm (w0, w1, xform1);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shufflehi_epi16 (__m128i __A, const int __mask)
  {
!   unsigned long element_selector_98 = __mask & 0x03;
!   unsigned long element_selector_BA = (__mask >> 2) & 0x03;
!   unsigned long element_selector_DC = (__mask >> 4) & 0x03;
!   unsigned long element_selector_FE = (__mask >> 6) & 0x03;
!   static const unsigned short permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	      0x0908, 0x0B0A, 0x0D0C, 0x0F0E
--- 2064,2082 ----
  #endif
      };
  
!   __w0 = vec_vmuleuh ((__v8hu)__A, (__v8hu)__B);
!   __w1 = vec_vmulouh ((__v8hu)__A, (__v8hu)__B);
!   return (__m128i) vec_perm (__w0, __w1, __xform1);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shufflehi_epi16 (__m128i __A, const int __mask)
  {
!   unsigned long __element_selector_98 = __mask & 0x03;
!   unsigned long __element_selector_BA = (__mask >> 2) & 0x03;
!   unsigned long __element_selector_DC = (__mask >> 4) & 0x03;
!   unsigned long __element_selector_FE = (__mask >> 6) & 0x03;
!   static const unsigned short __permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	      0x0908, 0x0B0A, 0x0D0C, 0x0F0E
*************** _mm_shufflehi_epi16 (__m128i __A, const
*** 2090,2122 ****
  	      0x0809, 0x0A0B, 0x0C0D, 0x0E0F
  #endif
      };
!   __v2du pmask =
  #ifdef __LITTLE_ENDIAN__
        { 0x1716151413121110UL,  0UL};
  #else
        { 0x1011121314151617UL,  0UL};
  #endif
!   __m64_union t;
!   __v2du a, r;
  
!   t.as_short[0] = permute_selectors[element_selector_98];
!   t.as_short[1] = permute_selectors[element_selector_BA];
!   t.as_short[2] = permute_selectors[element_selector_DC];
!   t.as_short[3] = permute_selectors[element_selector_FE];
!   pmask[1] = t.as_m64;
!   a = (__v2du)__A;
!   r = vec_perm (a, a, (__vector unsigned char)pmask);
!   return (__m128i) r;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shufflelo_epi16 (__m128i __A, const int __mask)
  {
!   unsigned long element_selector_10 = __mask & 0x03;
!   unsigned long element_selector_32 = (__mask >> 2) & 0x03;
!   unsigned long element_selector_54 = (__mask >> 4) & 0x03;
!   unsigned long element_selector_76 = (__mask >> 6) & 0x03;
!   static const unsigned short permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	      0x0100, 0x0302, 0x0504, 0x0706
--- 2084,2116 ----
  	      0x0809, 0x0A0B, 0x0C0D, 0x0E0F
  #endif
      };
!   __v2du __pmask =
  #ifdef __LITTLE_ENDIAN__
        { 0x1716151413121110UL,  0UL};
  #else
        { 0x1011121314151617UL,  0UL};
  #endif
!   __m64_union __t;
!   __v2du __a, __r;
  
!   __t.as_short[0] = __permute_selectors[__element_selector_98];
!   __t.as_short[1] = __permute_selectors[__element_selector_BA];
!   __t.as_short[2] = __permute_selectors[__element_selector_DC];
!   __t.as_short[3] = __permute_selectors[__element_selector_FE];
!   __pmask[1] = __t.as_m64;
!   __a = (__v2du)__A;
!   __r = vec_perm (__a, __a, (__vector unsigned char)__pmask);
!   return (__m128i) __r;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shufflelo_epi16 (__m128i __A, const int __mask)
  {
!   unsigned long __element_selector_10 = __mask & 0x03;
!   unsigned long __element_selector_32 = (__mask >> 2) & 0x03;
!   unsigned long __element_selector_54 = (__mask >> 4) & 0x03;
!   unsigned long __element_selector_76 = (__mask >> 6) & 0x03;
!   static const unsigned short __permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	      0x0100, 0x0302, 0x0504, 0x0706
*************** _mm_shufflelo_epi16 (__m128i __A, const
*** 2124,2155 ****
  	      0x0001, 0x0203, 0x0405, 0x0607
  #endif
      };
!   __v2du pmask =
  #ifdef __LITTLE_ENDIAN__
                   { 0UL,  0x1f1e1d1c1b1a1918UL};
  #else
                   { 0UL,  0x18191a1b1c1d1e1fUL};
  #endif
!   __m64_union t;
!   __v2du a, r;
!   t.as_short[0] = permute_selectors[element_selector_10];
!   t.as_short[1] = permute_selectors[element_selector_32];
!   t.as_short[2] = permute_selectors[element_selector_54];
!   t.as_short[3] = permute_selectors[element_selector_76];
!   pmask[0] = t.as_m64;
!   a = (__v2du)__A;
!   r = vec_perm (a, a, (__vector unsigned char)pmask);
!   return (__m128i) r;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shuffle_epi32 (__m128i __A, const int __mask)
  {
!   unsigned long element_selector_10 = __mask & 0x03;
!   unsigned long element_selector_32 = (__mask >> 2) & 0x03;
!   unsigned long element_selector_54 = (__mask >> 4) & 0x03;
!   unsigned long element_selector_76 = (__mask >> 6) & 0x03;
!   static const unsigned int permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	0x03020100, 0x07060504, 0x0B0A0908, 0x0F0E0D0C
--- 2118,2149 ----
  	      0x0001, 0x0203, 0x0405, 0x0607
  #endif
      };
!   __v2du __pmask =
  #ifdef __LITTLE_ENDIAN__
                   { 0UL,  0x1f1e1d1c1b1a1918UL};
  #else
                   { 0UL,  0x18191a1b1c1d1e1fUL};
  #endif
!   __m64_union __t;
!   __v2du __a, __r;
!   __t.as_short[0] = __permute_selectors[__element_selector_10];
!   __t.as_short[1] = __permute_selectors[__element_selector_32];
!   __t.as_short[2] = __permute_selectors[__element_selector_54];
!   __t.as_short[3] = __permute_selectors[__element_selector_76];
!   __pmask[0] = __t.as_m64;
!   __a = (__v2du)__A;
!   __r = vec_perm (__a, __a, (__vector unsigned char)__pmask);
!   return (__m128i) __r;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shuffle_epi32 (__m128i __A, const int __mask)
  {
!   unsigned long __element_selector_10 = __mask & 0x03;
!   unsigned long __element_selector_32 = (__mask >> 2) & 0x03;
!   unsigned long __element_selector_54 = (__mask >> 4) & 0x03;
!   unsigned long __element_selector_76 = (__mask >> 6) & 0x03;
!   static const unsigned int __permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	0x03020100, 0x07060504, 0x0B0A0908, 0x0F0E0D0C
*************** _mm_shuffle_epi32 (__m128i __A, const in
*** 2157,2182 ****
        0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F
  #endif
      };
!   __v4su t;
  
!   t[0] = permute_selectors[element_selector_10];
!   t[1] = permute_selectors[element_selector_32];
!   t[2] = permute_selectors[element_selector_54] + 0x10101010;
!   t[3] = permute_selectors[element_selector_76] + 0x10101010;
!   return (__m128i)vec_perm ((__v4si) __A, (__v4si)__A, (__vector unsigned char)t);
  }
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C)
  {
!   __v2du hibit = { 0x7f7f7f7f7f7f7f7fUL, 0x7f7f7f7f7f7f7f7fUL};
!   __v16qu mask, tmp;
!   __m128i_u *p = (__m128i_u*)__C;
  
!   tmp = (__v16qu)_mm_loadu_si128(p);
!   mask = (__v16qu)vec_cmpgt ((__v16qu)__B, (__v16qu)hibit);
!   tmp = vec_sel (tmp, (__v16qu)__A, mask);
!   _mm_storeu_si128 (p, (__m128i)tmp);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 2151,2176 ----
        0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F
  #endif
      };
!   __v4su __t;
  
!   __t[0] = __permute_selectors[__element_selector_10];
!   __t[1] = __permute_selectors[__element_selector_32];
!   __t[2] = __permute_selectors[__element_selector_54] + 0x10101010;
!   __t[3] = __permute_selectors[__element_selector_76] + 0x10101010;
!   return (__m128i)vec_perm ((__v4si) __A, (__v4si)__A, (__vector unsigned char)__t);
  }
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C)
  {
!   __v2du __hibit = { 0x7f7f7f7f7f7f7f7fUL, 0x7f7f7f7f7f7f7f7fUL};
!   __v16qu __mask, __tmp;
!   __m128i_u *__p = (__m128i_u*)__C;
  
!   __tmp = (__v16qu)_mm_loadu_si128(__p);
!   __mask = (__v16qu)vec_cmpgt ((__v16qu)__B, (__v16qu)__hibit);
!   __tmp = vec_sel (__tmp, (__v16qu)__A, __mask);
!   _mm_storeu_si128 (__p, (__m128i)__tmp);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_avg_epu16 (__m128i __A, __m128i __B)
*** 2195,2223 ****
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sad_epu8 (__m128i __A, __m128i __B)
  {
!   __v16qu a, b;
!   __v16qu vmin, vmax, vabsdiff;
!   __v4si vsum;
!   const __v4su zero = { 0, 0, 0, 0 };
!   __v4si result;
  
!   a = (__v16qu) __A;
!   b = (__v16qu) __B;
!   vmin = vec_min (a, b);
!   vmax = vec_max (a, b);
!   vabsdiff = vec_sub (vmax, vmin);
    /* Sum four groups of bytes into integers.  */
!   vsum = (__vector signed int) vec_sum4s (vabsdiff, zero);
    /* Sum across four integers with two integer results.  */
!   result = vec_sum2s (vsum, (__vector signed int) zero);
    /* Rotate the sums into the correct position.  */
  #ifdef __LITTLE_ENDIAN__
!   result = vec_sld (result, result, 4);
  #else
!   result = vec_sld (result, result, 6);
  #endif
    /* Rotate the sums into the correct position.  */
!   return (__m128i) result;
  }
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 2189,2217 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sad_epu8 (__m128i __A, __m128i __B)
  {
!   __v16qu __a, __b;
!   __v16qu __vmin, __vmax, __vabsdiff;
!   __v4si __vsum;
!   const __v4su __zero = { 0, 0, 0, 0 };
!   __v4si __result;
  
!   __a = (__v16qu) __A;
!   __b = (__v16qu) __B;
!   __vmin = vec_min (__a, __b);
!   __vmax = vec_max (__a, __b);
!   __vabsdiff = vec_sub (__vmax, __vmin);
    /* Sum four groups of bytes into integers.  */
!   __vsum = (__vector signed int) vec_sum4s (__vabsdiff, __zero);
    /* Sum across four integers with two integer results.  */
!   __result = vec_sum2s (__vsum, (__vector signed int) __zero);
    /* Rotate the sums into the correct position.  */
  #ifdef __LITTLE_ENDIAN__
!   __result = vec_sld (__result, __result, 4);
  #else
!   __result = vec_sld (__result, __result, 6);
  #endif
    /* Rotate the sums into the correct position.  */
!   return (__m128i) __result;
  }
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/mm_malloc.h gcc-10.4.0/gcc/config/rs6000/mm_malloc.h
*** gcc-10.3.0/gcc/config/rs6000/mm_malloc.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/mm_malloc.h	Tue Jun 28 08:54:27 2022
*************** extern "C" int posix_memalign (void **,
*** 35,62 ****
  #endif
  
  static __inline void *
! _mm_malloc (size_t size, size_t alignment)
  {
    /* PowerPC64 ELF V2 ABI requires quadword alignment.  */
!   size_t vec_align = sizeof (__vector float);
    /* Linux GLIBC malloc alignment is at least 2 X ptr size.  */
!   size_t malloc_align = (sizeof (void *) + sizeof (void *));
!   void *ptr;
  
!   if (alignment == malloc_align && alignment == vec_align)
!     return malloc (size);
!   if (alignment < vec_align)
!     alignment = vec_align;
!   if (posix_memalign (&ptr, alignment, size) == 0)
!     return ptr;
    else
      return NULL;
  }
  
  static __inline void
! _mm_free (void * ptr)
  {
!   free (ptr);
  }
  
  #endif /* _MM_MALLOC_H_INCLUDED */
--- 35,62 ----
  #endif
  
  static __inline void *
! _mm_malloc (size_t __size, size_t __alignment)
  {
    /* PowerPC64 ELF V2 ABI requires quadword alignment.  */
!   size_t __vec_align = sizeof (__vector float);
    /* Linux GLIBC malloc alignment is at least 2 X ptr size.  */
!   size_t __malloc_align = (sizeof (void *) + sizeof (void *));
!   void *__ptr;
  
!   if (__alignment == __malloc_align && __alignment == __vec_align)
!     return malloc (__size);
!   if (__alignment < __vec_align)
!     __alignment = __vec_align;
!   if (posix_memalign (&__ptr, __alignment, __size) == 0)
!     return __ptr;
    else
      return NULL;
  }
  
  static __inline void
! _mm_free (void * __ptr)
  {
!   free (__ptr);
  }
  
  #endif /* _MM_MALLOC_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/mma.md gcc-10.4.0/gcc/config/rs6000/mma.md
*** gcc-10.3.0/gcc/config/rs6000/mma.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/mma.md	Tue Jun 28 08:54:27 2022
***************
*** 36,42 ****
  ;; Constants for creating unspecs
  
  (define_c_enum "unspec"
!   [UNSPEC_MMA_ASSEMBLE_ACC
     UNSPEC_MMA_PMXVBF16GER2
     UNSPEC_MMA_PMXVBF16GER2NN
     UNSPEC_MMA_PMXVBF16GER2NP
--- 36,43 ----
  ;; Constants for creating unspecs
  
  (define_c_enum "unspec"
!   [UNSPEC_VSX_ASSEMBLE
!    UNSPEC_MMA_ASSEMBLE_ACC
     UNSPEC_MMA_PMXVBF16GER2
     UNSPEC_MMA_PMXVBF16GER2NN
     UNSPEC_MMA_PMXVBF16GER2NP
***************
*** 99,104 ****
--- 100,109 ----
     UNSPEC_MMA_XXMTACC
    ])
  
+ (define_c_enum "unspecv"
+   [UNSPECV_MMA_XXSETACCZ
+   ])
+ 
  ;; MMA instructions with 1 accumulator argument
  (define_int_iterator MMA_ACC		[UNSPEC_MMA_XXMFACC
  					 UNSPEC_MMA_XXMTACC])
***************
*** 325,366 ****
  })
  
  (define_insn_and_split "*movpxi"
!   [(set (match_operand:PXI 0 "nonimmediate_operand" "=d,m,d,d")
! 	(match_operand:PXI 1 "input_operand" "m,d,d,O"))]
    "TARGET_MMA
     && (gpc_reg_operand (operands[0], PXImode)
         || gpc_reg_operand (operands[1], PXImode))"
    "@
     #
     #
!    #
!    xxsetaccz %A0"
!   "&& reload_completed
!    && !(fpr_reg_operand (operands[0], PXImode) && operands[1] == const0_rtx)"
    [(const_int 0)]
  {
    rs6000_split_multireg_move (operands[0], operands[1]);
    DONE;
  }
!   [(set_attr "type" "vecload,vecstore,veclogical,mma")
!    (set_attr "length" "8,8,16,*")
!    (set_attr "max_prefixed_insns" "2,2,*,*")])
  
  (define_expand "vsx_assemble_pair"
    [(match_operand:POI 0 "vsx_register_operand")
!    (match_operand:V16QI 1 "input_operand")
!    (match_operand:V16QI 2 "input_operand")]
    "TARGET_MMA"
  {
!   rtx dst;
  
!   /* Let the compiler know the code below fully defines our output value.  */
!   emit_clobber (operands[0]);
  
!   dst = simplify_gen_subreg (V16QImode, operands[0], POImode, 0);
!   emit_move_insn (dst, operands[1]);
!   dst = simplify_gen_subreg (V16QImode, operands[0], POImode, 16);
!   emit_move_insn (dst, operands[2]);
    DONE;
  })
  
--- 330,384 ----
  })
  
  (define_insn_and_split "*movpxi"
!   [(set (match_operand:PXI 0 "nonimmediate_operand" "=d,m,d")
! 	(match_operand:PXI 1 "input_operand" "m,d,d"))]
    "TARGET_MMA
     && (gpc_reg_operand (operands[0], PXImode)
         || gpc_reg_operand (operands[1], PXImode))"
    "@
     #
     #
!    #"
!   "&& reload_completed"
    [(const_int 0)]
  {
    rs6000_split_multireg_move (operands[0], operands[1]);
    DONE;
  }
!   [(set_attr "type" "vecload,vecstore,veclogical")
!    (set_attr "length" "8,8,16")
!    (set_attr "max_prefixed_insns" "2,2,*")])
  
  (define_expand "vsx_assemble_pair"
    [(match_operand:POI 0 "vsx_register_operand")
!    (match_operand:V16QI 1 "mma_assemble_input_operand")
!    (match_operand:V16QI 2 "mma_assemble_input_operand")]
    "TARGET_MMA"
  {
!   rtx src = gen_rtx_UNSPEC (POImode,
!                             gen_rtvec (2, operands[1], operands[2]),
!                             UNSPEC_VSX_ASSEMBLE);
!   emit_move_insn (operands[0], src);
!   DONE;
! })
  
! ;; We cannot update the two output registers atomically, so mark the output
! ;; as an early clobber so we don't accidentally clobber the input operands.  */
  
! (define_insn_and_split "*vsx_assemble_pair"
!   [(set (match_operand:POI 0 "vsx_register_operand" "=&wa")
!         (unspec:POI [(match_operand:V16QI 1 "mma_assemble_input_operand" "mwa")
! 		     (match_operand:V16QI 2 "mma_assemble_input_operand" "mwa")]
!                      UNSPEC_VSX_ASSEMBLE))]
!   "TARGET_MMA"
!   "#"
!   "&& reload_completed"
!   [(const_int 0)]
! {
!   rtx src = gen_rtx_UNSPEC (POImode,
!                             gen_rtvec (2, operands[1], operands[2]),
!                             UNSPEC_VSX_ASSEMBLE);
!   rs6000_split_multireg_move (operands[0], src);
    DONE;
  })
  
***************
*** 380,387 ****
    DONE;
  })
  
  (define_insn_and_split "*mma_assemble_acc"
!   [(set (match_operand:PXI 0 "fpr_reg_operand" "=d")
  	(unspec:PXI [(match_operand:V16QI 1 "mma_assemble_input_operand" "mwa")
  		     (match_operand:V16QI 2 "mma_assemble_input_operand" "mwa")
  		     (match_operand:V16QI 3 "mma_assemble_input_operand" "mwa")
--- 398,408 ----
    DONE;
  })
  
+ ;; We cannot update the four output registers atomically, so mark the output
+ ;; as an early clobber so we don't accidentally clobber the input operands.  */
+ 
  (define_insn_and_split "*mma_assemble_acc"
!   [(set (match_operand:PXI 0 "fpr_reg_operand" "=&d")
  	(unspec:PXI [(match_operand:V16QI 1 "mma_assemble_input_operand" "mwa")
  		     (match_operand:V16QI 2 "mma_assemble_input_operand" "mwa")
  		     (match_operand:V16QI 3 "mma_assemble_input_operand" "mwa")
***************
*** 413,426 ****
    "<acc> %A0"
    [(set_attr "type" "mma")])
  
! (define_expand "mma_xxsetaccz"
!   [(set (match_operand:PXI 0 "fpr_reg_operand")
! 	(const_int 0))]
    "TARGET_MMA"
! {
!   emit_insn (gen_movpxi (operands[0], const0_rtx));
!   DONE;
! })
  
  (define_insn "mma_<vv>"
    [(set (match_operand:PXI 0 "fpr_reg_operand" "=&d")
--- 434,449 ----
    "<acc> %A0"
    [(set_attr "type" "mma")])
  
! ;; We can't have integer constants in PXImode so we wrap this in an
! ;; UNSPEC_VOLATILE.
! 
! (define_insn "mma_xxsetaccz"
!   [(set (match_operand:PXI 0 "fpr_reg_operand" "=d")
! 	(unspec_volatile:PXI [(const_int 0)]
! 			     UNSPECV_MMA_XXSETACCZ))]
    "TARGET_MMA"
!   "xxsetaccz %A0"
!   [(set_attr "type" "mma")])
  
  (define_insn "mma_<vv>"
    [(set (match_operand:PXI 0 "fpr_reg_operand" "=&d")
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/mmintrin.h gcc-10.4.0/gcc/config/rs6000/mmintrin.h
*** gcc-10.3.0/gcc/config/rs6000/mmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/mmintrin.h	Tue Jun 28 08:54:27 2022
*************** _mm_cvtsi64_si64x (__m64 __i)
*** 170,186 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_packs_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short vm1;
!   __vector signed char vresult;
  
!   vm1 = (__vector signed short) (__vector unsigned long long)
  #ifdef __LITTLE_ENDIAN__
          { __m1, __m2 };
  #else
          { __m2, __m1 };
  #endif
!   vresult = vec_packs (vm1, vm1);
!   return (__m64) ((__vector long long) vresult)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 170,186 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_packs_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short __vm1;
!   __vector signed char __vresult;
  
!   __vm1 = (__vector signed short) (__vector unsigned long long)
  #ifdef __LITTLE_ENDIAN__
          { __m1, __m2 };
  #else
          { __m2, __m1 };
  #endif
!   __vresult = vec_packs (__vm1, __vm1);
!   return (__m64) ((__vector long long) __vresult)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_packsswb (__m64 __m1, __m64 __m2)
*** 195,211 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_packs_pi32 (__m64 __m1, __m64 __m2)
  {
!   __vector signed int vm1;
!   __vector signed short vresult;
  
!   vm1 = (__vector signed int) (__vector unsigned long long)
  #ifdef __LITTLE_ENDIAN__
          { __m1, __m2 };
  #else
          { __m2, __m1 };
  #endif
!   vresult = vec_packs (vm1, vm1);
!   return (__m64) ((__vector long long) vresult)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 195,211 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_packs_pi32 (__m64 __m1, __m64 __m2)
  {
!   __vector signed int __vm1;
!   __vector signed short __vresult;
  
!   __vm1 = (__vector signed int) (__vector unsigned long long)
  #ifdef __LITTLE_ENDIAN__
          { __m1, __m2 };
  #else
          { __m2, __m1 };
  #endif
!   __vresult = vec_packs (__vm1, __vm1);
!   return (__m64) ((__vector long long) __vresult)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_packssdw (__m64 __m1, __m64 __m2)
*** 220,238 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_packs_pu16 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned char r;
!   __vector signed short vm1 = (__vector signed short) (__vector long long)
  #ifdef __LITTLE_ENDIAN__
          { __m1, __m2 };
  #else
          { __m2, __m1 };
  #endif
    const __vector signed short __zero = { 0 };
!   __vector __bool short __select = vec_cmplt (vm1, __zero);
!   r = vec_packs ((__vector unsigned short) vm1, (__vector unsigned short) vm1);
!   __vector __bool char packsel = vec_pack (__select, __select);
!   r = vec_sel (r, (const __vector unsigned char) __zero, packsel);
!   return (__m64) ((__vector long long) r)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 220,238 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_packs_pu16 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned char __r;
!   __vector signed short __vm1 = (__vector signed short) (__vector long long)
  #ifdef __LITTLE_ENDIAN__
          { __m1, __m2 };
  #else
          { __m2, __m1 };
  #endif
    const __vector signed short __zero = { 0 };
!   __vector __bool short __select = vec_cmplt (__vm1, __zero);
!   __r = vec_packs ((__vector unsigned short) __vm1, (__vector unsigned short) __vm1);
!   __vector __bool char __packsel = vec_pack (__select, __select);
!   __r = vec_sel (__r, (const __vector unsigned char) __zero, __packsel);
!   return (__m64) ((__vector long long) __r)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline __m64 __attribute__((__g
*** 248,275 ****
  _mm_unpackhi_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector unsigned char a, b, c;
  
!   a = (__vector unsigned char)vec_splats (__m1);
!   b = (__vector unsigned char)vec_splats (__m2);
!   c = vec_mergel (a, b);
!   return (__m64) ((__vector long long) c)[1];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_char[0] = m1.as_char[4];
!   res.as_char[1] = m2.as_char[4];
!   res.as_char[2] = m1.as_char[5];
!   res.as_char[3] = m2.as_char[5];
!   res.as_char[4] = m1.as_char[6];
!   res.as_char[5] = m2.as_char[6];
!   res.as_char[6] = m1.as_char[7];
!   res.as_char[7] = m2.as_char[7];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 248,275 ----
  _mm_unpackhi_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector unsigned char __a, __b, __c;
  
!   __a = (__vector unsigned char)vec_splats (__m1);
!   __b = (__vector unsigned char)vec_splats (__m2);
!   __c = vec_mergel (__a, __b);
!   return (__m64) ((__vector long long) __c)[1];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_char[0] = __mu1.as_char[4];
!   __res.as_char[1] = __mu2.as_char[4];
!   __res.as_char[2] = __mu1.as_char[5];
!   __res.as_char[3] = __mu2.as_char[5];
!   __res.as_char[4] = __mu1.as_char[6];
!   __res.as_char[5] = __mu2.as_char[6];
!   __res.as_char[6] = __mu1.as_char[7];
!   __res.as_char[7] = __mu2.as_char[7];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** _m_punpckhbw (__m64 __m1, __m64 __m2)
*** 284,300 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpackhi_pi16 (__m64 __m1, __m64 __m2)
  {
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_short[0] = m1.as_short[2];
!   res.as_short[1] = m2.as_short[2];
!   res.as_short[2] = m1.as_short[3];
!   res.as_short[3] = m2.as_short[3];
  
!   return (__m64) res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 284,300 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpackhi_pi16 (__m64 __m1, __m64 __m2)
  {
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_short[0] = __mu1.as_short[2];
!   __res.as_short[1] = __mu2.as_short[2];
!   __res.as_short[2] = __mu1.as_short[3];
!   __res.as_short[3] = __mu2.as_short[3];
  
!   return (__m64) __res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_punpckhwd (__m64 __m1, __m64 __m2)
*** 307,321 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpackhi_pi32 (__m64 __m1, __m64 __m2)
  {
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_int[0] = m1.as_int[1];
!   res.as_int[1] = m2.as_int[1];
  
!   return (__m64) res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 307,321 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpackhi_pi32 (__m64 __m1, __m64 __m2)
  {
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_int[0] = __mu1.as_int[1];
!   __res.as_int[1] = __mu2.as_int[1];
  
!   return (__m64) __res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline __m64 __attribute__((__g
*** 329,356 ****
  _mm_unpacklo_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector unsigned char a, b, c;
  
!   a = (__vector unsigned char)vec_splats (__m1);
!   b = (__vector unsigned char)vec_splats (__m2);
!   c = vec_mergel (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_char[0] = m1.as_char[0];
!   res.as_char[1] = m2.as_char[0];
!   res.as_char[2] = m1.as_char[1];
!   res.as_char[3] = m2.as_char[1];
!   res.as_char[4] = m1.as_char[2];
!   res.as_char[5] = m2.as_char[2];
!   res.as_char[6] = m1.as_char[3];
!   res.as_char[7] = m2.as_char[3];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 329,356 ----
  _mm_unpacklo_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector unsigned char __a, __b, __c;
  
!   __a = (__vector unsigned char)vec_splats (__m1);
!   __b = (__vector unsigned char)vec_splats (__m2);
!   __c = vec_mergel (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_char[0] = __mu1.as_char[0];
!   __res.as_char[1] = __mu2.as_char[0];
!   __res.as_char[2] = __mu1.as_char[1];
!   __res.as_char[3] = __mu2.as_char[1];
!   __res.as_char[4] = __mu1.as_char[2];
!   __res.as_char[5] = __mu2.as_char[2];
!   __res.as_char[6] = __mu1.as_char[3];
!   __res.as_char[7] = __mu2.as_char[3];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** _m_punpcklbw (__m64 __m1, __m64 __m2)
*** 364,380 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpacklo_pi16 (__m64 __m1, __m64 __m2)
  {
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_short[0] = m1.as_short[0];
!   res.as_short[1] = m2.as_short[0];
!   res.as_short[2] = m1.as_short[1];
!   res.as_short[3] = m2.as_short[1];
  
!   return (__m64) res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 364,380 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpacklo_pi16 (__m64 __m1, __m64 __m2)
  {
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_short[0] = __mu1.as_short[0];
!   __res.as_short[1] = __mu2.as_short[0];
!   __res.as_short[2] = __mu1.as_short[1];
!   __res.as_short[3] = __mu2.as_short[1];
  
!   return (__m64) __res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_punpcklwd (__m64 __m1, __m64 __m2)
*** 388,402 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpacklo_pi32 (__m64 __m1, __m64 __m2)
  {
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_int[0] = m1.as_int[0];
!   res.as_int[1] = m2.as_int[0];
  
!   return (__m64) res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 388,402 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_unpacklo_pi32 (__m64 __m1, __m64 __m2)
  {
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_int[0] = __mu1.as_int[0];
!   __res.as_int[1] = __mu2.as_int[0];
  
!   return (__m64) __res.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline __m64 __attribute__((__g
*** 410,437 ****
  _mm_add_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed char a, b, c;
  
!   a = (__vector signed char)vec_splats (__m1);
!   b = (__vector signed char)vec_splats (__m2);
!   c = vec_add (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_char[0] = m1.as_char[0] + m2.as_char[0];
!   res.as_char[1] = m1.as_char[1] + m2.as_char[1];
!   res.as_char[2] = m1.as_char[2] + m2.as_char[2];
!   res.as_char[3] = m1.as_char[3] + m2.as_char[3];
!   res.as_char[4] = m1.as_char[4] + m2.as_char[4];
!   res.as_char[5] = m1.as_char[5] + m2.as_char[5];
!   res.as_char[6] = m1.as_char[6] + m2.as_char[6];
!   res.as_char[7] = m1.as_char[7] + m2.as_char[7];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 410,437 ----
  _mm_add_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed char __a, __b, __c;
  
!   __a = (__vector signed char)vec_splats (__m1);
!   __b = (__vector signed char)vec_splats (__m2);
!   __c = vec_add (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_char[0] = __mu1.as_char[0] + __mu2.as_char[0];
!   __res.as_char[1] = __mu1.as_char[1] + __mu2.as_char[1];
!   __res.as_char[2] = __mu1.as_char[2] + __mu2.as_char[2];
!   __res.as_char[3] = __mu1.as_char[3] + __mu2.as_char[3];
!   __res.as_char[4] = __mu1.as_char[4] + __mu2.as_char[4];
!   __res.as_char[5] = __mu1.as_char[5] + __mu2.as_char[5];
!   __res.as_char[6] = __mu1.as_char[6] + __mu2.as_char[6];
!   __res.as_char[7] = __mu1.as_char[7] + __mu2.as_char[7];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 446,469 ****
  _mm_add_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = vec_add (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_short[0] = m1.as_short[0] + m2.as_short[0];
!   res.as_short[1] = m1.as_short[1] + m2.as_short[1];
!   res.as_short[2] = m1.as_short[2] + m2.as_short[2];
!   res.as_short[3] = m1.as_short[3] + m2.as_short[3];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 446,469 ----
  _mm_add_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = vec_add (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_short[0] = __mu1.as_short[0] + __mu2.as_short[0];
!   __res.as_short[1] = __mu1.as_short[1] + __mu2.as_short[1];
!   __res.as_short[2] = __mu1.as_short[2] + __mu2.as_short[2];
!   __res.as_short[3] = __mu1.as_short[3] + __mu2.as_short[3];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 478,499 ****
  _mm_add_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int a, b, c;
  
!   a = (__vector signed int)vec_splats (__m1);
!   b = (__vector signed int)vec_splats (__m2);
!   c = vec_add (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_int[0] = m1.as_int[0] + m2.as_int[0];
!   res.as_int[1] = m1.as_int[1] + m2.as_int[1];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 478,499 ----
  _mm_add_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int __a, __b, __c;
  
!   __a = (__vector signed int)vec_splats (__m1);
!   __b = (__vector signed int)vec_splats (__m2);
!   __c = vec_add (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_int[0] = __mu1.as_int[0] + __mu2.as_int[0];
!   __res.as_int[1] = __mu1.as_int[1] + __mu2.as_int[1];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 508,535 ****
  _mm_sub_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed char a, b, c;
  
!   a = (__vector signed char)vec_splats (__m1);
!   b = (__vector signed char)vec_splats (__m2);
!   c = vec_sub (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_char[0] = m1.as_char[0] - m2.as_char[0];
!   res.as_char[1] = m1.as_char[1] - m2.as_char[1];
!   res.as_char[2] = m1.as_char[2] - m2.as_char[2];
!   res.as_char[3] = m1.as_char[3] - m2.as_char[3];
!   res.as_char[4] = m1.as_char[4] - m2.as_char[4];
!   res.as_char[5] = m1.as_char[5] - m2.as_char[5];
!   res.as_char[6] = m1.as_char[6] - m2.as_char[6];
!   res.as_char[7] = m1.as_char[7] - m2.as_char[7];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 508,535 ----
  _mm_sub_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed char __a, __b, __c;
  
!   __a = (__vector signed char)vec_splats (__m1);
!   __b = (__vector signed char)vec_splats (__m2);
!   __c = vec_sub (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_char[0] = __mu1.as_char[0] - __mu2.as_char[0];
!   __res.as_char[1] = __mu1.as_char[1] - __mu2.as_char[1];
!   __res.as_char[2] = __mu1.as_char[2] - __mu2.as_char[2];
!   __res.as_char[3] = __mu1.as_char[3] - __mu2.as_char[3];
!   __res.as_char[4] = __mu1.as_char[4] - __mu2.as_char[4];
!   __res.as_char[5] = __mu1.as_char[5] - __mu2.as_char[5];
!   __res.as_char[6] = __mu1.as_char[6] - __mu2.as_char[6];
!   __res.as_char[7] = __mu1.as_char[7] - __mu2.as_char[7];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 544,567 ****
  _mm_sub_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = vec_sub (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_short[0] = m1.as_short[0] - m2.as_short[0];
!   res.as_short[1] = m1.as_short[1] - m2.as_short[1];
!   res.as_short[2] = m1.as_short[2] - m2.as_short[2];
!   res.as_short[3] = m1.as_short[3] - m2.as_short[3];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 544,567 ----
  _mm_sub_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = vec_sub (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_short[0] = __mu1.as_short[0] - __mu2.as_short[0];
!   __res.as_short[1] = __mu1.as_short[1] - __mu2.as_short[1];
!   __res.as_short[2] = __mu1.as_short[2] - __mu2.as_short[2];
!   __res.as_short[3] = __mu1.as_short[3] - __mu2.as_short[3];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 576,597 ****
  _mm_sub_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int a, b, c;
  
!   a = (__vector signed int)vec_splats (__m1);
!   b = (__vector signed int)vec_splats (__m2);
!   c = vec_sub (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_int[0] = m1.as_int[0] - m2.as_int[0];
!   res.as_int[1] = m1.as_int[1] - m2.as_int[1];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 576,597 ----
  _mm_sub_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int __a, __b, __c;
  
!   __a = (__vector signed int)vec_splats (__m1);
!   __b = (__vector signed int)vec_splats (__m2);
!   __c = vec_sub (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_int[0] = __mu1.as_int[0] - __mu2.as_int[0];
!   __res.as_int[1] = __mu1.as_int[1] - __mu2.as_int[1];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 729,758 ****
  _mm_cmpeq_pi8 (__m64 __m1, __m64 __m2)
  {
  #if defined(_ARCH_PWR6) && defined(__powerpc64__)
!   __m64 res;
    __asm__(
        "cmpb %0,%1,%2;\n"
!       : "=r" (res)
        : "r" (__m1),
  	"r" (__m2)
        : );
!   return (res);
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_char[0] = (m1.as_char[0] == m2.as_char[0])? -1: 0;
!   res.as_char[1] = (m1.as_char[1] == m2.as_char[1])? -1: 0;
!   res.as_char[2] = (m1.as_char[2] == m2.as_char[2])? -1: 0;
!   res.as_char[3] = (m1.as_char[3] == m2.as_char[3])? -1: 0;
!   res.as_char[4] = (m1.as_char[4] == m2.as_char[4])? -1: 0;
!   res.as_char[5] = (m1.as_char[5] == m2.as_char[5])? -1: 0;
!   res.as_char[6] = (m1.as_char[6] == m2.as_char[6])? -1: 0;
!   res.as_char[7] = (m1.as_char[7] == m2.as_char[7])? -1: 0;
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 729,758 ----
  _mm_cmpeq_pi8 (__m64 __m1, __m64 __m2)
  {
  #if defined(_ARCH_PWR6) && defined(__powerpc64__)
!   __m64 __res;
    __asm__(
        "cmpb %0,%1,%2;\n"
!       : "=r" (__res)
        : "r" (__m1),
  	"r" (__m2)
        : );
!   return (__res);
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_char[0] = (__mu1.as_char[0] == __mu2.as_char[0])? -1: 0;
!   __res.as_char[1] = (__mu1.as_char[1] == __mu2.as_char[1])? -1: 0;
!   __res.as_char[2] = (__mu1.as_char[2] == __mu2.as_char[2])? -1: 0;
!   __res.as_char[3] = (__mu1.as_char[3] == __mu2.as_char[3])? -1: 0;
!   __res.as_char[4] = (__mu1.as_char[4] == __mu2.as_char[4])? -1: 0;
!   __res.as_char[5] = (__mu1.as_char[5] == __mu2.as_char[5])? -1: 0;
!   __res.as_char[6] = (__mu1.as_char[6] == __mu2.as_char[6])? -1: 0;
!   __res.as_char[7] = (__mu1.as_char[7] == __mu2.as_char[7])? -1: 0;
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 766,793 ****
  _mm_cmpgt_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed char a, b, c;
  
!   a = (__vector signed char)vec_splats (__m1);
!   b = (__vector signed char)vec_splats (__m2);
!   c = (__vector signed char)vec_cmpgt (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_char[0] = (m1.as_char[0] > m2.as_char[0])? -1: 0;
!   res.as_char[1] = (m1.as_char[1] > m2.as_char[1])? -1: 0;
!   res.as_char[2] = (m1.as_char[2] > m2.as_char[2])? -1: 0;
!   res.as_char[3] = (m1.as_char[3] > m2.as_char[3])? -1: 0;
!   res.as_char[4] = (m1.as_char[4] > m2.as_char[4])? -1: 0;
!   res.as_char[5] = (m1.as_char[5] > m2.as_char[5])? -1: 0;
!   res.as_char[6] = (m1.as_char[6] > m2.as_char[6])? -1: 0;
!   res.as_char[7] = (m1.as_char[7] > m2.as_char[7])? -1: 0;
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 766,793 ----
  _mm_cmpgt_pi8 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed char __a, __b, __c;
  
!   __a = (__vector signed char)vec_splats (__m1);
!   __b = (__vector signed char)vec_splats (__m2);
!   __c = (__vector signed char)vec_cmpgt (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_char[0] = (__mu1.as_char[0] > __mu2.as_char[0])? -1: 0;
!   __res.as_char[1] = (__mu1.as_char[1] > __mu2.as_char[1])? -1: 0;
!   __res.as_char[2] = (__mu1.as_char[2] > __mu2.as_char[2])? -1: 0;
!   __res.as_char[3] = (__mu1.as_char[3] > __mu2.as_char[3])? -1: 0;
!   __res.as_char[4] = (__mu1.as_char[4] > __mu2.as_char[4])? -1: 0;
!   __res.as_char[5] = (__mu1.as_char[5] > __mu2.as_char[5])? -1: 0;
!   __res.as_char[6] = (__mu1.as_char[6] > __mu2.as_char[6])? -1: 0;
!   __res.as_char[7] = (__mu1.as_char[7] > __mu2.as_char[7])? -1: 0;
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 803,826 ****
  _mm_cmpeq_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = (__vector signed short)vec_cmpeq (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_short[0] = (m1.as_short[0] == m2.as_short[0])? -1: 0;
!   res.as_short[1] = (m1.as_short[1] == m2.as_short[1])? -1: 0;
!   res.as_short[2] = (m1.as_short[2] == m2.as_short[2])? -1: 0;
!   res.as_short[3] = (m1.as_short[3] == m2.as_short[3])? -1: 0;
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 803,826 ----
  _mm_cmpeq_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = (__vector signed short)vec_cmpeq (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_short[0] = (__mu1.as_short[0] == __mu2.as_short[0])? -1: 0;
!   __res.as_short[1] = (__mu1.as_short[1] == __mu2.as_short[1])? -1: 0;
!   __res.as_short[2] = (__mu1.as_short[2] == __mu2.as_short[2])? -1: 0;
!   __res.as_short[3] = (__mu1.as_short[3] == __mu2.as_short[3])? -1: 0;
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 834,857 ****
  _mm_cmpgt_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = (__vector signed short)vec_cmpgt (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_short[0] = (m1.as_short[0] > m2.as_short[0])? -1: 0;
!   res.as_short[1] = (m1.as_short[1] > m2.as_short[1])? -1: 0;
!   res.as_short[2] = (m1.as_short[2] > m2.as_short[2])? -1: 0;
!   res.as_short[3] = (m1.as_short[3] > m2.as_short[3])? -1: 0;
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 834,857 ----
  _mm_cmpgt_pi16 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR8
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = (__vector signed short)vec_cmpgt (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_short[0] = (__mu1.as_short[0] > __mu2.as_short[0])? -1: 0;
!   __res.as_short[1] = (__mu1.as_short[1] > __mu2.as_short[1])? -1: 0;
!   __res.as_short[2] = (__mu1.as_short[2] > __mu2.as_short[2])? -1: 0;
!   __res.as_short[3] = (__mu1.as_short[3] > __mu2.as_short[3])? -1: 0;
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 867,888 ****
  _mm_cmpeq_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int a, b, c;
  
!   a = (__vector signed int)vec_splats (__m1);
!   b = (__vector signed int)vec_splats (__m2);
!   c = (__vector signed int)vec_cmpeq (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_int[0] = (m1.as_int[0] == m2.as_int[0])? -1: 0;
!   res.as_int[1] = (m1.as_int[1] == m2.as_int[1])? -1: 0;
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 867,888 ----
  _mm_cmpeq_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int __a, __b, __c;
  
!   __a = (__vector signed int)vec_splats (__m1);
!   __b = (__vector signed int)vec_splats (__m2);
!   __c = (__vector signed int)vec_cmpeq (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_int[0] = (__mu1.as_int[0] == __mu2.as_int[0])? -1: 0;
!   __res.as_int[1] = (__mu1.as_int[1] == __mu2.as_int[1])? -1: 0;
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 896,917 ****
  _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int a, b, c;
  
!   a = (__vector signed int)vec_splats (__m1);
!   b = (__vector signed int)vec_splats (__m2);
!   c = (__vector signed int)vec_cmpgt (a, b);
!   return (__m64) ((__vector long long) c)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __m1;
!   m2.as_m64 = __m2;
  
!   res.as_int[0] = (m1.as_int[0] > m2.as_int[0])? -1: 0;
!   res.as_int[1] = (m1.as_int[1] > m2.as_int[1])? -1: 0;
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 896,917 ----
  _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2)
  {
  #if _ARCH_PWR9
!   __vector signed int __a, __b, __c;
  
!   __a = (__vector signed int)vec_splats (__m1);
!   __b = (__vector signed int)vec_splats (__m2);
!   __c = (__vector signed int)vec_cmpgt (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  #else
!   __m64_union __mu1, __mu2, __res;
  
!   __mu1.as_m64 = __m1;
!   __mu2.as_m64 = __m2;
  
!   __res.as_int[0] = (__mu1.as_int[0] > __mu2.as_int[0])? -1: 0;
!   __res.as_int[1] = (__mu1.as_int[1] > __mu2.as_int[1])? -1: 0;
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** _m_pcmpgtd (__m64 __m1, __m64 __m2)
*** 927,938 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pi8 (__m64 __m1, __m64 __m2)
  {
!   __vector signed char a, b, c;
  
!   a = (__vector signed char)vec_splats (__m1);
!   b = (__vector signed char)vec_splats (__m2);
!   c = vec_adds (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 927,938 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pi8 (__m64 __m1, __m64 __m2)
  {
!   __vector signed char __a, __b, __c;
  
!   __a = (__vector signed char)vec_splats (__m1);
!   __b = (__vector signed char)vec_splats (__m2);
!   __c = vec_adds (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_paddsb (__m64 __m1, __m64 __m2)
*** 945,956 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = vec_adds (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 945,956 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = vec_adds (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_paddsw (__m64 __m1, __m64 __m2)
*** 963,974 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pu8 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned char a, b, c;
  
!   a = (__vector unsigned char)vec_splats (__m1);
!   b = (__vector unsigned char)vec_splats (__m2);
!   c = vec_adds (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 963,974 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pu8 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned char __a, __b, __c;
  
!   __a = (__vector unsigned char)vec_splats (__m1);
!   __b = (__vector unsigned char)vec_splats (__m2);
!   __c = vec_adds (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_paddusb (__m64 __m1, __m64 __m2)
*** 982,993 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pu16 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned short a, b, c;
  
!   a = (__vector unsigned short)vec_splats (__m1);
!   b = (__vector unsigned short)vec_splats (__m2);
!   c = vec_adds (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 982,993 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_adds_pu16 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned short __a, __b, __c;
  
!   __a = (__vector unsigned short)vec_splats (__m1);
!   __b = (__vector unsigned short)vec_splats (__m2);
!   __c = vec_adds (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_paddusw (__m64 __m1, __m64 __m2)
*** 1001,1012 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pi8 (__m64 __m1, __m64 __m2)
  {
!   __vector signed char a, b, c;
  
!   a = (__vector signed char)vec_splats (__m1);
!   b = (__vector signed char)vec_splats (__m2);
!   c = vec_subs (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1001,1012 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pi8 (__m64 __m1, __m64 __m2)
  {
!   __vector signed char __a, __b, __c;
  
!   __a = (__vector signed char)vec_splats (__m1);
!   __b = (__vector signed char)vec_splats (__m2);
!   __c = vec_subs (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_psubsb (__m64 __m1, __m64 __m2)
*** 1020,1031 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = vec_subs (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1020,1031 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = vec_subs (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_psubsw (__m64 __m1, __m64 __m2)
*** 1039,1050 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pu8 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned char a, b, c;
  
!   a = (__vector unsigned char)vec_splats (__m1);
!   b = (__vector unsigned char)vec_splats (__m2);
!   c = vec_subs (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1039,1050 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pu8 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned char __a, __b, __c;
  
!   __a = (__vector unsigned char)vec_splats (__m1);
!   __b = (__vector unsigned char)vec_splats (__m2);
!   __c = vec_subs (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_psubusb (__m64 __m1, __m64 __m2)
*** 1058,1069 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pu16 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned short a, b, c;
  
!   a = (__vector unsigned short)vec_splats (__m1);
!   b = (__vector unsigned short)vec_splats (__m2);
!   c = vec_subs (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1058,1069 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_subs_pu16 (__m64 __m1, __m64 __m2)
  {
!   __vector unsigned short __a, __b, __c;
  
!   __a = (__vector unsigned short)vec_splats (__m1);
!   __b = (__vector unsigned short)vec_splats (__m2);
!   __c = vec_subs (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_psubusw (__m64 __m1, __m64 __m2)
*** 1078,1091 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_madd_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short a, b;
!   __vector signed int c;
!   __vector signed int zero = {0, 0, 0, 0};
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = vec_vmsumshm (a, b, zero);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1078,1091 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_madd_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short __a, __b;
!   __vector signed int __c;
!   __vector signed int __zero = {0, 0, 0, 0};
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = vec_vmsumshm (__a, __b, __zero);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pmaddwd (__m64 __m1, __m64 __m2)
*** 1098,1107 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short a, b;
!   __vector signed short c;
!   __vector signed int w0, w1;
!   __vector unsigned char xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
--- 1098,1107 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short __a, __b;
!   __vector signed short __c;
!   __vector signed int __w0, __w1;
!   __vector unsigned char __xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
*************** _mm_mulhi_pi16 (__m64 __m1, __m64 __m2)
*** 1111,1124 ****
  #endif
      };
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
  
!   w0 = vec_vmulesh (a, b);
!   w1 = vec_vmulosh (a, b);
!   c = (__vector signed short)vec_perm (w0, w1, xform1);
  
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1111,1124 ----
  #endif
      };
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
  
!   __w0 = vec_vmulesh (__a, __b);
!   __w1 = vec_vmulosh (__a, __b);
!   __c = (__vector signed short)vec_perm (__w0, __w1, __xform1);
  
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pmulhw (__m64 __m1, __m64 __m2)
*** 1132,1143 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mullo_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short a, b, c;
  
!   a = (__vector signed short)vec_splats (__m1);
!   b = (__vector signed short)vec_splats (__m2);
!   c = a * b;
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1132,1143 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mullo_pi16 (__m64 __m1, __m64 __m2)
  {
!   __vector signed short __a, __b, __c;
  
!   __a = (__vector signed short)vec_splats (__m1);
!   __b = (__vector signed short)vec_splats (__m2);
!   __c = __a * __b;
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pmullw (__m64 __m1, __m64 __m2)
*** 1150,1164 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_pi16 (__m64 __m, __m64 __count)
  {
!   __vector signed short m, r;
!   __vector unsigned short c;
  
    if (__count <= 15)
      {
!       m = (__vector signed short)vec_splats (__m);
!       c = (__vector unsigned short)vec_splats ((unsigned short)__count);
!       r = vec_sl (m, (__vector unsigned short)c);
!       return (__m64) ((__vector long long) r)[0];
      }
    else
    return (0);
--- 1150,1164 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_pi16 (__m64 __m, __m64 __count)
  {
!   __vector signed short __r;
!   __vector unsigned short __c;
  
    if (__count <= 15)
      {
!       __r = (__vector signed short)vec_splats (__m);
!       __c = (__vector unsigned short)vec_splats ((unsigned short)__count);
!       __r = vec_sl (__r, (__vector unsigned short)__c);
!       return (__m64) ((__vector long long) __r)[0];
      }
    else
    return (0);
*************** _m_psllwi (__m64 __m, int __count)
*** 1187,1199 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_pi32 (__m64 __m, __m64 __count)
  {
!   __m64_union m, res;
  
!   m.as_m64 = __m;
  
!   res.as_int[0] = m.as_int[0] << __count;
!   res.as_int[1] = m.as_int[1] << __count;
!   return (res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1187,1199 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sll_pi32 (__m64 __m, __m64 __count)
  {
!   __m64_union __res;
  
!   __res.as_m64 = __m;
  
!   __res.as_int[0] = __res.as_int[0] << __count;
!   __res.as_int[1] = __res.as_int[1] << __count;
!   return (__res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pslldi (__m64 __m, int __count)
*** 1219,1233 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_pi16 (__m64 __m, __m64 __count)
  {
!   __vector signed short m, r;
!   __vector unsigned short c;
  
    if (__count <= 15)
      {
! 	m = (__vector signed short)vec_splats (__m);
! 	c = (__vector unsigned short)vec_splats ((unsigned short)__count);
! 	r = vec_sra (m, (__vector unsigned short)c);
!         return (__m64) ((__vector long long) r)[0];
      }
    else
    return (0);
--- 1219,1233 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_pi16 (__m64 __m, __m64 __count)
  {
!   __vector signed short __r;
!   __vector unsigned short __c;
  
    if (__count <= 15)
      {
! 	__r = (__vector signed short)vec_splats (__m);
! 	__c = (__vector unsigned short)vec_splats ((unsigned short)__count);
! 	__r = vec_sra (__r, (__vector unsigned short)__c);
!         return (__m64) ((__vector long long) __r)[0];
      }
    else
    return (0);
*************** _m_psrawi (__m64 __m, int __count)
*** 1256,1268 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_pi32 (__m64 __m, __m64 __count)
  {
!   __m64_union m, res;
  
!   m.as_m64 = __m;
  
!   res.as_int[0] = m.as_int[0] >> __count;
!   res.as_int[1] = m.as_int[1] >> __count;
!   return (res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1256,1268 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sra_pi32 (__m64 __m, __m64 __count)
  {
!   __m64_union __res;
  
!   __res.as_m64 = __m;
  
!   __res.as_int[0] = __res.as_int[0] >> __count;
!   __res.as_int[1] = __res.as_int[1] >> __count;
!   return (__res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_psradi (__m64 __m, int __count)
*** 1288,1302 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_pi16 (__m64 __m, __m64 __count)
  {
!   __vector unsigned short m, r;
!   __vector unsigned short c;
  
    if (__count <= 15)
      {
! 	m = (__vector unsigned short)vec_splats (__m);
! 	c = (__vector unsigned short)vec_splats ((unsigned short)__count);
! 	r = vec_sr (m, (__vector unsigned short)c);
!         return (__m64) ((__vector long long) r)[0];
      }
    else
      return (0);
--- 1288,1302 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_pi16 (__m64 __m, __m64 __count)
  {
!   __vector unsigned short __r;
!   __vector unsigned short __c;
  
    if (__count <= 15)
      {
! 	__r = (__vector unsigned short)vec_splats (__m);
! 	__c = (__vector unsigned short)vec_splats ((unsigned short)__count);
! 	__r = vec_sr (__r, (__vector unsigned short)__c);
!         return (__m64) ((__vector long long) __r)[0];
      }
    else
      return (0);
*************** _m_psrlwi (__m64 __m, int __count)
*** 1325,1337 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_pi32 (__m64 __m, __m64 __count)
  {
!   __m64_union m, res;
  
!   m.as_m64 = __m;
  
!   res.as_int[0] = (unsigned int)m.as_int[0] >> __count;
!   res.as_int[1] = (unsigned int)m.as_int[1] >> __count;
!   return (res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1325,1337 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_srl_pi32 (__m64 __m, __m64 __count)
  {
!   __m64_union __res;
  
!   __res.as_m64 = __m;
  
!   __res.as_int[0] = (unsigned int)__res.as_int[0] >> __count;
!   __res.as_int[1] = (unsigned int)__res.as_int[1] >> __count;
!   return (__res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_psrldi (__m64 __m, int __count)
*** 1358,1381 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set_pi32 (int __i1, int __i0)
  {
!   __m64_union res;
  
!   res.as_int[0] = __i0;
!   res.as_int[1] = __i1;
!   return (res.as_m64);
  }
  
  /* Creates a vector of four 16-bit values; W0 is least significant.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set_pi16 (short __w3, short __w2, short __w1, short __w0)
  {
!   __m64_union res;
  
!   res.as_short[0] = __w0;
!   res.as_short[1] = __w1;
!   res.as_short[2] = __w2;
!   res.as_short[3] = __w3;
!   return (res.as_m64);
  }
  
  /* Creates a vector of eight 8-bit values; B0 is least significant.  */
--- 1358,1381 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set_pi32 (int __i1, int __i0)
  {
!   __m64_union __res;
  
!   __res.as_int[0] = __i0;
!   __res.as_int[1] = __i1;
!   return (__res.as_m64);
  }
  
  /* Creates a vector of four 16-bit values; W0 is least significant.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set_pi16 (short __w3, short __w2, short __w1, short __w0)
  {
!   __m64_union __res;
  
!   __res.as_short[0] = __w0;
!   __res.as_short[1] = __w1;
!   __res.as_short[2] = __w2;
!   __res.as_short[3] = __w3;
!   return (__res.as_m64);
  }
  
  /* Creates a vector of eight 8-bit values; B0 is least significant.  */
*************** extern __inline __m64 __attribute__((__g
*** 1383,1410 ****
  _mm_set_pi8 (char __b7, char __b6, char __b5, char __b4,
  	     char __b3, char __b2, char __b1, char __b0)
  {
!   __m64_union res;
  
!   res.as_char[0] = __b0;
!   res.as_char[1] = __b1;
!   res.as_char[2] = __b2;
!   res.as_char[3] = __b3;
!   res.as_char[4] = __b4;
!   res.as_char[5] = __b5;
!   res.as_char[6] = __b6;
!   res.as_char[7] = __b7;
!   return (res.as_m64);
  }
  
  /* Similar, but with the arguments in reverse order.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_setr_pi32 (int __i0, int __i1)
  {
!   __m64_union res;
  
!   res.as_int[0] = __i0;
!   res.as_int[1] = __i1;
!   return (res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1383,1410 ----
  _mm_set_pi8 (char __b7, char __b6, char __b5, char __b4,
  	     char __b3, char __b2, char __b1, char __b0)
  {
!   __m64_union __res;
  
!   __res.as_char[0] = __b0;
!   __res.as_char[1] = __b1;
!   __res.as_char[2] = __b2;
!   __res.as_char[3] = __b3;
!   __res.as_char[4] = __b4;
!   __res.as_char[5] = __b5;
!   __res.as_char[6] = __b6;
!   __res.as_char[7] = __b7;
!   return (__res.as_m64);
  }
  
  /* Similar, but with the arguments in reverse order.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_setr_pi32 (int __i0, int __i1)
  {
!   __m64_union __res;
  
!   __res.as_int[0] = __i0;
!   __res.as_int[1] = __i1;
!   return (__res.as_m64);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_setr_pi8 (char __b0, char __b1, char
*** 1424,1434 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set1_pi32 (int __i)
  {
!   __m64_union res;
  
!   res.as_int[0] = __i;
!   res.as_int[1] = __i;
!   return (res.as_m64);
  }
  
  /* Creates a vector of four 16-bit values, all elements containing W.  */
--- 1424,1434 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set1_pi32 (int __i)
  {
!   __m64_union __res;
  
!   __res.as_int[0] = __i;
!   __res.as_int[1] = __i;
!   return (__res.as_m64);
  }
  
  /* Creates a vector of four 16-bit values, all elements containing W.  */
*************** _mm_set1_pi16 (short __w)
*** 1441,1453 ****
    w = (__vector signed short)vec_splats (__w);
    return (__m64) ((__vector long long) w)[0];
  #else
!   __m64_union res;
  
!   res.as_short[0] = __w;
!   res.as_short[1] = __w;
!   res.as_short[2] = __w;
!   res.as_short[3] = __w;
!   return (res.as_m64);
  #endif
  }
  
--- 1441,1453 ----
    w = (__vector signed short)vec_splats (__w);
    return (__m64) ((__vector long long) w)[0];
  #else
!   __m64_union __res;
  
!   __res.as_short[0] = __w;
!   __res.as_short[1] = __w;
!   __res.as_short[2] = __w;
!   __res.as_short[3] = __w;
!   return (__res.as_m64);
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 1456,1477 ****
  _mm_set1_pi8 (signed char __b)
  {
  #if _ARCH_PWR8
!   __vector signed char b;
  
!   b = (__vector signed char)vec_splats (__b);
!   return (__m64) ((__vector long long) b)[0];
  #else
!   __m64_union res;
  
!   res.as_char[0] = __b;
!   res.as_char[1] = __b;
!   res.as_char[2] = __b;
!   res.as_char[3] = __b;
!   res.as_char[4] = __b;
!   res.as_char[5] = __b;
!   res.as_char[6] = __b;
!   res.as_char[7] = __b;
!   return (res.as_m64);
  #endif
  }
  #endif /* _MMINTRIN_H_INCLUDED */
--- 1456,1477 ----
  _mm_set1_pi8 (signed char __b)
  {
  #if _ARCH_PWR8
!   __vector signed char __res;
  
!   __res = (__vector signed char)vec_splats (__b);
!   return (__m64) ((__vector long long) __res)[0];
  #else
!   __m64_union __res;
  
!   __res.as_char[0] = __b;
!   __res.as_char[1] = __b;
!   __res.as_char[2] = __b;
!   __res.as_char[3] = __b;
!   __res.as_char[4] = __b;
!   __res.as_char[5] = __b;
!   __res.as_char[6] = __b;
!   __res.as_char[7] = __b;
!   return (__res.as_m64);
  #endif
  }
  #endif /* _MMINTRIN_H_INCLUDED */
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/pmmintrin.h gcc-10.4.0/gcc/config/rs6000/pmmintrin.h
*** gcc-10.3.0/gcc/config/rs6000/pmmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/pmmintrin.h	Tue Jun 28 08:54:27 2022
***************
*** 58,112 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_addsub_ps (__m128 __X, __m128 __Y)
  {
!   const __v4sf even_n0 = {-0.0, 0.0, -0.0, 0.0};
!   __v4sf even_neg_Y = vec_xor(__Y, even_n0);
!   return (__m128) vec_add (__X, even_neg_Y);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_addsub_pd (__m128d __X, __m128d __Y)
  {
!   const __v2df even_n0 = {-0.0, 0.0};
!   __v2df even_neg_Y = vec_xor(__Y, even_n0);
!   return (__m128d) vec_add (__X, even_neg_Y);
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_hadd_ps (__m128 __X, __m128 __Y)
  {
!   __vector unsigned char xform2 = {
        0x00, 0x01, 0x02, 0x03,
        0x08, 0x09, 0x0A, 0x0B,
        0x10, 0x11, 0x12, 0x13,
        0x18, 0x19, 0x1A, 0x1B
      };
!   __vector unsigned char xform1 = {
        0x04, 0x05, 0x06, 0x07,
        0x0C, 0x0D, 0x0E, 0x0F,
        0x14, 0x15, 0x16, 0x17,
        0x1C, 0x1D, 0x1E, 0x1F
      };
!   return (__m128) vec_add (vec_perm ((__v4sf) __X, (__v4sf) __Y, xform2),
! 			   vec_perm ((__v4sf) __X, (__v4sf) __Y, xform1));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_hsub_ps (__m128 __X, __m128 __Y)
  {
!   __vector unsigned char xform2 = {
        0x00, 0x01, 0x02, 0x03,
        0x08, 0x09, 0x0A, 0x0B,
        0x10, 0x11, 0x12, 0x13,
        0x18, 0x19, 0x1A, 0x1B
      };
!   __vector unsigned char xform1 = {
        0x04, 0x05, 0x06, 0x07,
        0x0C, 0x0D, 0x0E, 0x0F,
        0x14, 0x15, 0x16, 0x17,
        0x1C, 0x1D, 0x1E, 0x1F
      };
!   return (__m128) vec_sub (vec_perm ((__v4sf) __X, (__v4sf) __Y, xform2),
! 			   vec_perm ((__v4sf) __X, (__v4sf) __Y, xform1));
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 58,112 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_addsub_ps (__m128 __X, __m128 __Y)
  {
!   const __v4sf __even_n0 = {-0.0, 0.0, -0.0, 0.0};
!   __v4sf __even_neg_Y = vec_xor(__Y, __even_n0);
!   return (__m128) vec_add (__X, __even_neg_Y);
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_addsub_pd (__m128d __X, __m128d __Y)
  {
!   const __v2df __even_n0 = {-0.0, 0.0};
!   __v2df __even_neg_Y = vec_xor(__Y, __even_n0);
!   return (__m128d) vec_add (__X, __even_neg_Y);
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_hadd_ps (__m128 __X, __m128 __Y)
  {
!   __vector unsigned char __xform2 = {
        0x00, 0x01, 0x02, 0x03,
        0x08, 0x09, 0x0A, 0x0B,
        0x10, 0x11, 0x12, 0x13,
        0x18, 0x19, 0x1A, 0x1B
      };
!   __vector unsigned char __xform1 = {
        0x04, 0x05, 0x06, 0x07,
        0x0C, 0x0D, 0x0E, 0x0F,
        0x14, 0x15, 0x16, 0x17,
        0x1C, 0x1D, 0x1E, 0x1F
      };
!   return (__m128) vec_add (vec_perm ((__v4sf) __X, (__v4sf) __Y, __xform2),
! 			   vec_perm ((__v4sf) __X, (__v4sf) __Y, __xform1));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_hsub_ps (__m128 __X, __m128 __Y)
  {
!   __vector unsigned char __xform2 = {
        0x00, 0x01, 0x02, 0x03,
        0x08, 0x09, 0x0A, 0x0B,
        0x10, 0x11, 0x12, 0x13,
        0x18, 0x19, 0x1A, 0x1B
      };
!   __vector unsigned char __xform1 = {
        0x04, 0x05, 0x06, 0x07,
        0x0C, 0x0D, 0x0E, 0x0F,
        0x14, 0x15, 0x16, 0x17,
        0x1C, 0x1D, 0x1E, 0x1F
      };
!   return (__m128) vec_sub (vec_perm ((__v4sf) __X, (__v4sf) __Y, __xform2),
! 			   vec_perm ((__v4sf) __X, (__v4sf) __Y, __xform1));
  }
  
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/ppc-asm.h gcc-10.4.0/gcc/config/rs6000/ppc-asm.h
*** gcc-10.3.0/gcc/config/rs6000/ppc-asm.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/ppc-asm.h	Tue Jun 28 08:54:27 2022
*************** see the files COPYING3 and COPYING.RUNTI
*** 262,267 ****
--- 262,275 ----
  #undef toc
  
  #define FUNC_NAME(name) GLUE(__USER_LABEL_PREFIX__,name)
+ #ifdef __PCREL__
+ #define JUMP_TARGET(name) GLUE(FUNC_NAME(name),@notoc)
+ #define FUNC_START(name) \
+ 	.type FUNC_NAME(name),@function; \
+ 	.globl FUNC_NAME(name); \
+ FUNC_NAME(name): \
+ 	.localentry FUNC_NAME(name),1
+ #else
  #define JUMP_TARGET(name) FUNC_NAME(name)
  #define FUNC_START(name) \
  	.type FUNC_NAME(name),@function; \
*************** FUNC_NAME(name): \
*** 270,275 ****
--- 278,284 ----
  0:	addis 2,12,(.TOC.-0b)@ha; \
  	addi 2,2,(.TOC.-0b)@l; \
  	.localentry FUNC_NAME(name),.-FUNC_NAME(name)
+ #endif /* !__PCREL__ */
  
  #define HIDDEN_FUNC(name) \
    FUNC_START(name) \
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/predicates.md gcc-10.4.0/gcc/config/rs6000/predicates.md
*** gcc-10.3.0/gcc/config/rs6000/predicates.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/predicates.md	Tue Jun 28 08:54:27 2022
***************
*** 1129,1135 ****
    (match_test "(mode == V16QImode
  		&& (vsx_register_operand (op, mode)
  		    || (MEM_P (op)
! 			&& quad_address_p (XEXP (op, 0), mode, false))))"))
  
  ;; Return true if operand is an operator used in rotate-and-mask instructions.
  (define_predicate "rotate_mask_operator"
--- 1129,1136 ----
    (match_test "(mode == V16QImode
  		&& (vsx_register_operand (op, mode)
  		    || (MEM_P (op)
! 			&& (indexed_or_indirect_address (XEXP (op, 0), mode)
! 			    || quad_address_p (XEXP (op, 0), mode, false)))))"))
  
  ;; Return true if operand is an operator used in rotate-and-mask instructions.
  (define_predicate "rotate_mask_operator"
***************
*** 1863,1865 ****
--- 1864,1880 ----
  {
    return address_is_prefixed (XEXP (op, 0), mode, NON_PREFIXED_DEFAULT);
  })
+ 
+ ;; Return true if the operand is a valid Mach-O pic address.
+ ;;
+ (define_predicate "macho_pic_address"
+   (match_code "const,unspec")
+ {
+   if (GET_CODE (op) == CONST)
+     op = XEXP (op, 0);
+ 
+   if (GET_CODE (op) == UNSPEC && XINT (op, 1) == UNSPEC_MACHOPIC_OFFSET)
+     return CONSTANT_P (XVECEXP (op, 0, 0));
+   else
+     return false;
+ })
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/rs6000-builtin.def gcc-10.4.0/gcc/config/rs6000/rs6000-builtin.def
*** gcc-10.3.0/gcc/config/rs6000/rs6000-builtin.def	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/rs6000-builtin.def	Tue Jun 28 08:54:27 2022
***************
*** 467,472 ****
--- 467,491 ----
  		     | RS6000_BTC_SENARY),				\
  		    CODE_FOR_ ## ICODE)			/* ICODE */
  
+ #define BU_MMA_PAIR_LD(ENUM, NAME, ATTR)				\
+   RS6000_BUILTIN_M (VSX_BUILTIN_ ## ENUM,		/* ENUM */	\
+ 		    "__builtin_vsx_" NAME,		/* NAME */	\
+ 		    RS6000_BTM_MMA,			/* MASK */	\
+ 		    (RS6000_BTC_ ## ATTR		/* ATTR */	\
+ 		     | RS6000_BTC_BINARY				\
+ 		     | RS6000_BTC_GIMPLE),				\
+ 		    CODE_FOR_nothing)			/* ICODE */
+ 
+ #define BU_MMA_PAIR_ST(ENUM, NAME, ATTR)				\
+   RS6000_BUILTIN_M (VSX_BUILTIN_ ## ENUM,		/* ENUM */	\
+ 		    "__builtin_vsx_" NAME,		/* NAME */	\
+ 		    RS6000_BTM_MMA,			/* MASK */	\
+ 		    (RS6000_BTC_ ## ATTR		/* ATTR */	\
+ 		     | RS6000_BTC_TERNARY				\
+ 		     | RS6000_BTC_VOID					\
+ 		     | RS6000_BTC_GIMPLE),				\
+ 		    CODE_FOR_nothing)			/* ICODE */
+ 
  /* ISA 2.05 (power6) convenience macros. */
  /* For functions that depend on the CMPB instruction */
  #define BU_P6_2(ENUM, NAME, ATTR, ICODE)				\
*************** BU_SPECIAL_X (RS6000_BUILTIN_CFSTRING, "
*** 2771,2776 ****
--- 2790,2798 ----
  BU_P10V_VSX_1 (XVCVBF16SPN,	    "xvcvbf16spn",	MISC, vsx_xvcvbf16spn)
  BU_P10V_VSX_1 (XVCVSPBF16,	    "xvcvspbf16",	MISC, vsx_xvcvspbf16)
  
+ BU_MMA_PAIR_LD (LXVP,	    "lxvp",		MISC)
+ BU_MMA_PAIR_ST (STXVP,	    "stxvp",		PAIR)
+ 
  BU_MMA_1 (XXMFACC,	    "xxmfacc",		QUAD, mma_xxmfacc)
  BU_MMA_1 (XXMTACC,	    "xxmtacc",		QUAD, mma_xxmtacc)
  BU_MMA_1 (XXSETACCZ,	    "xxsetaccz",	MISC, mma_xxsetaccz)
*************** BU_MMA_M2 (DISASSEMBLE_ACC, "disassemble
*** 2779,2784 ****
--- 2801,2807 ----
  BU_MMA_V2 (DISASSEMBLE_PAIR,"disassemble_pair", PAIR, nothing)
  BU_COMPAT (VSX_BUILTIN_DISASSEMBLE_PAIR, "mma_disassemble_pair")
  
+ BU_MMA_V3 (BUILD_PAIR,	    "build_pair",	MISC, vsx_assemble_pair)
  BU_MMA_V3 (ASSEMBLE_PAIR,   "assemble_pair",	MISC, vsx_assemble_pair)
  BU_COMPAT (VSX_BUILTIN_ASSEMBLE_PAIR, "mma_assemble_pair")
  BU_MMA_3 (XVBF16GER2,	    "xvbf16ger2",	MISC, mma_xvbf16ger2)
*************** BU_MMA_3 (XVI8GER4SPP,	    "xvi8ger4spp"
*** 2811,2816 ****
--- 2834,2840 ----
  BU_MMA_3 (XVI16GER2PP,	    "xvi16ger2pp",      QUAD, mma_xvi16ger2pp)
  BU_MMA_3 (XVI16GER2SPP,	    "xvi16ger2spp",     QUAD, mma_xvi16ger2spp)
  
+ BU_MMA_5 (BUILD_ACC,	    "build_acc",	MISC, mma_assemble_acc)
  BU_MMA_5 (ASSEMBLE_ACC,     "assemble_acc",	MISC, mma_assemble_acc)
  BU_MMA_5 (PMXVF32GER,	    "pmxvf32ger",       MISC, mma_pmxvf32ger)
  BU_MMA_5 (PMXVF64GER,	    "pmxvf64ger",       PAIR, mma_pmxvf64ger)
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/rs6000-call.c gcc-10.4.0/gcc/config/rs6000/rs6000-call.c
*** gcc-10.3.0/gcc/config/rs6000/rs6000-call.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/rs6000-call.c	Tue Jun 28 08:54:27 2022
*************** mma_expand_builtin (tree exp, rtx target
*** 9434,9445 ****
--- 9434,9456 ----
        pat = GEN_FCN (icode) (op[0], op[1]);
        break;
      case 3:
+       /* The ASSEMBLE builtin source operands are reversed in little-endian
+ 	 mode, so reorder them.  */
+       if (fcode == VSX_BUILTIN_ASSEMBLE_PAIR_INTERNAL && !WORDS_BIG_ENDIAN)
+ 	std::swap (op[1], op[2]);
        pat = GEN_FCN (icode) (op[0], op[1], op[2]);
        break;
      case 4:
        pat = GEN_FCN (icode) (op[0], op[1], op[2], op[3]);
        break;
      case 5:
+       /* The ASSEMBLE builtin source operands are reversed in little-endian
+ 	 mode, so reorder them.  */
+       if (fcode == MMA_BUILTIN_ASSEMBLE_ACC_INTERNAL && !WORDS_BIG_ENDIAN)
+ 	{
+ 	  std::swap (op[1], op[4]);
+ 	  std::swap (op[2], op[3]);
+ 	}
        pat = GEN_FCN (icode) (op[0], op[1], op[2], op[3], op[4]);
        break;
      case 6:
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 10837,10853 ****
    gimple *new_call;
    tree new_decl;
  
!   if (rs6000_builtin_info[fncode + 1].icode == CODE_FOR_nothing)
      {
        /* This is an MMA disassemble built-in function.  */
-       gcc_assert (fncode == MMA_BUILTIN_DISASSEMBLE_ACC
- 		  || fncode == VSX_BUILTIN_DISASSEMBLE_PAIR);
- 
        push_gimplify_context (true);
        tree dst_ptr = gimple_call_arg (stmt, 0);
        tree src_ptr = gimple_call_arg (stmt, 1);
        tree src_type = TREE_TYPE (src_ptr);
!       tree src = make_ssa_name (TREE_TYPE (src_type));
        gimplify_assign (src, build_simple_mem_ref (src_ptr), &new_seq);
  
        /* If we are disassembling an accumulator/pair and our destination is
--- 10848,10862 ----
    gimple *new_call;
    tree new_decl;
  
!   if (fncode == MMA_BUILTIN_DISASSEMBLE_ACC
!       || fncode == VSX_BUILTIN_DISASSEMBLE_PAIR)
      {
        /* This is an MMA disassemble built-in function.  */
        push_gimplify_context (true);
        tree dst_ptr = gimple_call_arg (stmt, 0);
        tree src_ptr = gimple_call_arg (stmt, 1);
        tree src_type = TREE_TYPE (src_ptr);
!       tree src = create_tmp_reg_or_ssa_name (TREE_TYPE (src_type));
        gimplify_assign (src, build_simple_mem_ref (src_ptr), &new_seq);
  
        /* If we are disassembling an accumulator/pair and our destination is
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 10871,10877 ****
  	{
  	  new_decl = rs6000_builtin_decls[MMA_BUILTIN_XXMFACC_INTERNAL];
  	  new_call = gimple_build_call (new_decl, 1, src);
! 	  src = make_ssa_name (vector_quad_type_node);
  	  gimple_call_set_lhs (new_call, src);
  	  gimple_seq_add_stmt (&new_seq, new_call);
  	}
--- 10880,10886 ----
  	{
  	  new_decl = rs6000_builtin_decls[MMA_BUILTIN_XXMFACC_INTERNAL];
  	  new_call = gimple_build_call (new_decl, 1, src);
! 	  src = create_tmp_reg_or_ssa_name (vector_quad_type_node);
  	  gimple_call_set_lhs (new_call, src);
  	  gimple_seq_add_stmt (&new_seq, new_call);
  	}
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 10897,10902 ****
--- 10906,10943 ----
        gsi_replace_with_seq (gsi, new_seq, true);
        return true;
      }
+   else if (fncode == VSX_BUILTIN_LXVP)
+     {
+       push_gimplify_context (true);
+       tree offset = gimple_call_arg (stmt, 0);
+       tree ptr = gimple_call_arg (stmt, 1);
+       tree lhs = gimple_call_lhs (stmt);
+       if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
+ 	ptr = build1 (VIEW_CONVERT_EXPR,
+ 		      build_pointer_type (vector_pair_type_node), ptr);
+       tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
+ 					       TREE_TYPE (ptr), ptr, offset));
+       gimplify_assign (lhs, mem, &new_seq);
+       pop_gimplify_context (NULL);
+       gsi_replace_with_seq (gsi, new_seq, true);
+       return true;
+     }
+   else if (fncode == VSX_BUILTIN_STXVP)
+     {
+       push_gimplify_context (true);
+       tree src = gimple_call_arg (stmt, 0);
+       tree offset = gimple_call_arg (stmt, 1);
+       tree ptr = gimple_call_arg (stmt, 2);
+       if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
+ 	ptr = build1 (VIEW_CONVERT_EXPR,
+ 		      build_pointer_type (vector_pair_type_node), ptr);
+       tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
+ 					       TREE_TYPE (ptr), ptr, offset));
+       gimplify_assign (mem, src, &new_seq);
+       pop_gimplify_context (NULL);
+       gsi_replace_with_seq (gsi, new_seq, true);
+       return true;
+     }
  
    /* Convert this built-in into an internal version that uses pass-by-value
       arguments.  The internal built-in follows immediately after this one.  */
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 10909,10915 ****
      {
        /* This built-in has a pass-by-reference accumulator input, so load it
  	 into a temporary accumulator for use as a pass-by-value input.  */
!       op[0] = make_ssa_name (vector_quad_type_node);
        for (unsigned i = 1; i < nopnds; i++)
  	op[i] = gimple_call_arg (stmt, i);
        gimplify_assign (op[0], build_simple_mem_ref (acc), &new_seq);
--- 10950,10956 ----
      {
        /* This built-in has a pass-by-reference accumulator input, so load it
  	 into a temporary accumulator for use as a pass-by-value input.  */
!       op[0] = create_tmp_reg_or_ssa_name (vector_quad_type_node);
        for (unsigned i = 1; i < nopnds; i++)
  	op[i] = gimple_call_arg (stmt, i);
        gimplify_assign (op[0], build_simple_mem_ref (acc), &new_seq);
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 10956,10965 ****
        gcc_unreachable ();
      }
  
!   if (fncode == VSX_BUILTIN_ASSEMBLE_PAIR)
!     lhs = make_ssa_name (vector_pair_type_node);
    else
!     lhs = make_ssa_name (vector_quad_type_node);
    gimple_call_set_lhs (new_call, lhs);
    gimple_seq_add_stmt (&new_seq, new_call);
    gimplify_assign (build_simple_mem_ref (acc), lhs, &new_seq);
--- 10997,11006 ----
        gcc_unreachable ();
      }
  
!   if (fncode == VSX_BUILTIN_BUILD_PAIR || fncode == VSX_BUILTIN_ASSEMBLE_PAIR)
!     lhs = create_tmp_reg_or_ssa_name (vector_pair_type_node);
    else
!     lhs = create_tmp_reg_or_ssa_name (vector_quad_type_node);
    gimple_call_set_lhs (new_call, lhs);
    gimple_seq_add_stmt (&new_seq, new_call);
    gimplify_assign (build_simple_mem_ref (acc), lhs, &new_seq);
*************** rs6000_init_builtins (void)
*** 12544,12566 ****
      }
  }
  
! /* Returns the rs6000 builtin decl for CODE.  */
  
  tree
  rs6000_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
  {
-   HOST_WIDE_INT fnmask;
- 
    if (code >= RS6000_BUILTIN_COUNT)
      return error_mark_node;
  
-   fnmask = rs6000_builtin_info[code].mask;
-   if ((fnmask & rs6000_builtin_mask) != fnmask)
-     {
-       rs6000_invalid_builtin ((enum rs6000_builtins)code);
-       return error_mark_node;
-     }
- 
    return rs6000_builtin_decls[code];
  }
  
--- 12585,12601 ----
      }
  }
  
! /* Returns the rs6000 builtin decl for CODE.  Note that we don't check
!    the builtin mask here since there could be some #pragma/attribute
!    target functions and the rs6000_builtin_mask could be wrong when
!    this checking happens, though it will be updated properly later.  */
  
  tree
  rs6000_builtin_decl (unsigned code, bool initialize_p ATTRIBUTE_UNUSED)
  {
    if (code >= RS6000_BUILTIN_COUNT)
      return error_mark_node;
  
    return rs6000_builtin_decls[code];
  }
  
*************** mma_init_builtins (void)
*** 13190,13200 ****
        if (gimple_func)
  	{
  	  gcc_assert (icode == CODE_FOR_nothing);
- 	  op[nopnds++] = void_type_node;
  	  /* Some MMA built-ins that are expanded into gimple are converted
  	     into internal MMA built-ins that are expanded into rtl.
  	     The internal built-in follows immediately after this built-in.  */
! 	  icode = d[1].icode;
  	}
        else
  	{
--- 13225,13239 ----
        if (gimple_func)
  	{
  	  gcc_assert (icode == CODE_FOR_nothing);
  	  /* Some MMA built-ins that are expanded into gimple are converted
  	     into internal MMA built-ins that are expanded into rtl.
  	     The internal built-in follows immediately after this built-in.  */
! 	  if (d->code != VSX_BUILTIN_LXVP
! 	      && d->code != VSX_BUILTIN_STXVP)
! 	    {
! 	      op[nopnds++] = void_type_node;
! 	      icode = d[1].icode;
! 	    }
  	}
        else
  	{
*************** mma_init_builtins (void)
*** 13205,13222 ****
  	  gcc_assert (attr_args == insn_data[icode].n_operands - 1);
  	}
  
!       if (icode == CODE_FOR_nothing)
  	{
  	  /* This is a disassemble MMA built-in function.  */
! 	  gcc_assert (attr_args == RS6000_BTC_BINARY
! 		      && (d->code == MMA_BUILTIN_DISASSEMBLE_ACC
! 			  || d->code == VSX_BUILTIN_DISASSEMBLE_PAIR));
  	  op[nopnds++] = build_pointer_type (void_type_node);
  	  if (attr & RS6000_BTC_QUAD)
  	    op[nopnds++] = build_pointer_type (vector_quad_type_node);
  	  else
  	    op[nopnds++] = build_pointer_type (vector_pair_type_node);
  	}
        else
  	{
  	  /* This is a normal MMA built-in function.  */
--- 13244,13273 ----
  	  gcc_assert (attr_args == insn_data[icode].n_operands - 1);
  	}
  
!       if (d->code == MMA_BUILTIN_DISASSEMBLE_ACC
! 	  || d->code == VSX_BUILTIN_DISASSEMBLE_PAIR)
  	{
  	  /* This is a disassemble MMA built-in function.  */
! 	  gcc_assert (attr_args == RS6000_BTC_BINARY);
  	  op[nopnds++] = build_pointer_type (void_type_node);
  	  if (attr & RS6000_BTC_QUAD)
  	    op[nopnds++] = build_pointer_type (vector_quad_type_node);
  	  else
  	    op[nopnds++] = build_pointer_type (vector_pair_type_node);
  	}
+       else if (d->code == VSX_BUILTIN_LXVP)
+ 	{
+ 	  op[nopnds++] = vector_pair_type_node;
+ 	  op[nopnds++] = sizetype;
+ 	  op[nopnds++] = build_pointer_type (vector_pair_type_node);
+ 	}
+       else if (d->code == VSX_BUILTIN_STXVP)
+ 	{
+ 	  op[nopnds++] = void_type_node;
+ 	  op[nopnds++] = vector_pair_type_node;
+ 	  op[nopnds++] = sizetype;
+ 	  op[nopnds++] = build_pointer_type (vector_pair_type_node);
+ 	}
        else
  	{
  	  /* This is a normal MMA built-in function.  */
*************** mma_init_builtins (void)
*** 13226,13233 ****
  	      machine_mode mode = insn_data[icode].operand[j].mode;
  	      if (gimple_func && mode == PXImode)
  		op[nopnds++] = build_pointer_type (vector_quad_type_node);
! 	      else if (gimple_func && mode == POImode
! 		       && d->code == VSX_BUILTIN_ASSEMBLE_PAIR)
  		op[nopnds++] = build_pointer_type (vector_pair_type_node);
  	      else
  		/* MMA uses unsigned types.  */
--- 13277,13286 ----
  	      machine_mode mode = insn_data[icode].operand[j].mode;
  	      if (gimple_func && mode == PXImode)
  		op[nopnds++] = build_pointer_type (vector_quad_type_node);
! 	      else if (gimple_func
! 		       && mode == POImode
! 		       && (d->code == VSX_BUILTIN_BUILD_PAIR
! 			   || d->code == VSX_BUILTIN_ASSEMBLE_PAIR))
  		op[nopnds++] = build_pointer_type (vector_pair_type_node);
  	      else
  		/* MMA uses unsigned types.  */
*************** builtin_function_type (machine_mode mode
*** 13582,13587 ****
--- 13635,13650 ----
        h.uns_p[2] = 1;
        break;
  
+     case VSX_BUILTIN_LXVP:
+       h.uns_p[0] = 1;
+       h.uns_p[2] = 1;
+       break;
+ 
+     case VSX_BUILTIN_STXVP:
+       h.uns_p[1] = 1;
+       h.uns_p[3] = 1;
+       break;
+ 
      default:
        break;
      }
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/rs6000-logue.c gcc-10.4.0/gcc/config/rs6000/rs6000-logue.c
*** gcc-10.3.0/gcc/config/rs6000/rs6000-logue.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/rs6000-logue.c	Tue Jun 28 08:54:27 2022
*************** rs6000_emit_prologue (void)
*** 3254,3263 ****
  
    /* If we need to save CR, put it into r12 or r11.  Choose r12 except when
       r12 will be needed by out-of-line gpr save.  */
!   cr_save_regno = ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_ELFv2)
! 		   && !(strategy & (SAVE_INLINE_GPRS
! 				    | SAVE_NOINLINE_GPRS_SAVES_LR))
! 		   ? 11 : 12);
    if (!WORLD_SAVE_P (info)
        && info->cr_save_p
        && REGNO (frame_reg_rtx) != cr_save_regno
--- 3254,3266 ----
  
    /* If we need to save CR, put it into r12 or r11.  Choose r12 except when
       r12 will be needed by out-of-line gpr save.  */
!   if (DEFAULT_ABI == ABI_AIX
!       && !(strategy & (SAVE_INLINE_GPRS | SAVE_NOINLINE_GPRS_SAVES_LR)))
!     cr_save_regno = 11;
!   else if (DEFAULT_ABI == ABI_ELFv2)
!     cr_save_regno = 11;
!   else
!     cr_save_regno = 12;
    if (!WORLD_SAVE_P (info)
        && info->cr_save_p
        && REGNO (frame_reg_rtx) != cr_save_regno
*************** rs6000_emit_epilogue (enum epilogue_type
*** 4773,4778 ****
--- 4776,4785 ----
        else if (REGNO (frame_reg_rtx) == 12)
  	cr_save_regno = 11;
  
+       /* For ELFv2 r12 is already in use as the GEP.  */
+       if (DEFAULT_ABI == ABI_ELFv2)
+ 	cr_save_regno = 11;
+ 
        cr_save_reg = load_cr_save (cr_save_regno, frame_reg_rtx,
  				  info->cr_save_offset + frame_off,
  				  exit_func);
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/rs6000-p8swap.c gcc-10.4.0/gcc/config/rs6000/rs6000-p8swap.c
*** gcc-10.3.0/gcc/config/rs6000/rs6000-p8swap.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/rs6000-p8swap.c	Tue Jun 28 08:54:27 2022
*************** replace_swap_with_copy (swap_web_entry *
*** 1501,1506 ****
--- 1501,1522 ----
    insn->set_deleted ();
  }
  
+ /* INSN is known to contain a SUBREG, which we can normally handle,
+    but if the SUBREG itself contains a MULT then we need to leave it alone
+    to avoid turning a mult_hipart into a mult_lopart, for example.  */
+ static bool
+ has_part_mult (rtx_insn *insn)
+ {
+   rtx body = PATTERN (insn);
+   if (GET_CODE (body) != SET)
+     return false;
+   rtx src = SET_SRC (body);
+   if (GET_CODE (src) != SUBREG)
+     return false;
+   rtx inner = XEXP (src, 0);
+   return (GET_CODE (inner) == MULT);
+ }
+ 
  /* Make NEW_MEM_EXP's attributes and flags resemble those of
     ORIGINAL_MEM_EXP.  */
  static void
*************** rs6000_analyze_swaps (function *fun)
*** 2437,2442 ****
--- 2453,2461 ----
  		    insn_entry[uid].is_swappable = 0;
  		  else if (special != SH_NONE)
  		    insn_entry[uid].special_handling = special;
+ 		  else if (insn_entry[uid].contains_subreg
+ 			   && has_part_mult (insn))
+ 		    insn_entry[uid].is_swappable = 0;
  		  else if (insn_entry[uid].contains_subreg)
  		    insn_entry[uid].special_handling = SH_SUBREG;
  		}
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/rs6000.c gcc-10.4.0/gcc/config/rs6000/rs6000.c
*** gcc-10.3.0/gcc/config/rs6000/rs6000.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/rs6000.c	Tue Jun 28 08:54:27 2022
*************** rs6000_option_override_internal (bool gl
*** 3815,3820 ****
--- 3815,3829 ----
    else if (TARGET_ALTIVEC)
      rs6000_isa_flags |= (OPTION_MASK_PPC_GFXOPT & ~ignore_masks);
  
+   /* Disable VSX and Altivec silently if the user switched cpus to power7 in a
+      target attribute or pragma which automatically enables both options,
+      unless the altivec ABI was set.  This is set by default for 64-bit, but
+      not for 32-bit.  Don't move this before the above code using ignore_masks,
+      since it can reset the cleared VSX/ALTIVEC flag again.  */
+   if (main_target_opt && !main_target_opt->x_rs6000_altivec_abi)
+     rs6000_isa_flags &= ~((OPTION_MASK_VSX | OPTION_MASK_ALTIVEC)
+ 			  & ~rs6000_isa_flags_explicit);
+ 
    if (TARGET_CRYPTO && !TARGET_ALTIVEC)
      {
        if (rs6000_isa_flags_explicit & OPTION_MASK_CRYPTO)
*************** rs6000_option_override_internal (bool gl
*** 4032,4044 ****
      }
    else if (rs6000_long_double_type_size == 128)
      rs6000_long_double_type_size = FLOAT_PRECISION_TFmode;
-   else if (global_options_set.x_rs6000_ieeequad)
-     {
-       if (global_options.x_rs6000_ieeequad)
- 	error ("%qs requires %qs", "-mabi=ieeelongdouble", "-mlong-double-128");
-       else
- 	error ("%qs requires %qs", "-mabi=ibmlongdouble", "-mlong-double-128");
-     }
  
    /* Set -mabi=ieeelongdouble on some old targets.  In the future, power server
       systems will also set long double to be IEEE 128-bit.  AIX and Darwin
--- 4041,4046 ----
*************** rs6000_option_override_internal (bool gl
*** 4048,4060 ****
    if (!global_options_set.x_rs6000_ieeequad)
      rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
  
!   else
      {
        if (global_options.x_rs6000_ieeequad
  	  && (!TARGET_POPCNTD || !TARGET_VSX))
  	error ("%qs requires full ISA 2.06 support", "-mabi=ieeelongdouble");
  
!       if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT && TARGET_LONG_DOUBLE_128)
  	{
  	  static bool warned_change_long_double;
  	  if (!warned_change_long_double)
--- 4050,4062 ----
    if (!global_options_set.x_rs6000_ieeequad)
      rs6000_ieeequad = TARGET_IEEEQUAD_DEFAULT;
  
!   else if (TARGET_LONG_DOUBLE_128)
      {
        if (global_options.x_rs6000_ieeequad
  	  && (!TARGET_POPCNTD || !TARGET_VSX))
  	error ("%qs requires full ISA 2.06 support", "-mabi=ieeelongdouble");
  
!       if (rs6000_ieeequad != TARGET_IEEEQUAD_DEFAULT)
  	{
  	  static bool warned_change_long_double;
  	  if (!warned_change_long_double)
*************** rs6000_option_override_internal (bool gl
*** 4209,4226 ****
  	}
      }
  
-   /* Disable VSX and Altivec silently if the user switched cpus to power7 in a
-      target attribute or pragma which automatically enables both options,
-      unless the altivec ABI was set.  This is set by default for 64-bit, but
-      not for 32-bit.  */
-   if (main_target_opt != NULL && !main_target_opt->x_rs6000_altivec_abi)
-     {
-       TARGET_FLOAT128_TYPE = 0;
-       rs6000_isa_flags &= ~((OPTION_MASK_VSX | OPTION_MASK_ALTIVEC
- 			     | OPTION_MASK_FLOAT128_KEYWORD)
- 			    & ~rs6000_isa_flags_explicit);
-     }
- 
    /* Enable Altivec ABI for AIX -maltivec.  */
    if (TARGET_XCOFF && (TARGET_ALTIVEC || TARGET_VSX))
      {
--- 4211,4216 ----
*************** rs6000_option_override_internal (bool gl
*** 4311,4316 ****
--- 4301,4316 ----
        rs6000_isa_flags &= ~OPTION_MASK_MMA;
      }
  
+   /* MMA requires SIMD support as ISA 3.1 claims and our implementation
+      such as "*movoo" uses vector pair access which use VSX registers.
+      So make MMA require VSX support here.  */
+   if (TARGET_MMA && !TARGET_VSX)
+     {
+       if ((rs6000_isa_flags_explicit & OPTION_MASK_MMA) != 0)
+ 	error ("%qs requires %qs", "-mmma", "-mvsx");
+       rs6000_isa_flags &= ~OPTION_MASK_MMA;
+     }
+ 
    if (TARGET_DEBUG_REG || TARGET_DEBUG_TARGET)
      rs6000_print_isa_options (stderr, 0, "after subtarget", rs6000_isa_flags);
  
*************** const char *rs6000_machine;
*** 5547,5556 ****
  const char *
  rs6000_machine_from_flags (void)
  {
    HOST_WIDE_INT flags = rs6000_isa_flags;
  
    /* Disable the flags that should never influence the .machine selection.  */
!   flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT);
  
    if ((flags & (ISA_3_1_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) != 0)
      return "power10";
--- 5547,5619 ----
  const char *
  rs6000_machine_from_flags (void)
  {
+   /* e300 and e500 */
+   if (rs6000_cpu == PROCESSOR_PPCE300C2 || rs6000_cpu == PROCESSOR_PPCE300C3)
+     return "e300";
+   if (rs6000_cpu == PROCESSOR_PPC8540 || rs6000_cpu == PROCESSOR_PPC8548)
+     return "e500";
+   if (rs6000_cpu == PROCESSOR_PPCE500MC)
+     return "e500mc";
+   if (rs6000_cpu == PROCESSOR_PPCE500MC64)
+     return "e500mc64";
+   if (rs6000_cpu == PROCESSOR_PPCE5500)
+     return "e5500";
+   if (rs6000_cpu == PROCESSOR_PPCE6500)
+     return "e6500";
+ 
+   /* 400 series */
+   if (rs6000_cpu == PROCESSOR_PPC403)
+     return "\"403\"";
+   if (rs6000_cpu == PROCESSOR_PPC405)
+     return "\"405\"";
+   if (rs6000_cpu == PROCESSOR_PPC440)
+     return "\"440\"";
+   if (rs6000_cpu == PROCESSOR_PPC476)
+     return "\"476\"";
+ 
+   /* A2 */
+   if (rs6000_cpu == PROCESSOR_PPCA2)
+     return "a2";
+ 
+   /* Cell BE */
+   if (rs6000_cpu == PROCESSOR_CELL)
+     return "cell";
+ 
+   /* Titan */
+   if (rs6000_cpu == PROCESSOR_TITAN)
+     return "titan";
+ 
+   /* 500 series and 800 series */
+   if (rs6000_cpu == PROCESSOR_MPCCORE)
+     return "\"821\"";
+ 
+ #if 0
+   /* This (and ppc64 below) are disabled here (for now at least) because
+      PROCESSOR_POWERPC, PROCESSOR_POWERPC64, and PROCESSOR_COMMON
+      are #define'd as some of these.  Untangling that is a job for later.  */
+ 
+   /* 600 series and 700 series, "classic" */
+   if (rs6000_cpu == PROCESSOR_PPC601 || rs6000_cpu == PROCESSOR_PPC603
+       || rs6000_cpu == PROCESSOR_PPC604 || rs6000_cpu == PROCESSOR_PPC604e
+       || rs6000_cpu == PROCESSOR_PPC750)
+     return "ppc";
+ #endif
+ 
+   /* Classic with AltiVec, "G4" */
+   if (rs6000_cpu == PROCESSOR_PPC7400 || rs6000_cpu == PROCESSOR_PPC7450)
+     return "\"7450\"";
+ 
+ #if 0
+   /* The older 64-bit CPUs */
+   if (rs6000_cpu == PROCESSOR_PPC620 || rs6000_cpu == PROCESSOR_PPC630
+       || rs6000_cpu == PROCESSOR_RS64A)
+     return "ppc64";
+ #endif
+ 
    HOST_WIDE_INT flags = rs6000_isa_flags;
  
    /* Disable the flags that should never influence the .machine selection.  */
!   flags &= ~(OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT | OPTION_MASK_ISEL);
  
    if ((flags & (ISA_3_1_MASKS_SERVER & ~ISA_3_0_MASKS_SERVER)) != 0)
      return "power10";
*************** vspltis_constant (rtx op, unsigned step,
*** 5911,5917 ****
  
    /* Also check if are loading up the most significant bit which can be done by
       loading up -1 and shifting the value left by -1.  */
!   else if (EASY_VECTOR_MSB (splat_val, inner))
      ;
  
    else
--- 5974,5980 ----
  
    /* Also check if are loading up the most significant bit which can be done by
       loading up -1 and shifting the value left by -1.  */
!   else if (EASY_VECTOR_MSB (splat_val, inner) && step == 1 && copies == 1)
      ;
  
    else
*************** vspltis_shifted (rtx op)
*** 5960,5967 ****
      return false;
  
    /* We need to create pseudo registers to do the shift, so don't recognize
!      shift vector constants after reload.  */
!   if (!can_create_pseudo_p ())
      return false;
  
    nunits = GET_MODE_NUNITS (mode);
--- 6023,6033 ----
      return false;
  
    /* We need to create pseudo registers to do the shift, so don't recognize
!      shift vector constants after reload.  Don't match it even before RA
!      after split1 is done, because there won't be further splitting pass
!      before RA to do the splitting.  */
!   if (!can_create_pseudo_p ()
!       || (cfun->curr_properties & PROP_rtl_split_insns))
      return false;
  
    nunits = GET_MODE_NUNITS (mode);
*************** darwin_rs6000_legitimate_lo_sum_const_p
*** 7551,7558 ****
    if (GET_CODE (x) == CONST)
      x = XEXP (x, 0);
  
    if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_MACHOPIC_OFFSET)
!     x =  XVECEXP (x, 0, 0);
  
    rtx sym = NULL_RTX;
    unsigned HOST_WIDE_INT offset = 0;
--- 7617,7630 ----
    if (GET_CODE (x) == CONST)
      x = XEXP (x, 0);
  
+   /* If we are building PIC code, then any symbol must be wrapped in an
+      UNSPEC_MACHOPIC_OFFSET so that it will get the picbase subtracted.  */
+   bool machopic_offs_p = false;
    if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_MACHOPIC_OFFSET)
!     {
!       x =  XVECEXP (x, 0, 0);
!       machopic_offs_p = true;
!     }
  
    rtx sym = NULL_RTX;
    unsigned HOST_WIDE_INT offset = 0;
*************** darwin_rs6000_legitimate_lo_sum_const_p
*** 7583,7588 ****
--- 7655,7663 ----
    if (sym)
      {
        tree decl = SYMBOL_REF_DECL (sym);
+       /* As noted above, PIC code cannot use a bare SYMBOL_REF.  */
+       if (TARGET_MACHO && flag_pic && !machopic_offs_p)
+ 	return false;
  #if TARGET_MACHO
        if (MACHO_SYMBOL_INDIRECTION_P (sym))
        /* The decl in an indirection symbol is the original one, which might
*************** legitimate_lo_sum_address_p (machine_mod
*** 8170,8176 ****
      return false;
    x = XEXP (x, 1);
  
!   if (TARGET_ELF || TARGET_MACHO)
      {
        bool large_toc_ok;
  
--- 8245,8251 ----
      return false;
    x = XEXP (x, 1);
  
!   if (TARGET_ELF)
      {
        bool large_toc_ok;
  
*************** legitimate_lo_sum_address_p (machine_mod
*** 8196,8202 ****
--- 8271,8302 ----
  
        return CONSTANT_P (x) || large_toc_ok;
      }
+   else if (TARGET_MACHO)
+     {
+       if (GET_MODE_NUNITS (mode) != 1)
+ 	return false;
+       if (GET_MODE_SIZE (mode) > UNITS_PER_WORD
+ 	  && !(/* see above  */
+ 	       TARGET_HARD_FLOAT && (mode == DFmode || mode == DDmode)))
+ 	return false;
+ #if TARGET_MACHO
+       if (MACHO_DYNAMIC_NO_PIC_P || !flag_pic)
+ 	return CONSTANT_P (x);
+ #endif
+       /* Macho-O PIC code from here.  */
+       if (GET_CODE (x) == CONST)
+ 	x = XEXP (x, 0);
  
+       /* SYMBOL_REFs need to be wrapped in an UNSPEC_MACHOPIC_OFFSET.  */
+       if (SYMBOL_REF_P (x))
+ 	return false;
+ 
+       /* So this is OK if the wrapped object is const.  */
+       if (GET_CODE (x) == UNSPEC
+ 	  && XINT (x, 1) == UNSPEC_MACHOPIC_OFFSET)
+ 	return CONSTANT_P (XVECEXP (x, 0, 0));
+       return CONSTANT_P (x);
+     }
    return false;
  }
  
*************** rs6000_legitimize_address (rtx x, rtx ol
*** 8250,8256 ****
        else
  	return force_reg (Pmode, x);
      }
!   if (SYMBOL_REF_P (x))
      {
        enum tls_model model = SYMBOL_REF_TLS_MODEL (x);
        if (model != 0)
--- 8350,8356 ----
        else
  	return force_reg (Pmode, x);
      }
!   if (SYMBOL_REF_P (x) && !TARGET_MACHO)
      {
        enum tls_model model = SYMBOL_REF_TLS_MODEL (x);
        if (model != 0)
*************** rs6000_legitimate_address_p (machine_mod
*** 8926,8940 ****
    bool reg_offset_p = reg_offset_addressing_ok_p (mode);
    bool quad_offset_p = mode_supports_dq_form (mode);
  
!   /* If this is an unaligned stvx/ldvx type address, discard the outer AND.  */
    if (VECTOR_MEM_ALTIVEC_OR_VSX_P (mode)
        && GET_CODE (x) == AND
        && CONST_INT_P (XEXP (x, 1))
        && INTVAL (XEXP (x, 1)) == -16)
!     x = XEXP (x, 0);
  
-   if (TARGET_ELF && RS6000_SYMBOL_REF_TLS_P (x))
-     return 0;
    if (legitimate_indirect_address_p (x, reg_ok_strict))
      return 1;
    if (TARGET_UPDATE
--- 9026,9046 ----
    bool reg_offset_p = reg_offset_addressing_ok_p (mode);
    bool quad_offset_p = mode_supports_dq_form (mode);
  
!   if (TARGET_ELF && RS6000_SYMBOL_REF_TLS_P (x))
!     return 0;
! 
!   /* Handle unaligned altivec lvx/stvx type addresses.  */
    if (VECTOR_MEM_ALTIVEC_OR_VSX_P (mode)
        && GET_CODE (x) == AND
        && CONST_INT_P (XEXP (x, 1))
        && INTVAL (XEXP (x, 1)) == -16)
!     {
!       x = XEXP (x, 0);
!       return (legitimate_indirect_address_p (x, reg_ok_strict)
! 	      || legitimate_indexed_address_p (x, reg_ok_strict)
! 	      || virtual_stack_registers_memory_p (x));
!     }
  
    if (legitimate_indirect_address_p (x, reg_ok_strict))
      return 1;
    if (TARGET_UPDATE
*************** init_float128_ibm (machine_mode mode)
*** 10178,10183 ****
--- 10284,10295 ----
        set_conv_libfunc (trunc_optab, DDmode, mode, "__dpd_trunctfdd");
        set_conv_libfunc (sext_optab, TDmode, mode, "__dpd_extendtftd");
  
+       set_conv_libfunc (sfix_optab, DImode, mode, "__fixtfdi");
+       set_conv_libfunc (ufix_optab, DImode, mode, "__fixunstfdi");
+ 
+       set_conv_libfunc (sfloat_optab, mode, DImode, "__floatditf");
+       set_conv_libfunc (ufloat_optab, mode, DImode, "__floatunditf");
+ 
        if (TARGET_POWERPC64)
  	{
  	  set_conv_libfunc (sfix_optab, TImode, mode, "__fixtfti");
*************** rs6000_split_multireg_move (rtx dst, rtx
*** 16018,16037 ****
  
        if (GET_CODE (src) == UNSPEC)
  	{
! 	  gcc_assert (REG_P (dst)
! 		      && FP_REGNO_P (REGNO (dst))
! 		      && XINT (src, 1) == UNSPEC_MMA_ASSEMBLE_ACC);
  
  	  reg_mode = GET_MODE (XVECEXP (src, 0, 0));
! 	  for (int i = 0; i < XVECLEN (src, 0); i++)
  	    {
! 	      rtx dst_i = gen_rtx_REG (reg_mode, reg + i);
  	      emit_insn (gen_rtx_SET (dst_i, XVECEXP (src, 0, i)));
  	    }
  
  	  /* We are writing an accumulator register, so we have to
  	     prime it after we've written it.  */
! 	  emit_insn (gen_mma_xxmtacc (dst, dst));
  
  	  return;
  	}
--- 16130,16157 ----
  
        if (GET_CODE (src) == UNSPEC)
  	{
! 	  gcc_assert (XINT (src, 1) == UNSPEC_VSX_ASSEMBLE
! 		      || XINT (src, 1) == UNSPEC_MMA_ASSEMBLE_ACC);
!           gcc_assert (REG_P (dst));
!           if (GET_MODE (src) == PXImode)
!             gcc_assert (FP_REGNO_P (REGNO (dst)));
!           if (GET_MODE (src) == POImode)
!             gcc_assert (VSX_REGNO_P (REGNO (dst)));
  
  	  reg_mode = GET_MODE (XVECEXP (src, 0, 0));
! 	  int nvecs = XVECLEN (src, 0);
! 	  for (int i = 0; i < nvecs; i++)
  	    {
! 	      int index = WORDS_BIG_ENDIAN ? i : nvecs - 1 - i;
! 	      rtx dst_i = gen_rtx_REG (reg_mode, reg + index);
  	      emit_insn (gen_rtx_SET (dst_i, XVECEXP (src, 0, i)));
  	    }
  
  	  /* We are writing an accumulator register, so we have to
  	     prime it after we've written it.  */
! 	  if (TARGET_MMA
! 	      && GET_MODE (dst) == PXImode && FP_REGNO_P (REGNO (dst)))
! 	    emit_insn (gen_mma_xxmtacc (dst, dst));
  
  	  return;
  	}
*************** rs6000_rtx_costs (rtx x, machine_mode mo
*** 21351,21356 ****
--- 21471,21484 ----
  	}
        break;
  
+     case UNSPEC_VOLATILE:
+       if (XINT (x, 1) == UNSPECV_MMA_XXSETACCZ)
+         {
+           *total = 0;
+           return true;
+         }
+       break;
+ 
      default:
        break;
      }
*************** rs6000_can_inline_p (tree caller, tree c
*** 24427,24432 ****
--- 24555,24564 ----
        else
  	caller_isa = rs6000_isa_flags;
  
+       /* Ignore the -mpower8-fusion option for inlining purposes.  */
+       callee_isa &= ~OPTION_MASK_P8_FUSION;
+       explicit_isa &= ~OPTION_MASK_P8_FUSION;
+ 
        /* The callee's options must be a subset of the caller's options, i.e.
  	 a vsx function may inline an altivec function, but a no-vsx function
  	 must not inline a vsx function.  However, for those options that the
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/rs6000.md gcc-10.4.0/gcc/config/rs6000/rs6000.md
*** gcc-10.3.0/gcc/config/rs6000/rs6000.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/rs6000.md	Tue Jun 28 08:54:27 2022
***************
*** 4806,4811 ****
--- 4806,4847 ----
    [(set_attr "type" "fp")
     (set_attr "isa" "*,<Fisa>")])
  
+ (define_expand "fmod<mode>3"
+   [(use (match_operand:SFDF 0 "gpc_reg_operand"))
+ 	(use (match_operand:SFDF 1 "gpc_reg_operand"))
+ 	(use (match_operand:SFDF 2 "gpc_reg_operand"))]
+   "TARGET_HARD_FLOAT
+    && TARGET_FPRND
+    && flag_unsafe_math_optimizations"
+ {
+   rtx div = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_div<mode>3 (div, operands[1], operands[2]));
+ 
+   rtx friz = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_btrunc<mode>2 (friz, div));
+ 
+   emit_insn (gen_nfms<mode>4 (operands[0], operands[2], friz, operands[1]));
+   DONE;
+  })
+ 
+ (define_expand "remainder<mode>3"
+   [(use (match_operand:SFDF 0 "gpc_reg_operand"))
+ 	(use (match_operand:SFDF 1 "gpc_reg_operand"))
+ 	(use (match_operand:SFDF 2 "gpc_reg_operand"))]
+   "TARGET_HARD_FLOAT
+    && TARGET_FPRND
+    && flag_unsafe_math_optimizations"
+ {
+   rtx div = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_div<mode>3 (div, operands[1], operands[2]));
+ 
+   rtx frin = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_round<mode>2 (frin, div));
+ 
+   emit_insn (gen_nfms<mode>4 (operands[0], operands[2], frin, operands[1]));
+   DONE;
+  })
+ 
  (define_insn "*rsqrt<mode>2"
    [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
  	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")]
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/tmmintrin.h gcc-10.4.0/gcc/config/rs6000/tmmintrin.h
*** gcc-10.3.0/gcc/config/rs6000/tmmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/tmmintrin.h	Tue Jun 28 08:54:27 2022
*************** _mm_alignr_epi8 (__m128i __A, __m128i __
*** 112,119 ****
      {
        if (__count >= 32)
  	{
! 	  const __v16qu zero = { 0 };
! 	  return (__m128i) zero;
  	}
        else
  	{
--- 112,119 ----
      {
        if (__count >= 32)
  	{
! 	  const __v16qu __zero = { 0 };
! 	  return (__m128i) __zero;
  	}
        else
  	{
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/vector.md gcc-10.4.0/gcc/config/rs6000/vector.md
*** gcc-10.3.0/gcc/config/rs6000/vector.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/vector.md	Tue Jun 28 08:54:27 2022
***************
*** 1394,1400 ****
   [(set (match_operand:VEC_N 0 "nonimmediate_operand")
         (match_operand:VEC_N 1 "any_operand"))]
   "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_ALLOW_MOVMISALIGN"
!  "")
  
  ;; Vector shift right in bits. Currently supported ony for shift
  ;; amounts that can be expressed as byte shifts (divisible by 8).
--- 1394,1403 ----
   [(set (match_operand:VEC_N 0 "nonimmediate_operand")
         (match_operand:VEC_N 1 "any_operand"))]
   "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_ALLOW_MOVMISALIGN"
! {
!   rs6000_emit_move (operands[0], operands[1], <MODE>mode);
!   DONE;
! })
  
  ;; Vector shift right in bits. Currently supported ony for shift
  ;; amounts that can be expressed as byte shifts (divisible by 8).
diff -Nrcpad gcc-10.3.0/gcc/config/rs6000/xmmintrin.h gcc-10.4.0/gcc/config/rs6000/xmmintrin.h
*** gcc-10.3.0/gcc/config/rs6000/xmmintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/rs6000/xmmintrin.h	Tue Jun 28 08:54:27 2022
*************** extern __inline __m128 __attribute__((__
*** 127,140 ****
  _mm_loadr_ps (float const *__P)
  {
    __v4sf   __tmp;
!   __m128 result;
!   static const __vector unsigned char permute_vector =
      { 0x1C, 0x1D, 0x1E, 0x1F, 0x18, 0x19, 0x1A, 0x1B, 0x14, 0x15, 0x16,
  	0x17, 0x10, 0x11, 0x12, 0x13 };
  
    __tmp = vec_ld (0, (__v4sf *) __P);
!   result = (__m128) vec_perm (__tmp, __tmp, permute_vector);
!   return result;
  }
  
  /* Create a vector with all four elements equal to F.  */
--- 127,140 ----
  _mm_loadr_ps (float const *__P)
  {
    __v4sf   __tmp;
!   __m128 __result;
!   static const __vector unsigned char __permute_vector =
      { 0x1C, 0x1D, 0x1E, 0x1F, 0x18, 0x19, 0x1A, 0x1B, 0x14, 0x15, 0x16,
  	0x17, 0x10, 0x11, 0x12, 0x13 };
  
    __tmp = vec_ld (0, (__v4sf *) __P);
!   __result = (__m128) vec_perm (__tmp, __tmp, __permute_vector);
!   return __result;
  }
  
  /* Create a vector with all four elements equal to F.  */
*************** extern __inline void __attribute__((__gn
*** 184,194 ****
  _mm_storer_ps (float *__P, __m128 __A)
  {
    __v4sf   __tmp;
!   static const __vector unsigned char permute_vector =
      { 0x1C, 0x1D, 0x1E, 0x1F, 0x18, 0x19, 0x1A, 0x1B, 0x14, 0x15, 0x16,
  	0x17, 0x10, 0x11, 0x12, 0x13 };
  
!   __tmp = (__m128) vec_perm (__A, __A, permute_vector);
  
    _mm_store_ps (__P, __tmp);
  }
--- 184,194 ----
  _mm_storer_ps (float *__P, __m128 __A)
  {
    __v4sf   __tmp;
!   static const __vector unsigned char __permute_vector =
      { 0x1C, 0x1D, 0x1E, 0x1F, 0x18, 0x19, 0x1A, 0x1B, 0x14, 0x15, 0x16,
  	0x17, 0x10, 0x11, 0x12, 0x13 };
  
!   __tmp = (__m128) vec_perm (__A, __A, __permute_vector);
  
    _mm_store_ps (__P, __tmp);
  }
*************** _mm_set_ss (float __F)
*** 218,226 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_move_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
  
!   return (vec_sel ((__v4sf)__A, (__v4sf)__B, mask));
  }
  
  /* Create a vector with element 0 as *P and the rest zero.  */
--- 218,226 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_move_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
  
!   return (vec_sel ((__v4sf)__A, (__v4sf)__B, __mask));
  }
  
  /* Create a vector with element 0 as *P and the rest zero.  */
*************** extern __inline __m128 __attribute__((__
*** 245,262 ****
  _mm_add_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 a, b, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   a = vec_splat (__A, 0);
!   b = vec_splat (__B, 0);
!   c = a + b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  #else
    __A[0] = __A[0] + __B[0];
    return (__A);
--- 245,262 ----
  _mm_add_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 __a, __b, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   __a = vec_splat (__A, 0);
!   __b = vec_splat (__B, 0);
!   __c = __a + __b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  #else
    __A[0] = __A[0] + __B[0];
    return (__A);
*************** extern __inline __m128 __attribute__((__
*** 267,284 ****
  _mm_sub_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 a, b, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   a = vec_splat (__A, 0);
!   b = vec_splat (__B, 0);
!   c = a - b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  #else
    __A[0] = __A[0] - __B[0];
    return (__A);
--- 267,284 ----
  _mm_sub_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 __a, __b, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   __a = vec_splat (__A, 0);
!   __b = vec_splat (__B, 0);
!   __c = __a - __b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  #else
    __A[0] = __A[0] - __B[0];
    return (__A);
*************** extern __inline __m128 __attribute__((__
*** 289,306 ****
  _mm_mul_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 a, b, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   a = vec_splat (__A, 0);
!   b = vec_splat (__B, 0);
!   c = a * b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  #else
    __A[0] = __A[0] * __B[0];
    return (__A);
--- 289,306 ----
  _mm_mul_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 __a, __b, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   __a = vec_splat (__A, 0);
!   __b = vec_splat (__B, 0);
!   __c = __a * __b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  #else
    __A[0] = __A[0] * __B[0];
    return (__A);
*************** extern __inline __m128 __attribute__((__
*** 311,328 ****
  _mm_div_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 a, b, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   a = vec_splat (__A, 0);
!   b = vec_splat (__B, 0);
!   c = a / b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  #else
    __A[0] = __A[0] / __B[0];
    return (__A);
--- 311,328 ----
  _mm_div_ss (__m128 __A, __m128 __B)
  {
  #ifdef _ARCH_PWR7
!   __m128 __a, __b, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
       results. So to insure we don't generate spurious exceptions
       (from the upper double values) we splat the lower double
       before we to the operation.  */
!   __a = vec_splat (__A, 0);
!   __b = vec_splat (__B, 0);
!   __c = __a / __b;
    /* Then we merge the lower float result with the original upper
       float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  #else
    __A[0] = __A[0] / __B[0];
    return (__A);
*************** _mm_div_ss (__m128 __A, __m128 __B)
*** 332,348 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sqrt_ss (__m128 __A)
  {
!   __m128 a, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper double values) we splat the lower double
     * before we to the operation. */
!   a = vec_splat (__A, 0);
!   c = vec_sqrt (a);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  }
  
  /* Perform the respective operation on the four SPFP values in A and B.  */
--- 332,348 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sqrt_ss (__m128 __A)
  {
!   __m128 __a, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper double values) we splat the lower double
     * before we to the operation. */
!   __a = vec_splat (__A, 0);
!   __c = vec_sqrt (__a);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  }
  
  /* Perform the respective operation on the four SPFP values in A and B.  */
*************** _mm_rsqrt_ps (__m128 __A)
*** 391,471 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_rcp_ss (__m128 __A)
  {
!   __m128 a, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper double values) we splat the lower double
     * before we to the operation. */
!   a = vec_splat (__A, 0);
!   c = _mm_rcp_ps (a);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_rsqrt_ss (__m128 __A)
  {
!   __m128 a, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper double values) we splat the lower double
     * before we to the operation. */
!   a = vec_splat (__A, 0);
!   c = vec_rsqrte (a);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel (__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_min_ss (__m128 __A, __m128 __B)
  {
!   __v4sf a, b, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower float)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper float values) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf)__A, 0);
!   b = vec_splat ((__v4sf)__B, 0);
!   c = vec_min (a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_max_ss (__m128 __A, __m128 __B)
  {
!   __v4sf a, b, c;
!   static const __vector unsigned int mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower float)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper float values) we splat the lower float
     * before we to the operation. */
!   a = vec_splat (__A, 0);
!   b = vec_splat (__B, 0);
!   c = vec_max (a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_min_ps (__m128 __A, __m128 __B)
  {
!   __vector __bool int m = vec_cmpgt ((__v4sf) __B, (__v4sf) __A);
!   return vec_sel (__B, __A, m);
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_max_ps (__m128 __A, __m128 __B)
  {
!   __vector __bool int m = vec_cmpgt ((__v4sf) __A, (__v4sf) __B);
!   return vec_sel (__B, __A, m);
  }
  
  /* Perform logical bit-wise operations on 128-bit values.  */
--- 391,471 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_rcp_ss (__m128 __A)
  {
!   __m128 __a, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper double values) we splat the lower double
     * before we to the operation. */
!   __a = vec_splat (__A, 0);
!   __c = _mm_rcp_ps (__a);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_rsqrt_ss (__m128 __A)
  {
!   __m128 __a, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower double)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper double values) we splat the lower double
     * before we to the operation. */
!   __a = vec_splat (__A, 0);
!   __c = vec_rsqrte (__a);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel (__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_min_ss (__m128 __A, __m128 __B)
  {
!   __v4sf __a, __b, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower float)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper float values) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf)__A, 0);
!   __b = vec_splat ((__v4sf)__B, 0);
!   __c = vec_min (__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_max_ss (__m128 __A, __m128 __B)
  {
!   __v4sf __a, __b, __c;
!   static const __vector unsigned int __mask = {0xffffffff, 0, 0, 0};
    /* PowerISA VSX does not allow partial (for just lower float)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper float values) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat (__A, 0);
!   __b = vec_splat (__B, 0);
!   __c = vec_max (__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return (vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_min_ps (__m128 __A, __m128 __B)
  {
!   __vector __bool int __m = vec_cmpgt ((__v4sf) __B, (__v4sf) __A);
!   return vec_sel (__B, __A, __m);
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_max_ps (__m128 __A, __m128 __B)
  {
!   __vector __bool int __m = vec_cmpgt ((__v4sf) __A, (__v4sf) __B);
!   return vec_sel (__B, __A, __m);
  }
  
  /* Perform logical bit-wise operations on 128-bit values.  */
*************** _mm_cmpge_ps (__m128 __A, __m128 __B)
*** 530,537 ****
  extern __inline  __m128  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpneq_ps (__m128  __A, __m128  __B)
  {
!   __v4sf temp = (__v4sf ) vec_cmpeq ((__v4sf) __A, (__v4sf)__B);
!   return ((__m128)vec_nor (temp, temp));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 530,537 ----
  extern __inline  __m128  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpneq_ps (__m128  __A, __m128  __B)
  {
!   __v4sf __temp = (__v4sf ) vec_cmpeq ((__v4sf) __A, (__v4sf)__B);
!   return ((__m128)vec_nor (__temp, __temp));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cmpnge_ps (__m128 __A, __m128 __B)
*** 561,591 ****
  extern __inline  __m128  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_ps (__m128  __A, __m128  __B)
  {
!   __vector unsigned int a, b;
!   __vector unsigned int c, d;
!   static const __vector unsigned int float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
  
!   a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   c = (__vector unsigned int) vec_cmpgt (float_exp_mask, a);
!   d = (__vector unsigned int) vec_cmpgt (float_exp_mask, b);
!   return ((__m128 ) vec_and (c, d));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_ps (__m128 __A, __m128 __B)
  {
!   __vector unsigned int a, b;
!   __vector unsigned int c, d;
!   static const __vector unsigned int float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
  
!   a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   c = (__vector unsigned int) vec_cmpgt (a, float_exp_mask);
!   d = (__vector unsigned int) vec_cmpgt (b, float_exp_mask);
!   return ((__m128 ) vec_or (c, d));
  }
  
  /* Perform a comparison on the lower SPFP values of A and B.  If the
--- 561,591 ----
  extern __inline  __m128  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_ps (__m128  __A, __m128  __B)
  {
!   __vector unsigned int __a, __b;
!   __vector unsigned int __c, __d;
!   static const __vector unsigned int __float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
  
!   __a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   __b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   __c = (__vector unsigned int) vec_cmpgt (__float_exp_mask, __a);
!   __d = (__vector unsigned int) vec_cmpgt (__float_exp_mask, __b);
!   return ((__m128 ) vec_and (__c, __d));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_ps (__m128 __A, __m128 __B)
  {
!   __vector unsigned int __a, __b;
!   __vector unsigned int __c, __d;
!   static const __vector unsigned int __float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
  
!   __a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   __b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   __c = (__vector unsigned int) vec_cmpgt (__a, __float_exp_mask);
!   __d = (__vector unsigned int) vec_cmpgt (__b, __float_exp_mask);
!   return ((__m128 ) vec_or (__c, __d));
  }
  
  /* Perform a comparison on the lower SPFP values of A and B.  If the
*************** _mm_cmpunord_ps (__m128 __A, __m128 __B)
*** 594,815 ****
  extern __inline  __m128  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpeq_ss (__m128  __A, __m128  __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmpeq(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmplt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmplt(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmple_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmple(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpgt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmpgt(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpge_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmpge(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpneq_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmpeq(a, b);
!   c = vec_nor (c, c);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpnlt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmpge(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpnle_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmpgt(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpngt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmple(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpnge_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf a, b, c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we do the operation. */
!   a = vec_splat ((__v4sf) __A, 0);
!   b = vec_splat ((__v4sf) __B, 0);
!   c = (__v4sf) vec_cmplt(a, b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_ss (__m128 __A, __m128 __B)
  {
!   __vector unsigned int a, b;
!   __vector unsigned int c, d;
!   static const __vector unsigned int float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
  
!   a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   c = (__vector unsigned int) vec_cmpgt (float_exp_mask, a);
!   d = (__vector unsigned int) vec_cmpgt (float_exp_mask, b);
!   c = vec_and (c, d);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, (__v4sf)c, mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_ss (__m128 __A, __m128 __B)
  {
!   __vector unsigned int a, b;
!   __vector unsigned int c, d;
!   static const __vector unsigned int float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
!   static const __vector unsigned int mask =
      { 0xffffffff, 0, 0, 0 };
  
!   a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   c = (__vector unsigned int) vec_cmpgt (a, float_exp_mask);
!   d = (__vector unsigned int) vec_cmpgt (b, float_exp_mask);
!   c = vec_or (c, d);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, (__v4sf)c, mask));
  }
  
  /* Compare the lower SPFP values of A and B and return 1 if true
--- 594,815 ----
  extern __inline  __m128  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpeq_ss (__m128  __A, __m128  __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmpeq (__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmplt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmplt(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmple_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmple(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpgt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmpgt(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpge_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmpge(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpneq_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmpeq(__a, __b);
!   __c = vec_nor (__c, __c);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpnlt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmpge(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpnle_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmpgt(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpngt_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we to the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmple(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpnge_ss (__m128 __A, __m128 __B)
  {
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
!   __v4sf __a, __b, __c;
    /* PowerISA VMX does not allow partial (for just element 0)
     * results. So to insure we don't generate spurious exceptions
     * (from the upper elements) we splat the lower float
     * before we do the operation. */
!   __a = vec_splat ((__v4sf) __A, 0);
!   __b = vec_splat ((__v4sf) __B, 0);
!   __c = (__v4sf) vec_cmplt(__a, __b);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, __c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpord_ss (__m128 __A, __m128 __B)
  {
!   __vector unsigned int __a, __b;
!   __vector unsigned int __c, __d;
!   static const __vector unsigned int __float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
  
!   __a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   __b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   __c = (__vector unsigned int) vec_cmpgt (__float_exp_mask, __a);
!   __d = (__vector unsigned int) vec_cmpgt (__float_exp_mask, __b);
!   __c = vec_and (__c, __d);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, (__v4sf)__c, __mask));
  }
  
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cmpunord_ss (__m128 __A, __m128 __B)
  {
!   __vector unsigned int __a, __b;
!   __vector unsigned int __c, __d;
!   static const __vector unsigned int __float_exp_mask =
      { 0x7f800000, 0x7f800000, 0x7f800000, 0x7f800000 };
!   static const __vector unsigned int __mask =
      { 0xffffffff, 0, 0, 0 };
  
!   __a = (__vector unsigned int) vec_abs ((__v4sf)__A);
!   __b = (__vector unsigned int) vec_abs ((__v4sf)__B);
!   __c = (__vector unsigned int) vec_cmpgt (__a, __float_exp_mask);
!   __d = (__vector unsigned int) vec_cmpgt (__b, __float_exp_mask);
!   __c = vec_or (__c, __d);
    /* Then we merge the lower float result with the original upper
     * float elements from __A.  */
!   return ((__m128)vec_sel ((__v4sf)__A, (__v4sf)__c, __mask));
  }
  
  /* Compare the lower SPFP values of A and B and return 1 if true
*************** _mm_cvtss_f32 (__m128 __A)
*** 905,913 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtss_si32 (__m128 __A)
  {
!   int res;
  #ifdef _ARCH_PWR8
!   double dtmp;
    __asm__(
  #ifdef __LITTLE_ENDIAN__
        "xxsldwi %x0,%x0,%x0,3;\n"
--- 905,913 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtss_si32 (__m128 __A)
  {
!   int __res;
  #ifdef _ARCH_PWR8
!   double __dtmp;
    __asm__(
  #ifdef __LITTLE_ENDIAN__
        "xxsldwi %x0,%x0,%x0,3;\n"
*************** _mm_cvtss_si32 (__m128 __A)
*** 916,928 ****
        "fctiw  %2,%2;\n"
        "mfvsrd  %1,%x2;\n"
        : "+wa" (__A),
!         "=r" (res),
!         "=f" (dtmp)
        : );
  #else
!   res = __builtin_rint(__A[0]);
  #endif
!   return (res);
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 916,928 ----
        "fctiw  %2,%2;\n"
        "mfvsrd  %1,%x2;\n"
        : "+wa" (__A),
!         "=r" (__res),
!         "=f" (__dtmp)
        : );
  #else
!   __res = __builtin_rint(__A[0]);
  #endif
!   return __res;
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cvt_ss2si (__m128 __A)
*** 938,946 ****
  extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtss_si64 (__m128 __A)
  {
!   long long res;
  #if defined (_ARCH_PWR8) && defined (__powerpc64__)
!   double dtmp;
    __asm__(
  #ifdef __LITTLE_ENDIAN__
        "xxsldwi %x0,%x0,%x0,3;\n"
--- 938,946 ----
  extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtss_si64 (__m128 __A)
  {
!   long long __res;
  #if defined (_ARCH_PWR8) && defined (__powerpc64__)
!   double __dtmp;
    __asm__(
  #ifdef __LITTLE_ENDIAN__
        "xxsldwi %x0,%x0,%x0,3;\n"
*************** _mm_cvtss_si64 (__m128 __A)
*** 949,961 ****
        "fctid  %2,%2;\n"
        "mfvsrd  %1,%x2;\n"
        : "+wa" (__A),
!         "=r" (res),
!         "=f" (dtmp)
        : );
  #else
!   res = __builtin_llrint(__A[0]);
  #endif
!   return (res);
  }
  
  /* Microsoft intrinsic.  */
--- 949,961 ----
        "fctid  %2,%2;\n"
        "mfvsrd  %1,%x2;\n"
        : "+wa" (__A),
!         "=r" (__res),
!         "=f" (__dtmp)
        : );
  #else
!   __res = __builtin_llrint(__A[0]);
  #endif
!   return __res;
  }
  
  /* Microsoft intrinsic.  */
*************** extern __inline __m64 __attribute__((__g
*** 992,1006 ****
  _mm_cvtps_pi32 (__m128 __A)
  {
    /* Splat two lower SPFP values to both halves.  */
!   __v4sf temp, rounded;
!   __vector unsigned long long result;
  
    /* Splat two lower SPFP values to both halves.  */
!   temp = (__v4sf) vec_splat ((__vector long long)__A, 0);
!   rounded = vec_rint(temp);
!   result = (__vector unsigned long long) vec_cts (rounded, 0);
  
!   return (__m64) ((__vector long long) result)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 992,1006 ----
  _mm_cvtps_pi32 (__m128 __A)
  {
    /* Splat two lower SPFP values to both halves.  */
!   __v4sf __temp, __rounded;
!   __vector unsigned long long __result;
  
    /* Splat two lower SPFP values to both halves.  */
!   __temp = (__v4sf) vec_splat ((__vector long long)__A, 0);
!   __rounded = vec_rint (__temp);
!   __result = (__vector unsigned long long) vec_cts (__rounded, 0);
  
!   return (__m64) ((__vector long long) __result)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline int __attribute__((__gnu
*** 1014,1022 ****
  _mm_cvttss_si32 (__m128 __A)
  {
    /* Extract the lower float element.  */
!   float temp = __A[0];
    /* truncate to 32-bit integer and return.  */
!   return temp;
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1014,1022 ----
  _mm_cvttss_si32 (__m128 __A)
  {
    /* Extract the lower float element.  */
!   float __temp = __A[0];
    /* truncate to 32-bit integer and return.  */
!   return __temp;
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline long long __attribute__(
*** 1030,1038 ****
  _mm_cvttss_si64 (__m128 __A)
  {
    /* Extract the lower float element.  */
!   float temp = __A[0];
    /* truncate to 32-bit integer and return.  */
!   return temp;
  }
  
  /* Microsoft intrinsic.  */
--- 1030,1038 ----
  _mm_cvttss_si64 (__m128 __A)
  {
    /* Extract the lower float element.  */
!   float __temp = __A[0];
    /* truncate to 32-bit integer and return.  */
!   return __temp;
  }
  
  /* Microsoft intrinsic.  */
*************** extern __inline long long __attribute__(
*** 1040,1048 ****
  _mm_cvttss_si64x (__m128 __A)
  {
    /* Extract the lower float element.  */
!   float temp = __A[0];
    /* truncate to 32-bit integer and return.  */
!   return temp;
  }
  
  /* Truncate the two lower SPFP values to 32-bit integers.  Return the
--- 1040,1048 ----
  _mm_cvttss_si64x (__m128 __A)
  {
    /* Extract the lower float element.  */
!   float __temp = __A[0];
    /* truncate to 32-bit integer and return.  */
!   return __temp;
  }
  
  /* Truncate the two lower SPFP values to 32-bit integers.  Return the
*************** _mm_cvttss_si64x (__m128 __A)
*** 1050,1063 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttps_pi32 (__m128 __A)
  {
!   __v4sf temp;
!   __vector unsigned long long result;
  
    /* Splat two lower SPFP values to both halves.  */
!   temp = (__v4sf) vec_splat ((__vector long long)__A, 0);
!   result = (__vector unsigned long long) vec_cts (temp, 0);
  
!   return (__m64) ((__vector long long) result)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1050,1063 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvttps_pi32 (__m128 __A)
  {
!   __v4sf __temp;
!   __vector unsigned long long __result;
  
    /* Splat two lower SPFP values to both halves.  */
!   __temp = (__v4sf) vec_splat ((__vector long long)__A, 0);
!   __result = (__vector unsigned long long) vec_cts (__temp, 0);
  
!   return (__m64) ((__vector long long) __result)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _mm_cvtt_ps2pi (__m128 __A)
*** 1070,1077 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi32_ss (__m128 __A, int __B)
  {
!   float temp = __B;
!   __A[0] = temp;
  
    return __A;
  }
--- 1070,1077 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi32_ss (__m128 __A, int __B)
  {
!   float __temp = __B;
!   __A[0] = __temp;
  
    return __A;
  }
*************** _mm_cvt_si2ss (__m128 __A, int __B)
*** 1087,1094 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi64_ss (__m128 __A, long long __B)
  {
!   float temp = __B;
!   __A[0] = temp;
  
    return __A;
  }
--- 1087,1094 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtsi64_ss (__m128 __A, long long __B)
  {
!   float __temp = __B;
!   __A[0] = __temp;
  
    return __A;
  }
*************** _mm_cvtsi64x_ss (__m128 __A, long long _
*** 1105,1118 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi32_ps (__m128        __A, __m64        __B)
  {
!   __vector signed int vm1;
!   __vector float vf1;
  
!   vm1 = (__vector signed int) (__vector unsigned long long) {__B, __B};
!   vf1 = (__vector float) vec_ctf (vm1, 0);
  
    return ((__m128) (__vector unsigned long long)
!     { ((__vector unsigned long long)vf1) [0],
  	((__vector unsigned long long)__A) [1]});
  }
  
--- 1105,1118 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi32_ps (__m128        __A, __m64        __B)
  {
!   __vector signed int __vm1;
!   __vector float __vf1;
  
!   __vm1 = (__vector signed int) (__vector unsigned long long) {__B, __B};
!   __vf1 = (__vector float) vec_ctf (__vm1, 0);
  
    return ((__m128) (__vector unsigned long long)
!     { ((__vector unsigned long long)__vf1) [0],
  	((__vector unsigned long long)__A) [1]});
  }
  
*************** _mm_cvt_pi2ps (__m128 __A, __m64 __B)
*** 1126,1179 ****
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi16_ps (__m64 __A)
  {
!   __vector signed short vs8;
!   __vector signed int vi4;
!   __vector float vf1;
  
!   vs8 = (__vector signed short) (__vector unsigned long long) { __A, __A };
!   vi4 = vec_vupklsh (vs8);
!   vf1 = (__vector float) vec_ctf (vi4, 0);
  
!   return (__m128) vf1;
  }
  
  /* Convert the four unsigned 16-bit values in A to SPFP form.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpu16_ps (__m64 __A)
  {
!   const __vector unsigned short zero =
      { 0, 0, 0, 0, 0, 0, 0, 0 };
!   __vector unsigned short vs8;
!   __vector unsigned int vi4;
!   __vector float vf1;
  
!   vs8 = (__vector unsigned short) (__vector unsigned long long) { __A, __A };
!   vi4 = (__vector unsigned int) vec_mergel
  #ifdef __LITTLE_ENDIAN__
!                                            (vs8, zero);
  #else
!                                            (zero, vs8);
  #endif
!   vf1 = (__vector float) vec_ctf (vi4, 0);
  
!   return (__m128) vf1;
  }
  
  /* Convert the low four signed 8-bit values in A to SPFP form.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi8_ps (__m64 __A)
  {
!   __vector signed char vc16;
!   __vector signed short vs8;
!   __vector signed int vi4;
!   __vector float vf1;
  
!   vc16 = (__vector signed char) (__vector unsigned long long) { __A, __A };
!   vs8 = vec_vupkhsb (vc16);
!   vi4 = vec_vupkhsh (vs8);
!   vf1 = (__vector float) vec_ctf (vi4, 0);
  
!   return (__m128) vf1;
  }
  
  /* Convert the low four unsigned 8-bit values in A to SPFP form.  */
--- 1126,1179 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi16_ps (__m64 __A)
  {
!   __vector signed short __vs8;
!   __vector signed int __vi4;
!   __vector float __vf1;
  
!   __vs8 = (__vector signed short) (__vector unsigned long long) { __A, __A };
!   __vi4 = vec_vupklsh (__vs8);
!   __vf1 = (__vector float) vec_ctf (__vi4, 0);
  
!   return (__m128) __vf1;
  }
  
  /* Convert the four unsigned 16-bit values in A to SPFP form.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpu16_ps (__m64 __A)
  {
!   const __vector unsigned short __zero =
      { 0, 0, 0, 0, 0, 0, 0, 0 };
!   __vector unsigned short __vs8;
!   __vector unsigned int __vi4;
!   __vector float __vf1;
  
!   __vs8 = (__vector unsigned short) (__vector unsigned long long) { __A, __A };
!   __vi4 = (__vector unsigned int) vec_mergel
  #ifdef __LITTLE_ENDIAN__
!                                            (__vs8, __zero);
  #else
!                                            (__zero, __vs8);
  #endif
!   __vf1 = (__vector float) vec_ctf (__vi4, 0);
  
!   return (__m128) __vf1;
  }
  
  /* Convert the low four signed 8-bit values in A to SPFP form.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi8_ps (__m64 __A)
  {
!   __vector signed char __vc16;
!   __vector signed short __vs8;
!   __vector signed int __vi4;
!   __vector float __vf1;
  
!   __vc16 = (__vector signed char) (__vector unsigned long long) { __A, __A };
!   __vs8 = vec_vupkhsb (__vc16);
!   __vi4 = vec_vupkhsh (__vs8);
!   __vf1 = (__vector float) vec_ctf (__vi4, 0);
  
!   return (__m128) __vf1;
  }
  
  /* Convert the low four unsigned 8-bit values in A to SPFP form.  */
*************** extern __inline  __m128  __attribute__((
*** 1181,1250 ****
  
  _mm_cvtpu8_ps (__m64  __A)
  {
!   const __vector unsigned char zero =
      { 0, 0, 0, 0, 0, 0, 0, 0 };
!   __vector unsigned char vc16;
!   __vector unsigned short vs8;
!   __vector unsigned int vi4;
!   __vector float vf1;
  
!   vc16 = (__vector unsigned char) (__vector unsigned long long) { __A, __A };
  #ifdef __LITTLE_ENDIAN__
!   vs8 = (__vector unsigned short) vec_mergel (vc16, zero);
!   vi4 = (__vector unsigned int) vec_mergeh (vs8,
! 					    (__vector unsigned short) zero);
  #else
!   vs8 = (__vector unsigned short) vec_mergel (zero, vc16);
!   vi4 = (__vector unsigned int) vec_mergeh ((__vector unsigned short) zero,
!                                             vs8);
  #endif
!   vf1 = (__vector float) vec_ctf (vi4, 0);
  
!   return (__m128) vf1;
  }
  
  /* Convert the four signed 32-bit values in A and B to SPFP form.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi32x2_ps (__m64 __A, __m64 __B)
  {
!   __vector signed int vi4;
!   __vector float vf4;
  
!   vi4 = (__vector signed int) (__vector unsigned long long) { __A, __B };
!   vf4 = (__vector float) vec_ctf (vi4, 0);
!   return (__m128) vf4;
  }
  
  /* Convert the four SPFP values in A to four signed 16-bit integers.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtps_pi16 (__m128 __A)
  {
!   __v4sf rounded;
!   __vector signed int temp;
!   __vector unsigned long long result;
  
!   rounded = vec_rint(__A);
!   temp = vec_cts (rounded, 0);
!   result = (__vector unsigned long long) vec_pack (temp, temp);
  
!   return (__m64) ((__vector long long) result)[0];
  }
  
  /* Convert the four SPFP values in A to four signed 8-bit integers.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtps_pi8 (__m128 __A)
  {
!   __v4sf rounded;
!   __vector signed int tmp_i;
!   static const __vector signed int zero = {0, 0, 0, 0};
!   __vector signed short tmp_s;
!   __vector signed char res_v;
  
!   rounded = vec_rint(__A);
!   tmp_i = vec_cts (rounded, 0);
!   tmp_s = vec_pack (tmp_i, zero);
!   res_v = vec_pack (tmp_s, tmp_s);
!   return (__m64) ((__vector long long) res_v)[0];
  }
  
  /* Selects four specific SPFP values from A and B based on MASK.  */
--- 1181,1250 ----
  
  _mm_cvtpu8_ps (__m64  __A)
  {
!   const __vector unsigned char __zero =
      { 0, 0, 0, 0, 0, 0, 0, 0 };
!   __vector unsigned char __vc16;
!   __vector unsigned short __vs8;
!   __vector unsigned int __vi4;
!   __vector float __vf1;
  
!   __vc16 = (__vector unsigned char) (__vector unsigned long long) { __A, __A };
  #ifdef __LITTLE_ENDIAN__
!   __vs8 = (__vector unsigned short) vec_mergel (__vc16, __zero);
!   __vi4 = (__vector unsigned int) vec_mergeh (__vs8,
! 					    (__vector unsigned short) __zero);
  #else
!   __vs8 = (__vector unsigned short) vec_mergel (__zero, __vc16);
!   __vi4 = (__vector unsigned int) vec_mergeh ((__vector unsigned short) __zero,
!                                             __vs8);
  #endif
!   __vf1 = (__vector float) vec_ctf (__vi4, 0);
  
!   return (__m128) __vf1;
  }
  
  /* Convert the four signed 32-bit values in A and B to SPFP form.  */
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtpi32x2_ps (__m64 __A, __m64 __B)
  {
!   __vector signed int __vi4;
!   __vector float __vf4;
  
!   __vi4 = (__vector signed int) (__vector unsigned long long) { __A, __B };
!   __vf4 = (__vector float) vec_ctf (__vi4, 0);
!   return (__m128) __vf4;
  }
  
  /* Convert the four SPFP values in A to four signed 16-bit integers.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtps_pi16 (__m128 __A)
  {
!   __v4sf __rounded;
!   __vector signed int __temp;
!   __vector unsigned long long __result;
  
!   __rounded = vec_rint(__A);
!   __temp = vec_cts (__rounded, 0);
!   __result = (__vector unsigned long long) vec_pack (__temp, __temp);
  
!   return (__m64) ((__vector long long) __result)[0];
  }
  
  /* Convert the four SPFP values in A to four signed 8-bit integers.  */
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtps_pi8 (__m128 __A)
  {
!   __v4sf __rounded;
!   __vector signed int __tmp_i;
!   static const __vector signed int __zero = {0, 0, 0, 0};
!   __vector signed short __tmp_s;
!   __vector signed char __res_v;
  
!   __rounded = vec_rint(__A);
!   __tmp_i = vec_cts (__rounded, 0);
!   __tmp_s = vec_pack (__tmp_i, __zero);
!   __res_v = vec_pack (__tmp_s, __tmp_s);
!   return (__m64) ((__vector long long) __res_v)[0];
  }
  
  /* Selects four specific SPFP values from A and B based on MASK.  */
*************** extern __inline  __m128  __attribute__((
*** 1252,1262 ****
  
  _mm_shuffle_ps (__m128  __A, __m128  __B, int const __mask)
  {
!   unsigned long element_selector_10 = __mask & 0x03;
!   unsigned long element_selector_32 = (__mask >> 2) & 0x03;
!   unsigned long element_selector_54 = (__mask >> 4) & 0x03;
!   unsigned long element_selector_76 = (__mask >> 6) & 0x03;
!   static const unsigned int permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
        0x03020100, 0x07060504, 0x0B0A0908, 0x0F0E0D0C
--- 1252,1262 ----
  
  _mm_shuffle_ps (__m128  __A, __m128  __B, int const __mask)
  {
!   unsigned long __element_selector_10 = __mask & 0x03;
!   unsigned long __element_selector_32 = (__mask >> 2) & 0x03;
!   unsigned long __element_selector_54 = (__mask >> 4) & 0x03;
!   unsigned long __element_selector_76 = (__mask >> 6) & 0x03;
!   static const unsigned int __permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
        0x03020100, 0x07060504, 0x0B0A0908, 0x0F0E0D0C
*************** _mm_shuffle_ps (__m128  __A, __m128  __B
*** 1264,1276 ****
        0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F
  #endif
      };
!   __vector unsigned int t;
  
!   t[0] = permute_selectors[element_selector_10];
!   t[1] = permute_selectors[element_selector_32];
!   t[2] = permute_selectors[element_selector_54] + 0x10101010;
!   t[3] = permute_selectors[element_selector_76] + 0x10101010;
!   return vec_perm ((__v4sf) __A, (__v4sf)__B, (__vector unsigned char)t);
  }
  
  /* Selects and interleaves the upper two SPFP values from A and B.  */
--- 1264,1276 ----
        0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F
  #endif
      };
!   __vector unsigned int __t;
  
!   __t[0] = __permute_selectors[__element_selector_10];
!   __t[1] = __permute_selectors[__element_selector_32];
!   __t[2] = __permute_selectors[__element_selector_54] + 0x10101010;
!   __t[3] = __permute_selectors[__element_selector_76] + 0x10101010;
!   return vec_perm ((__v4sf) __A, (__v4sf)__B, (__vector unsigned char)__t);
  }
  
  /* Selects and interleaves the upper two SPFP values from A and B.  */
*************** _mm_storel_pi (__m64 *__P, __m128 __A)
*** 1352,1359 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movemask_ps (__m128  __A)
  {
!   __vector unsigned long long result;
!   static const __vector unsigned int perm_mask =
      {
  #ifdef __LITTLE_ENDIAN__
  	0x00204060, 0x80808080, 0x80808080, 0x80808080
--- 1352,1359 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_movemask_ps (__m128  __A)
  {
!   __vector unsigned long long __result;
!   static const __vector unsigned int __perm_mask =
      {
  #ifdef __LITTLE_ENDIAN__
  	0x00204060, 0x80808080, 0x80808080, 0x80808080
*************** _mm_movemask_ps (__m128  __A)
*** 1362,1375 ****
  #endif
      };
  
!   result = ((__vector unsigned long long)
  	    vec_vbpermq ((__vector unsigned char) __A,
! 			 (__vector unsigned char) perm_mask));
  
  #ifdef __LITTLE_ENDIAN__
!   return result[1];
  #else
!   return result[0];
  #endif
  }
  #endif /* _ARCH_PWR8 */
--- 1362,1375 ----
  #endif
      };
  
!   __result = ((__vector unsigned long long)
  	    vec_vbpermq ((__vector unsigned char) __A,
! 			 (__vector unsigned char) __perm_mask));
  
  #ifdef __LITTLE_ENDIAN__
!   return __result[1];
  #else
!   return __result[0];
  #endif
  }
  #endif /* _ARCH_PWR8 */
*************** _mm_load_ps1 (float const *__P)
*** 1391,1402 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_extract_pi16 (__m64 const __A, int const __N)
  {
!   unsigned int shiftr = __N & 3;
  #ifdef __BIG_ENDIAN__
!   shiftr = 3 - shiftr;
  #endif
  
!   return ((__A >> (shiftr * 16)) & 0xffff);
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1391,1402 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_extract_pi16 (__m64 const __A, int const __N)
  {
!   unsigned int __shiftr = __N & 3;
  #ifdef __BIG_ENDIAN__
!   __shiftr = 3 - __shiftr;
  #endif
  
!   return ((__A >> (__shiftr * 16)) & 0xffff);
  }
  
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pextrw (__m64 const __A, int const __
*** 1410,1421 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_insert_pi16 (__m64 const __A, int const __D, int const __N)
  {
!   const int shiftl = (__N & 3) * 16;
!   const __m64 shiftD = (const __m64) __D << shiftl;
!   const __m64 mask = 0xffffUL << shiftl;
!   __m64 result = (__A & (~mask)) | (shiftD & mask);
  
!   return (result);
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1410,1421 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_insert_pi16 (__m64 const __A, int const __D, int const __N)
  {
!   const int __shiftl = (__N & 3) * 16;
!   const __m64 __shiftD = (const __m64) __D << __shiftl;
!   const __m64 __mask = 0xffffUL << __shiftl;
!   __m64 __result = (__A & (~__mask)) | (__shiftD & __mask);
  
!   return __result;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** extern __inline __m64 __attribute__((__g
*** 1430,1459 ****
  _mm_max_pi16 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector signed short a, b, r;
!   __vector __bool short c;
  
!   a = (__vector signed short)vec_splats (__A);
!   b = (__vector signed short)vec_splats (__B);
!   c = (__vector __bool short)vec_cmpgt (a, b);
!   r = vec_sel (b, a, c);
!   return (__m64) ((__vector long long) r)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __A;
!   m2.as_m64 = __B;
  
!   res.as_short[0] =
!       (m1.as_short[0] > m2.as_short[0]) ? m1.as_short[0] : m2.as_short[0];
!   res.as_short[1] =
!       (m1.as_short[1] > m2.as_short[1]) ? m1.as_short[1] : m2.as_short[1];
!   res.as_short[2] =
!       (m1.as_short[2] > m2.as_short[2]) ? m1.as_short[2] : m2.as_short[2];
!   res.as_short[3] =
!       (m1.as_short[3] > m2.as_short[3]) ? m1.as_short[3] : m2.as_short[3];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 1430,1459 ----
  _mm_max_pi16 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector signed short __a, __b, __r;
!   __vector __bool short __c;
  
!   __a = (__vector signed short)vec_splats (__A);
!   __b = (__vector signed short)vec_splats (__B);
!   __c = (__vector __bool short)vec_cmpgt (__a, __b);
!   __r = vec_sel (__b, __a, __c);
!   return (__m64) ((__vector long long) __r)[0];
  #else
!   __m64_union __m1, __m2, __res;
  
!   __m1.as_m64 = __A;
!   __m2.as_m64 = __B;
  
!   __res.as_short[0] =
!       (__m1.as_short[0] > __m2.as_short[0]) ? __m1.as_short[0] : __m2.as_short[0];
!   __res.as_short[1] =
!       (__m1.as_short[1] > __m2.as_short[1]) ? __m1.as_short[1] : __m2.as_short[1];
!   __res.as_short[2] =
!       (__m1.as_short[2] > __m2.as_short[2]) ? __m1.as_short[2] : __m2.as_short[2];
!   __res.as_short[3] =
!       (__m1.as_short[3] > __m2.as_short[3]) ? __m1.as_short[3] : __m2.as_short[3];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 1468,1495 ****
  _mm_max_pu8 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector unsigned char a, b, r;
!   __vector __bool char c;
  
!   a = (__vector unsigned char)vec_splats (__A);
!   b = (__vector unsigned char)vec_splats (__B);
!   c = (__vector __bool char)vec_cmpgt (a, b);
!   r = vec_sel (b, a, c);
!   return (__m64) ((__vector long long) r)[0];
  #else
!   __m64_union m1, m2, res;
!   long i;
! 
!   m1.as_m64 = __A;
!   m2.as_m64 = __B;
  
  
!   for (i = 0; i < 8; i++)
!   res.as_char[i] =
!       ((unsigned char) m1.as_char[i] > (unsigned char) m2.as_char[i]) ?
! 	  m1.as_char[i] : m2.as_char[i];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 1468,1494 ----
  _mm_max_pu8 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector unsigned char __a, __b, __r;
!   __vector __bool char __c;
  
!   __a = (__vector unsigned char)vec_splats (__A);
!   __b = (__vector unsigned char)vec_splats (__B);
!   __c = (__vector __bool char)vec_cmpgt (__a, __b);
!   __r = vec_sel (__b, __a, __c);
!   return (__m64) ((__vector long long) __r)[0];
  #else
!   __m64_union __m1, __m2, __res;
!   long __i;
  
+   __m1.as_m64 = __A;
+   __m2.as_m64 = __B;
  
!   for (__i = 0; __i < 8; __i++)
!     __res.as_char[__i] =
!       ((unsigned char) __m1.as_char[__i] > (unsigned char) __m2.as_char[__i]) ?
! 	  __m1.as_char[__i] : __m2.as_char[__i];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 1504,1533 ****
  _mm_min_pi16 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector signed short a, b, r;
!   __vector __bool short c;
  
!   a = (__vector signed short)vec_splats (__A);
!   b = (__vector signed short)vec_splats (__B);
!   c = (__vector __bool short)vec_cmplt (a, b);
!   r = vec_sel (b, a, c);
!   return (__m64) ((__vector long long) r)[0];
  #else
!   __m64_union m1, m2, res;
  
!   m1.as_m64 = __A;
!   m2.as_m64 = __B;
  
!   res.as_short[0] =
!       (m1.as_short[0] < m2.as_short[0]) ? m1.as_short[0] : m2.as_short[0];
!   res.as_short[1] =
!       (m1.as_short[1] < m2.as_short[1]) ? m1.as_short[1] : m2.as_short[1];
!   res.as_short[2] =
!       (m1.as_short[2] < m2.as_short[2]) ? m1.as_short[2] : m2.as_short[2];
!   res.as_short[3] =
!       (m1.as_short[3] < m2.as_short[3]) ? m1.as_short[3] : m2.as_short[3];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 1503,1532 ----
  _mm_min_pi16 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector signed short __a, __b, __r;
!   __vector __bool short __c;
  
!   __a = (__vector signed short)vec_splats (__A);
!   __b = (__vector signed short)vec_splats (__B);
!   __c = (__vector __bool short)vec_cmplt (__a, __b);
!   __r = vec_sel (__b, __a, __c);
!   return (__m64) ((__vector long long) __r)[0];
  #else
!   __m64_union __m1, __m2, __res;
  
!   __m1.as_m64 = __A;
!   __m2.as_m64 = __B;
  
!   __res.as_short[0] =
!       (__m1.as_short[0] < __m2.as_short[0]) ? __m1.as_short[0] : __m2.as_short[0];
!   __res.as_short[1] =
!       (__m1.as_short[1] < __m2.as_short[1]) ? __m1.as_short[1] : __m2.as_short[1];
!   __res.as_short[2] =
!       (__m1.as_short[2] < __m2.as_short[2]) ? __m1.as_short[2] : __m2.as_short[2];
!   __res.as_short[3] =
!       (__m1.as_short[3] < __m2.as_short[3]) ? __m1.as_short[3] : __m2.as_short[3];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline __m64 __attribute__((__g
*** 1542,1569 ****
  _mm_min_pu8 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector unsigned char a, b, r;
!   __vector __bool char c;
  
!   a = (__vector unsigned char)vec_splats (__A);
!   b = (__vector unsigned char)vec_splats (__B);
!   c = (__vector __bool char)vec_cmplt (a, b);
!   r = vec_sel (b, a, c);
!   return (__m64) ((__vector long long) r)[0];
  #else
!   __m64_union m1, m2, res;
!   long i;
  
!   m1.as_m64 = __A;
!   m2.as_m64 = __B;
  
  
!   for (i = 0; i < 8; i++)
!   res.as_char[i] =
!       ((unsigned char) m1.as_char[i] < (unsigned char) m2.as_char[i]) ?
! 	  m1.as_char[i] : m2.as_char[i];
  
!   return (__m64) res.as_m64;
  #endif
  }
  
--- 1541,1568 ----
  _mm_min_pu8 (__m64 __A, __m64 __B)
  {
  #if _ARCH_PWR8
!   __vector unsigned char __a, __b, __r;
!   __vector __bool char __c;
  
!   __a = (__vector unsigned char)vec_splats (__A);
!   __b = (__vector unsigned char)vec_splats (__B);
!   __c = (__vector __bool char)vec_cmplt (__a, __b);
!   __r = vec_sel (__b, __a, __c);
!   return (__m64) ((__vector long long) __r)[0];
  #else
!   __m64_union __m1, __m2, __res;
!   long __i;
  
!   __m1.as_m64 = __A;
!   __m2.as_m64 = __B;
  
  
!   for (__i = 0; __i < 8; __i++)
!     __res.as_char[__i] =
!       ((unsigned char) __m1.as_char[__i] < (unsigned char) __m2.as_char[__i]) ?
! 	  __m1.as_char[__i] : __m2.as_char[__i];
  
!   return (__m64) __res.as_m64;
  #endif
  }
  
*************** extern __inline int __attribute__((__gnu
*** 1578,1601 ****
  _mm_movemask_pi8 (__m64 __A)
  {
  #ifdef __powerpc64__
!   unsigned long long p =
  #ifdef __LITTLE_ENDIAN__
                           0x0008101820283038UL; // permute control for sign bits
  #else
                           0x3830282018100800UL; // permute control for sign bits
  #endif
!   return __builtin_bpermd (p, __A);
  #else
  #ifdef __LITTLE_ENDIAN__
!   unsigned int mask = 0x20283038UL;
!   unsigned int r1 = __builtin_bpermd (mask, __A) & 0xf;
!   unsigned int r2 = __builtin_bpermd (mask, __A >> 32) & 0xf;
  #else
!   unsigned int mask = 0x38302820UL;
!   unsigned int r1 = __builtin_bpermd (mask, __A >> 32) & 0xf;
!   unsigned int r2 = __builtin_bpermd (mask, __A) & 0xf;
  #endif
!   return (r2 << 4) | r1;
  #endif
  }
  
--- 1577,1600 ----
  _mm_movemask_pi8 (__m64 __A)
  {
  #ifdef __powerpc64__
!   unsigned long long __p =
  #ifdef __LITTLE_ENDIAN__
                           0x0008101820283038UL; // permute control for sign bits
  #else
                           0x3830282018100800UL; // permute control for sign bits
  #endif
!   return __builtin_bpermd (__p, __A);
  #else
  #ifdef __LITTLE_ENDIAN__
!   unsigned int __mask = 0x20283038UL;
!   unsigned int __r1 = __builtin_bpermd (__mask, __A) & 0xf;
!   unsigned int __r2 = __builtin_bpermd (__mask, __A >> 32) & 0xf;
  #else
!   unsigned int __mask = 0x38302820UL;
!   unsigned int __r1 = __builtin_bpermd (__mask, __A >> 32) & 0xf;
!   unsigned int __r2 = __builtin_bpermd (__mask, __A) & 0xf;
  #endif
!   return (__r2 << 4) | __r1;
  #endif
  }
  
*************** _m_pmovmskb (__m64 __A)
*** 1610,1619 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_pu16 (__m64 __A, __m64 __B)
  {
!   __vector unsigned short a, b;
!   __vector unsigned short c;
!   __vector unsigned int w0, w1;
!   __vector unsigned char xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
--- 1609,1618 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mulhi_pu16 (__m64 __A, __m64 __B)
  {
!   __vector unsigned short __a, __b;
!   __vector unsigned short __c;
!   __vector unsigned int __w0, __w1;
!   __vector unsigned char __xform1 = {
  #ifdef __LITTLE_ENDIAN__
        0x02, 0x03, 0x12, 0x13,  0x06, 0x07, 0x16, 0x17,
        0x0A, 0x0B, 0x1A, 0x1B,  0x0E, 0x0F, 0x1E, 0x1F
*************** _mm_mulhi_pu16 (__m64 __A, __m64 __B)
*** 1623,1636 ****
  #endif
      };
  
!   a = (__vector unsigned short)vec_splats (__A);
!   b = (__vector unsigned short)vec_splats (__B);
  
!   w0 = vec_vmuleuh (a, b);
!   w1 = vec_vmulouh (a, b);
!   c = (__vector unsigned short)vec_perm (w0, w1, xform1);
  
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1622,1635 ----
  #endif
      };
  
!   __a = (__vector unsigned short)vec_splats (__A);
!   __b = (__vector unsigned short)vec_splats (__B);
  
!   __w0 = vec_vmuleuh (__a, __b);
!   __w1 = vec_vmulouh (__a, __b);
!   __c = (__vector unsigned short)vec_perm (__w0, __w1, __xform1);
  
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pmulhuw (__m64 __A, __m64 __B)
*** 1644,1654 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shuffle_pi16 (__m64 __A, int const __N)
  {
!   unsigned long element_selector_10 = __N & 0x03;
!   unsigned long element_selector_32 = (__N >> 2) & 0x03;
!   unsigned long element_selector_54 = (__N >> 4) & 0x03;
!   unsigned long element_selector_76 = (__N >> 6) & 0x03;
!   static const unsigned short permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	      0x0908, 0x0B0A, 0x0D0C, 0x0F0E
--- 1643,1653 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_shuffle_pi16 (__m64 __A, int const __N)
  {
!   unsigned long __element_selector_10 = __N & 0x03;
!   unsigned long __element_selector_32 = (__N >> 2) & 0x03;
!   unsigned long __element_selector_54 = (__N >> 4) & 0x03;
!   unsigned long __element_selector_76 = (__N >> 6) & 0x03;
!   static const unsigned short __permute_selectors[4] =
      {
  #ifdef __LITTLE_ENDIAN__
  	      0x0908, 0x0B0A, 0x0D0C, 0x0F0E
*************** _mm_shuffle_pi16 (__m64 __A, int const _
*** 1656,1679 ****
  	      0x0607, 0x0405, 0x0203, 0x0001
  #endif
      };
!   __m64_union t;
!   __vector unsigned long long a, p, r;
  
  #ifdef __LITTLE_ENDIAN__
!   t.as_short[0] = permute_selectors[element_selector_10];
!   t.as_short[1] = permute_selectors[element_selector_32];
!   t.as_short[2] = permute_selectors[element_selector_54];
!   t.as_short[3] = permute_selectors[element_selector_76];
  #else
!   t.as_short[3] = permute_selectors[element_selector_10];
!   t.as_short[2] = permute_selectors[element_selector_32];
!   t.as_short[1] = permute_selectors[element_selector_54];
!   t.as_short[0] = permute_selectors[element_selector_76];
  #endif
!   p = vec_splats (t.as_m64);
!   a = vec_splats (__A);
!   r = vec_perm (a, a, (__vector unsigned char)p);
!   return (__m64) ((__vector long long) r)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1655,1678 ----
  	      0x0607, 0x0405, 0x0203, 0x0001
  #endif
      };
!   __m64_union __t;
!   __vector unsigned long long __a, __p, __r;
  
  #ifdef __LITTLE_ENDIAN__
!   __t.as_short[0] = __permute_selectors[__element_selector_10];
!   __t.as_short[1] = __permute_selectors[__element_selector_32];
!   __t.as_short[2] = __permute_selectors[__element_selector_54];
!   __t.as_short[3] = __permute_selectors[__element_selector_76];
  #else
!   __t.as_short[3] = __permute_selectors[__element_selector_10];
!   __t.as_short[2] = __permute_selectors[__element_selector_32];
!   __t.as_short[1] = __permute_selectors[__element_selector_54];
!   __t.as_short[0] = __permute_selectors[__element_selector_76];
  #endif
!   __p = vec_splats (__t.as_m64);
!   __a = vec_splats (__A);
!   __r = vec_perm (__a, __a, (__vector unsigned char)__p);
!   return (__m64) ((__vector long long) __r)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pshufw (__m64 __A, int const __N)
*** 1688,1701 ****
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskmove_si64 (__m64 __A, __m64 __N, char *__P)
  {
!   __m64 hibit = 0x8080808080808080UL;
!   __m64 mask, tmp;
!   __m64 *p = (__m64*)__P;
  
!   tmp = *p;
!   mask = _mm_cmpeq_pi8 ((__N & hibit), hibit);
!   tmp = (tmp & (~mask)) | (__A & mask);
!   *p = tmp;
  }
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1687,1700 ----
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskmove_si64 (__m64 __A, __m64 __N, char *__P)
  {
!   __m64 __hibit = 0x8080808080808080UL;
!   __m64 __mask, __tmp;
!   __m64 *__p = (__m64*)__P;
  
!   __tmp = *__p;
!   __mask = _mm_cmpeq_pi8 ((__N & __hibit), __hibit);
!   __tmp = (__tmp & (~__mask)) | (__A & __mask);
!   *__p = __tmp;
  }
  
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_maskmovq (__m64 __A, __m64 __N, char
*** 1708,1719 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_avg_pu8 (__m64 __A, __m64 __B)
  {
!   __vector unsigned char a, b, c;
  
!   a = (__vector unsigned char)vec_splats (__A);
!   b = (__vector unsigned char)vec_splats (__B);
!   c = vec_avg (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1707,1718 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_avg_pu8 (__m64 __A, __m64 __B)
  {
!   __vector unsigned char __a, __b, __c;
  
!   __a = (__vector unsigned char)vec_splats (__A);
!   __b = (__vector unsigned char)vec_splats (__B);
!   __c = vec_avg (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pavgb (__m64 __A, __m64 __B)
*** 1726,1737 ****
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_avg_pu16 (__m64 __A, __m64 __B)
  {
!   __vector unsigned short a, b, c;
  
!   a = (__vector unsigned short)vec_splats (__A);
!   b = (__vector unsigned short)vec_splats (__B);
!   c = vec_avg (a, b);
!   return (__m64) ((__vector long long) c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1725,1736 ----
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_avg_pu16 (__m64 __A, __m64 __B)
  {
!   __vector unsigned short __a, __b, __c;
  
!   __a = (__vector unsigned short)vec_splats (__A);
!   __b = (__vector unsigned short)vec_splats (__B);
!   __c = vec_avg (__a, __b);
!   return (__m64) ((__vector long long) __c)[0];
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
*************** _m_pavgw (__m64 __A, __m64 __B)
*** 1746,1771 ****
  extern __inline    __m64    __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sad_pu8 (__m64  __A, __m64  __B)
  {
!   __vector unsigned char a, b;
!   __vector unsigned char vmin, vmax, vabsdiff;
!   __vector signed int vsum;
!   const __vector unsigned int zero =
      { 0, 0, 0, 0 };
!   __m64_union result = {0};
  
!   a = (__vector unsigned char) (__vector unsigned long long) { 0UL, __A };
!   b = (__vector unsigned char) (__vector unsigned long long) { 0UL, __B };
!   vmin = vec_min (a, b);
!   vmax = vec_max (a, b);
!   vabsdiff = vec_sub (vmax, vmin);
    /* Sum four groups of bytes into integers.  */
!   vsum = (__vector signed int) vec_sum4s (vabsdiff, zero);
    /* Sum across four integers with integer result.  */
!   vsum = vec_sums (vsum, (__vector signed int) zero);
    /* The sum is in the right most 32-bits of the vector result.
       Transfer to a GPR and truncate to 16 bits.  */
!   result.as_short[0] = vsum[3];
!   return result.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1745,1770 ----
  extern __inline    __m64    __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_sad_pu8 (__m64  __A, __m64  __B)
  {
!   __vector unsigned char __a, __b;
!   __vector unsigned char __vmin, __vmax, __vabsdiff;
!   __vector signed int __vsum;
!   const __vector unsigned int __zero =
      { 0, 0, 0, 0 };
!   __m64_union __result = {0};
  
!   __a = (__vector unsigned char) (__vector unsigned long long) { 0UL, __A };
!   __b = (__vector unsigned char) (__vector unsigned long long) { 0UL, __B };
!   __vmin = vec_min (__a, __b);
!   __vmax = vec_max (__a, __b);
!   __vabsdiff = vec_sub (__vmax, __vmin);
    /* Sum four groups of bytes into integers.  */
!   __vsum = (__vector signed int) vec_sum4s (__vabsdiff, __zero);
    /* Sum across four integers with integer result.  */
!   __vsum = vec_sums (__vsum, (__vector signed int) __zero);
    /* The sum is in the right most 32-bits of the vector result.
       Transfer to a GPR and truncate to 16 bits.  */
!   __result.as_short[0] = __vsum[3];
!   return __result.as_m64;
  }
  
  extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-10.3.0/gcc/config/s390/s390.md gcc-10.4.0/gcc/config/s390/s390.md
*** gcc-10.3.0/gcc/config/s390/s390.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/s390/s390.md	Tue Jun 28 08:54:27 2022
***************
*** 973,979 ****
  	(match_operand:GPR 2 "memory_operand"))
     (set (reg CC_REGNUM)
  	(compare (match_dup 0) (match_operand:GPR 1 "const0_operand")))]
!   "s390_match_ccmode(insn, CCSmode) && TARGET_EXTIMM
     && GENERAL_REG_P (operands[0])
     && satisfies_constraint_T (operands[2])
     && !contains_constant_pool_address_p (operands[2])"
--- 973,979 ----
  	(match_operand:GPR 2 "memory_operand"))
     (set (reg CC_REGNUM)
  	(compare (match_dup 0) (match_operand:GPR 1 "const0_operand")))]
!   "s390_match_ccmode (peep2_next_insn (1), CCSmode) && TARGET_EXTIMM
     && GENERAL_REG_P (operands[0])
     && satisfies_constraint_T (operands[2])
     && !contains_constant_pool_address_p (operands[2])"
***************
*** 9474,9480 ****
  (define_insn "*cmp_and_trap_unsigned_int<mode>"
    [(trap_if (match_operator 0 "s390_unsigned_integer_comparison"
  	       [(match_operand:GPR 1 "register_operand" "d,d,d")
! 		(match_operand:GPR 2 "general_operand"  "d,D,T")])
  	    (const_int 0))]
    "TARGET_Z10"
    "@
--- 9474,9480 ----
  (define_insn "*cmp_and_trap_unsigned_int<mode>"
    [(trap_if (match_operator 0 "s390_unsigned_integer_comparison"
  	       [(match_operand:GPR 1 "register_operand" "d,d,d")
! 		(match_operand:GPR 2 "general_operand"  "d,D,S")])
  	    (const_int 0))]
    "TARGET_Z10"
    "@
diff -Nrcpad gcc-10.3.0/gcc/config/s390/vecintrin.h gcc-10.4.0/gcc/config/s390/vecintrin.h
*** gcc-10.3.0/gcc/config/s390/vecintrin.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/s390/vecintrin.h	Tue Jun 28 08:54:27 2022
*************** __lcbb(const void *ptr, int bndry)
*** 109,116 ****
  #define vec_rint(X)   __builtin_s390_vfi((X), 0, 0)
  #define vec_roundc(X) __builtin_s390_vfi((X), 4, 0)
  #define vec_round(X)  __builtin_s390_vfi((X), 4, 4)
! #define vec_doublee(X) __builtin_s390_vfll((X))
! #define vec_floate(X) __builtin_s390_vflr((X), 0, 0)
  #define vec_load_len_r(X,L)				\
    (__vector unsigned char)__builtin_s390_vlrlr((L),(X))
  #define vec_store_len_r(X,Y,L) \
--- 109,116 ----
  #define vec_rint(X)   __builtin_s390_vfi((X), 0, 0)
  #define vec_roundc(X) __builtin_s390_vfi((X), 4, 0)
  #define vec_round(X)  __builtin_s390_vfi((X), 4, 4)
! #define vec_doublee(X) __builtin_s390_vflls((X))
! #define vec_floate(X) __builtin_s390_vflrd((X), 0, 0)
  #define vec_load_len_r(X,L)				\
    (__vector unsigned char)__builtin_s390_vlrlr((L),(X))
  #define vec_store_len_r(X,Y,L) \
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/leon5.md gcc-10.4.0/gcc/config/sparc/leon5.md
*** gcc-10.3.0/gcc/config/sparc/leon5.md	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/config/sparc/leon5.md	Tue Jun 28 08:54:27 2022
***************
*** 0 ****
--- 1,103 ----
+ ;; Scheduling description for LEON5.
+ ;;   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/>.
+ 
+ 
+ ;; The LEON5 can often dual issue instructions from the same 64-bit aligned
+ ;; double word if there are no data dependencies.
+ ;;
+ ;; Avoid scheduling load/store, FPU, and multiply instructions back to
+ ;; back, regardless of data dependencies.
+ ;;
+ ;; Push comparisons away from the associated branch instruction.
+ ;;
+ ;; Avoid scheduling ALU instructions with data dependencies back to back.
+ ;;
+ ;; Schedule three instructions between load and dependent instruction.
+ 
+ (define_automaton "leon5")
+ 
+ (define_cpu_unit "leon5_memory" "leon5")
+ (define_cpu_unit "leon5_mul" "leon5")
+ (define_cpu_unit "grfpu_d" "grfpu")
+ (define_cpu_unit "grfpu_s" "grfpu")
+ 
+ (define_insn_reservation "leon5_load" 4
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "load,sload"))
+   "leon5_memory * 2, nothing * 2")
+ 
+ (define_insn_reservation "leon5_fpload" 2
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fpload"))
+   "leon5_memory * 2 + grfpu_alu * 2")
+ 
+ (define_insn_reservation "leon5_store" 2
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "store"))
+   "leon5_memory * 2")
+ 
+ (define_insn_reservation "leon5_fpstore" 2
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fpstore"))
+   "leon5_memory * 2 + grfpu_alu * 2")
+ 
+ (define_insn_reservation "leon5_ialu" 2
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "ialu, shift, ialuX"))
+   "nothing * 2")
+ 
+ (define_insn_reservation "leon5_compare" 5
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "compare"))
+   "nothing * 5")
+ 
+ (define_insn_reservation "leon5_imul" 4
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "imul"))
+   "leon5_mul * 2, nothing * 2")
+ 
+ (define_insn_reservation "leon5_idiv" 35
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "imul"))
+   "nothing * 35")
+ 
+ (define_insn_reservation "leon5_fp_alu" 5
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fp,fpcmp,fpmul,fpmove"))
+   "grfpu_alu * 2, nothing*3")
+ 
+ (define_insn_reservation "leon5_fp_divs" 17
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fpdivs"))
+   "grfpu_alu * 2 + grfpu_d*16, nothing")
+ 
+ (define_insn_reservation "leon5_fp_divd" 18
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fpdivd"))
+   "grfpu_alu * 2 + grfpu_d*17, nothing")
+ 
+ (define_insn_reservation "leon5_fp_sqrts" 25
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fpsqrts"))
+   "grfpu_alu * 2 + grfpu_s*24, nothing")
+ 
+ (define_insn_reservation "leon5_fp_sqrtd" 26
+   (and (eq_attr "cpu" "leon5")
+   (eq_attr "type" "fpsqrtd"))
+   "grfpu_alu * 2 + grfpu_s*25, nothing")
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/sparc-modes.def gcc-10.4.0/gcc/config/sparc/sparc-modes.def
*** gcc-10.3.0/gcc/config/sparc/sparc-modes.def	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/sparc/sparc-modes.def	Tue Jun 28 08:54:27 2022
*************** along with GCC; see the file COPYING3.
*** 23,28 ****
--- 23,31 ----
  /* 128-bit floating point */
  FLOAT_MODE (TF, 16, ieee_quad_format);
  
+ /* We need a 32-byte mode to return structures in the 64-bit ABI.  */
+ INT_MODE (OI, 32);
+ 
  /* Add any extra modes needed to represent the condition code.
  
     We have a CCNZ mode which is used for implicit comparisons with zero when
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/sparc-opts.h gcc-10.4.0/gcc/config/sparc/sparc-opts.h
*** gcc-10.3.0/gcc/config/sparc/sparc-opts.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/sparc/sparc-opts.h	Tue Jun 28 08:54:27 2022
*************** enum sparc_processor_type {
*** 31,36 ****
--- 31,37 ----
    PROCESSOR_HYPERSPARC,
    PROCESSOR_LEON,
    PROCESSOR_LEON3,
+   PROCESSOR_LEON5,
    PROCESSOR_LEON3V7,
    PROCESSOR_SPARCLITE,
    PROCESSOR_F930,
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/sparc.c gcc-10.4.0/gcc/config/sparc/sparc.c
*** gcc-10.3.0/gcc/config/sparc/sparc.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/sparc/sparc.c	Tue Jun 28 08:54:27 2022
*************** struct processor_costs leon3_costs = {
*** 270,275 ****
--- 270,300 ----
  };
  
  static const
+ struct processor_costs leon5_costs = {
+   COSTS_N_INSNS (1), /* int load */
+   COSTS_N_INSNS (1), /* int signed load */
+   COSTS_N_INSNS (1), /* int zeroed load */
+   COSTS_N_INSNS (1), /* float load */
+   COSTS_N_INSNS (1), /* fmov, fneg, fabs */
+   COSTS_N_INSNS (1), /* fadd, fsub */
+   COSTS_N_INSNS (1), /* fcmp */
+   COSTS_N_INSNS (1), /* fmov, fmovr */
+   COSTS_N_INSNS (1), /* fmul */
+   COSTS_N_INSNS (17), /* fdivs */
+   COSTS_N_INSNS (18), /* fdivd */
+   COSTS_N_INSNS (25), /* fsqrts */
+   COSTS_N_INSNS (26), /* fsqrtd */
+   COSTS_N_INSNS (4), /* imul */
+   COSTS_N_INSNS (4), /* imulX */
+   0, /* imul bit factor */
+   COSTS_N_INSNS (35), /* idiv */
+   COSTS_N_INSNS (35), /* idivX */
+   COSTS_N_INSNS (1), /* movcc/movr */
+   0, /* shift penalty */
+   3 /* branch cost */
+ };
+ 
+ static const
  struct processor_costs sparclet_costs = {
    COSTS_N_INSNS (3), /* int load */
    COSTS_N_INSNS (3), /* int signed load */
*************** static int function_arg_slotno (const CU
*** 594,599 ****
--- 619,625 ----
  
  static int supersparc_adjust_cost (rtx_insn *, int, rtx_insn *, int);
  static int hypersparc_adjust_cost (rtx_insn *, int, rtx_insn *, int);
+ static int leon5_adjust_cost (rtx_insn *, int, rtx_insn *, int);
  
  static void sparc_emit_set_const32 (rtx, rtx);
  static void sparc_emit_set_const64 (rtx, rtx);
*************** atomic_insn_for_leon3_p (rtx_insn *insn)
*** 1049,1054 ****
--- 1075,1117 ----
      }
  }
  
+ /* True if INSN is a store instruction.  */
+ 
+ static bool
+ store_insn_p (rtx_insn *insn)
+ {
+   if (GET_CODE (PATTERN (insn)) != SET)
+     return false;
+ 
+   switch (get_attr_type (insn))
+     {
+     case TYPE_STORE:
+     case TYPE_FPSTORE:
+       return true;
+     default:
+       return false;
+     }
+ }
+ 
+ /* True if INSN is a load instruction.  */
+ 
+ static bool
+ load_insn_p (rtx_insn *insn)
+ {
+   if (GET_CODE (PATTERN (insn)) != SET)
+     return false;
+ 
+   switch (get_attr_type (insn))
+     {
+     case TYPE_LOAD:
+     case TYPE_SLOAD:
+     case TYPE_FPLOAD:
+       return true;
+     default:
+       return false;
+     }
+ }
+ 
  /* We use a machine specific pass to enable workarounds for errata.
  
     We need to have the (essentially) final form of the insn stream in order
*************** atomic_insn_for_leon3_p (rtx_insn *insn)
*** 1061,1070 ****
--- 1124,1152 ----
     && GET_CODE (PATTERN (INSN)) != USE					\
     && GET_CODE (PATTERN (INSN)) != CLOBBER)
  
+ rtx_insn *
+ next_active_non_empty_insn (rtx_insn *insn)
+ {
+   insn = next_active_insn (insn);
+ 
+   while (insn
+ 	 && (GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE
+ 	     || GET_CODE (PATTERN (insn)) == ASM_INPUT
+ 	     || (USEFUL_INSN_P (insn)
+ 		 && (asm_noperands (PATTERN (insn)) >= 0)
+ 		 && !strcmp (decode_asm_operands (PATTERN (insn),
+ 						  NULL, NULL, NULL,
+ 						  NULL, NULL), ""))))
+     insn = next_active_insn (insn);
+ 
+   return insn;
+ }
+ 
  static unsigned int
  sparc_do_work_around_errata (void)
  {
    rtx_insn *insn, *next;
+   bool find_first_useful = true;
  
    /* Force all instructions to be split into their final form.  */
    split_all_insns_noflow ();
*************** sparc_do_work_around_errata (void)
*** 1089,1094 ****
--- 1171,1186 ----
        else
  	jump = NULL;
  
+       /* Do not begin function with atomic instruction.  */
+       if (sparc_fix_ut700
+ 	  && find_first_useful
+ 	  && USEFUL_INSN_P (insn))
+ 	{
+ 	  find_first_useful = false;
+ 	  if (atomic_insn_for_leon3_p (insn))
+ 	    emit_insn_before (gen_nop (), insn);
+ 	}
+ 
        /* Place a NOP at the branch target of an integer branch if it is a
  	 floating-point operation or a floating-point branch.  */
        if (sparc_fix_gr712rc
*************** sparc_do_work_around_errata (void)
*** 1109,1117 ****
  	 instruction at branch target.  */
        if (sparc_fix_ut700
  	  && NONJUMP_INSN_P (insn)
! 	  && (set = single_set (insn)) != NULL_RTX
! 	  && mem_ref (SET_SRC (set))
! 	  && REG_P (SET_DEST (set)))
  	{
  	  if (jump && jump_to_label_p (jump))
  	    {
--- 1201,1207 ----
  	 instruction at branch target.  */
        if (sparc_fix_ut700
  	  && NONJUMP_INSN_P (insn)
! 	  && load_insn_p (insn))
  	{
  	  if (jump && jump_to_label_p (jump))
  	    {
*************** sparc_do_work_around_errata (void)
*** 1120,1126 ****
  		emit_insn_before (gen_nop (), target);
  	    }
  
! 	  next = next_active_insn (insn);
  	  if (!next)
  	    break;
  
--- 1210,1216 ----
  		emit_insn_before (gen_nop (), target);
  	    }
  
! 	  next = next_active_non_empty_insn (insn);
  	  if (!next)
  	    break;
  
*************** sparc_do_work_around_errata (void)
*** 1216,1245 ****
        if (sparc_fix_b2bst
  	  && NONJUMP_INSN_P (insn)
  	  && (set = single_set (insn)) != NULL_RTX
! 	  && MEM_P (SET_DEST (set)))
  	{
  	  /* Sequence B begins with a double-word store.  */
  	  bool seq_b = GET_MODE_SIZE (GET_MODE (SET_DEST (set))) == 8;
  	  rtx_insn *after;
  	  int i;
  
! 	  next = next_active_insn (insn);
  	  if (!next)
  	    break;
  
  	  for (after = next, i = 0; i < 2; i++)
  	    {
- 	      /* Skip empty assembly statements.  */
- 	      if ((GET_CODE (PATTERN (after)) == UNSPEC_VOLATILE)
- 		  || (USEFUL_INSN_P (after)
- 		      && (asm_noperands (PATTERN (after))>=0)
- 		      && !strcmp (decode_asm_operands (PATTERN (after),
- 						       NULL, NULL, NULL,
- 						       NULL, NULL), "")))
- 		after = next_active_insn (after);
- 	      if (!after)
- 		break;
- 
  	      /* If the insn is a branch, then it cannot be problematic.  */
  	      if (!NONJUMP_INSN_P (after)
  		  || GET_CODE (PATTERN (after)) == SEQUENCE)
--- 1306,1324 ----
        if (sparc_fix_b2bst
  	  && NONJUMP_INSN_P (insn)
  	  && (set = single_set (insn)) != NULL_RTX
! 	  && store_insn_p (insn))
  	{
  	  /* Sequence B begins with a double-word store.  */
  	  bool seq_b = GET_MODE_SIZE (GET_MODE (SET_DEST (set))) == 8;
  	  rtx_insn *after;
  	  int i;
  
! 	  next = next_active_non_empty_insn (insn);
  	  if (!next)
  	    break;
  
  	  for (after = next, i = 0; i < 2; i++)
  	    {
  	      /* If the insn is a branch, then it cannot be problematic.  */
  	      if (!NONJUMP_INSN_P (after)
  		  || GET_CODE (PATTERN (after)) == SEQUENCE)
*************** sparc_do_work_around_errata (void)
*** 1249,1256 ****
  	      if (seq_b)
  		{
  		  /* Add NOP if followed by a store.  */
! 		  if ((set = single_set (after)) != NULL_RTX
! 		      && MEM_P (SET_DEST (set)))
  		    insert_nop = true;
  
  		  /* Otherwise it is ok.  */
--- 1328,1334 ----
  	      if (seq_b)
  		{
  		  /* Add NOP if followed by a store.  */
! 		  if (store_insn_p (after))
  		    insert_nop = true;
  
  		  /* Otherwise it is ok.  */
*************** sparc_do_work_around_errata (void)
*** 1265,1279 ****
  		      && (MEM_P (SET_DEST (set)) || mem_ref (SET_SRC (set))))
  		    break;
  
! 		  after = next_active_insn (after);
  		  if (!after)
  		    break;
  		}
  
  	      /* Add NOP if third instruction is a store.  */
  	      if (i == 1
! 		  && (set = single_set (after)) != NULL_RTX
! 		  && MEM_P (SET_DEST (set)))
  		insert_nop = true;
  	    }
  	}
--- 1343,1356 ----
  		      && (MEM_P (SET_DEST (set)) || mem_ref (SET_SRC (set))))
  		    break;
  
! 		  after = next_active_non_empty_insn (after);
  		  if (!after)
  		    break;
  		}
  
  	      /* Add NOP if third instruction is a store.  */
  	      if (i == 1
! 		  && store_insn_p (after))
  		insert_nop = true;
  	    }
  	}
*************** dump_target_flag_bits (const int flags)
*** 1600,1605 ****
--- 1677,1686 ----
      fprintf (stderr, "CBCOND ");
    if (flags & MASK_DEPRECATED_V8_INSNS)
      fprintf (stderr, "DEPRECATED_V8_INSNS ");
+   if (flags & MASK_LEON)
+     fprintf (stderr, "LEON ");
+   if (flags & MASK_LEON3)
+     fprintf (stderr, "LEON3 ");
    if (flags & MASK_SPARCLET)
      fprintf (stderr, "SPARCLET ");
    if (flags & MASK_SPARCLITE)
*************** sparc_option_override (void)
*** 1636,1641 ****
--- 1717,1723 ----
      { TARGET_CPU_hypersparc, PROCESSOR_HYPERSPARC },
      { TARGET_CPU_leon, PROCESSOR_LEON },
      { TARGET_CPU_leon3, PROCESSOR_LEON3 },
+     { TARGET_CPU_leon5, PROCESSOR_LEON5 },
      { TARGET_CPU_leon3v7, PROCESSOR_LEON3V7 },
      { TARGET_CPU_sparclite, PROCESSOR_F930 },
      { TARGET_CPU_sparclite86x, PROCESSOR_SPARCLITE86X },
*************** sparc_option_override (void)
*** 1667,1672 ****
--- 1749,1755 ----
      { "hypersparc",	MASK_ISA, MASK_V8 },
      { "leon",		MASK_ISA|MASK_FSMULD, MASK_V8|MASK_LEON },
      { "leon3",		MASK_ISA, MASK_V8|MASK_LEON3 },
+     { "leon5",		MASK_ISA, MASK_V8|MASK_LEON3 },
      { "leon3v7",	MASK_ISA, MASK_LEON3 },
      { "sparclite",	MASK_ISA, MASK_SPARCLITE },
      /* The Fujitsu MB86930 is the original sparclite chip, with no FPU.  */
*************** sparc_option_override (void)
*** 1977,1982 ****
--- 2060,2068 ----
      case PROCESSOR_LEON3V7:
        sparc_costs = &leon3_costs;
        break;
+     case PROCESSOR_LEON5:
+       sparc_costs = &leon5_costs;
+       break;
      case PROCESSOR_SPARCLET:
      case PROCESSOR_TSC701:
        sparc_costs = &sparclet_costs;
*************** epilogue_renumber (register rtx *where,
*** 8866,8873 ****
        if (REGNO (*where) >= 8 && REGNO (*where) < 24)      /* oX or lX */
  	return 1;
        if (! test && REGNO (*where) >= 24 && REGNO (*where) < 32)
! 	*where = gen_rtx_REG (GET_MODE (*where), OUTGOING_REGNO (REGNO(*where)));
!       /* fallthrough */
      case SCRATCH:
      case CC0:
      case PC:
--- 8952,8971 ----
        if (REGNO (*where) >= 8 && REGNO (*where) < 24)      /* oX or lX */
  	return 1;
        if (! test && REGNO (*where) >= 24 && REGNO (*where) < 32)
! 	{
! 	  if (ORIGINAL_REGNO (*where))
! 	    {
! 	      rtx n = gen_raw_REG (GET_MODE (*where),
! 				   OUTGOING_REGNO (REGNO (*where)));
! 	      ORIGINAL_REGNO (n) = ORIGINAL_REGNO (*where);
! 	      *where = n;
! 	    }
! 	  else
! 	    *where = gen_rtx_REG (GET_MODE (*where),
! 				  OUTGOING_REGNO (REGNO (*where)));
! 	}
!       return 0;
! 
      case SCRATCH:
      case CC0:
      case PC:
*************** hypersparc_adjust_cost (rtx_insn *insn,
*** 10158,10168 ****
--- 10256,10319 ----
  }
  
  static int
+ leon5_adjust_cost (rtx_insn *insn, int dtype, rtx_insn *dep_insn,
+ 		   int cost)
+ {
+   enum attr_type insn_type, dep_type;
+   rtx pat = PATTERN (insn);
+   rtx dep_pat = PATTERN (dep_insn);
+ 
+   if (recog_memoized (insn) < 0 || recog_memoized (dep_insn) < 0)
+     return cost;
+ 
+   insn_type = get_attr_type (insn);
+   dep_type = get_attr_type (dep_insn);
+ 
+   switch (dtype)
+     {
+     case REG_DEP_TRUE:
+       /* Data dependency; DEP_INSN writes a register that INSN reads some
+ 	 cycles later.  */
+ 
+       switch (insn_type)
+ 	{
+ 	case TYPE_STORE:
+ 	  /* Try to schedule three instructions between the store and
+ 	     the ALU instruction that generated the data.  */
+ 	  if (dep_type == TYPE_IALU || dep_type == TYPE_SHIFT)
+ 	    {
+ 	      if (GET_CODE (pat) != SET || GET_CODE (dep_pat) != SET)
+ 		break;
+ 
+ 	      if (rtx_equal_p (SET_DEST (dep_pat), SET_SRC (pat)))
+ 		return 4;
+ 	    }
+ 	  break;
+ 	default:
+ 	  break;
+ 	}
+       break;
+     case REG_DEP_ANTI:
+       /* Penalize anti-dependencies for FPU instructions.  */
+       if (fpop_insn_p (insn) || insn_type == TYPE_FPLOAD)
+ 	return 4;
+       break;
+     default:
+       break;
+     }
+ 
+   return cost;
+ }
+ 
+ static int
  sparc_adjust_cost (rtx_insn *insn, int dep_type, rtx_insn *dep, int cost,
  		   unsigned int)
  {
    switch (sparc_cpu)
      {
+     case PROCESSOR_LEON5:
+       cost = leon5_adjust_cost (insn, dep_type, dep, cost);
+       break;
      case PROCESSOR_SUPERSPARC:
        cost = supersparc_adjust_cost (insn, dep_type, dep, cost);
        break;
*************** sparc_vectorize_vec_perm_const (machine_
*** 12928,12936 ****
    if (!TARGET_VIS2)
      return false;
  
!   /* All permutes are supported.  */
    if (!target)
!     return true;
  
    /* Force target-independent code to convert constant permutations on other
       modes down to V8QI.  Rely on this to avoid the complexity of the byte
--- 13079,13087 ----
    if (!TARGET_VIS2)
      return false;
  
!   /* All 8-byte permutes are supported.  */
    if (!target)
!     return GET_MODE_SIZE (vmode) == 8;
  
    /* Force target-independent code to convert constant permutations on other
       modes down to V8QI.  Rely on this to avoid the complexity of the byte
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/sparc.h gcc-10.4.0/gcc/config/sparc/sparc.h
*** gcc-10.3.0/gcc/config/sparc/sparc.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/sparc/sparc.h	Tue Jun 28 08:54:27 2022
*************** along with GCC; see the file COPYING3.
*** 119,139 ****
  #define TARGET_CPU_leon		4
  #define TARGET_CPU_leon3	5
  #define TARGET_CPU_leon3v7	6
! #define TARGET_CPU_sparclite	7
! #define TARGET_CPU_f930		7       /* alias */
! #define TARGET_CPU_f934		7       /* alias */
! #define TARGET_CPU_sparclite86x	8
! #define TARGET_CPU_sparclet	9
! #define TARGET_CPU_tsc701	9       /* alias */
! #define TARGET_CPU_v9		10	/* generic v9 implementation */
! #define TARGET_CPU_sparcv9	10	/* alias */
! #define TARGET_CPU_sparc64	10	/* alias */
! #define TARGET_CPU_ultrasparc	11
! #define TARGET_CPU_ultrasparc3	12
! #define TARGET_CPU_niagara	13
! #define TARGET_CPU_niagara2	14
! #define TARGET_CPU_niagara3	15
! #define TARGET_CPU_niagara4	16
  #define TARGET_CPU_niagara7	19
  #define TARGET_CPU_m8		20
  
--- 119,140 ----
  #define TARGET_CPU_leon		4
  #define TARGET_CPU_leon3	5
  #define TARGET_CPU_leon3v7	6
! #define TARGET_CPU_leon5	7
! #define TARGET_CPU_sparclite	8
! #define TARGET_CPU_f930		8       /* alias */
! #define TARGET_CPU_f934		8       /* alias */
! #define TARGET_CPU_sparclite86x	9
! #define TARGET_CPU_sparclet	10
! #define TARGET_CPU_tsc701	10       /* alias */
! #define TARGET_CPU_v9		11	/* generic v9 implementation */
! #define TARGET_CPU_sparcv9	11	/* alias */
! #define TARGET_CPU_sparc64	11	/* alias */
! #define TARGET_CPU_ultrasparc	12
! #define TARGET_CPU_ultrasparc3	13
! #define TARGET_CPU_niagara	14
! #define TARGET_CPU_niagara2	15
! #define TARGET_CPU_niagara3	16
! #define TARGET_CPU_niagara4	17
  #define TARGET_CPU_niagara7	19
  #define TARGET_CPU_m8		20
  
*************** along with GCC; see the file COPYING3.
*** 228,234 ****
  #endif
  
  #if TARGET_CPU_DEFAULT == TARGET_CPU_leon \
!  || TARGET_CPU_DEFAULT == TARGET_CPU_leon3
  #define CPP_CPU32_DEFAULT_SPEC "-D__leon__ -D__sparc_v8__"
  #define ASM_CPU32_DEFAULT_SPEC AS_LEON_FLAG
  #endif
--- 229,236 ----
  #endif
  
  #if TARGET_CPU_DEFAULT == TARGET_CPU_leon \
!  || TARGET_CPU_DEFAULT == TARGET_CPU_leon3 \
!  || TARGET_CPU_DEFAULT == TARGET_CPU_leon5
  #define CPP_CPU32_DEFAULT_SPEC "-D__leon__ -D__sparc_v8__"
  #define ASM_CPU32_DEFAULT_SPEC AS_LEON_FLAG
  #endif
*************** along with GCC; see the file COPYING3.
*** 284,289 ****
--- 286,292 ----
  %{mcpu=hypersparc:-D__hypersparc__ -D__sparc_v8__} \
  %{mcpu=leon:-D__leon__ -D__sparc_v8__} \
  %{mcpu=leon3:-D__leon__ -D__sparc_v8__} \
+ %{mcpu=leon5:-D__leon__ -D__sparc_v8__} \
  %{mcpu=leon3v7:-D__leon__} \
  %{mcpu=v9:-D__sparc_v9__} \
  %{mcpu=ultrasparc:-D__sparc_v9__} \
*************** along with GCC; see the file COPYING3.
*** 336,341 ****
--- 339,345 ----
  %{mcpu=hypersparc:-Av8} \
  %{mcpu=leon:" AS_LEON_FLAG "} \
  %{mcpu=leon3:" AS_LEON_FLAG "} \
+ %{mcpu=leon5:" AS_LEON_FLAG "} \
  %{mcpu=leon3v7:" AS_LEONV7_FLAG "} \
  %{mv8plus:-Av8plus} \
  %{mcpu=v9:-Av9} \
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/sparc.md gcc-10.4.0/gcc/config/sparc/sparc.md
*** gcc-10.3.0/gcc/config/sparc/sparc.md	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/sparc/sparc.md	Tue Jun 28 08:54:27 2022
***************
*** 233,238 ****
--- 233,239 ----
     hypersparc,
     leon,
     leon3,
+    leon5,
     leon3v7,
     sparclite,
     f930,
***************
*** 638,643 ****
--- 639,645 ----
  (include "supersparc.md")
  (include "hypersparc.md")
  (include "leon.md")
+ (include "leon5.md")
  (include "sparclet.md")
  (include "ultra1_2.md")
  (include "ultra3.md")
*************** visl")
*** 8353,8361 ****
  	(unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET))
     (set (match_scratch:SI 2 "=&r") (const_int 0))]
    "TARGET_ARCH32"
!   "ld\t%1, %2\;st\t%2, %0\;mov\t0, %2"
    [(set_attr "type" "multi")
!    (set_attr "length" "3")])
  
  (define_insn "stack_protect_setdi"
    [(set (match_operand:DI 0 "memory_operand" "=m")
--- 8355,8369 ----
  	(unspec:SI [(match_operand:SI 1 "memory_operand" "m")] UNSPEC_SP_SET))
     (set (match_scratch:SI 2 "=&r") (const_int 0))]
    "TARGET_ARCH32"
! {
!   if (sparc_fix_b2bst)
!     return "ld\t%1, %2\;st\t%2, %0\;mov\t0, %2\;nop";
!   else
!     return "ld\t%1, %2\;st\t%2, %0\;mov\t0, %2";
! }
    [(set_attr "type" "multi")
!    (set (attr "length") (if_then_else (eq_attr "fix_b2bst" "true")
! 		      (const_int 4) (const_int 3)))])
  
  (define_insn "stack_protect_setdi"
    [(set (match_operand:DI 0 "memory_operand" "=m")
diff -Nrcpad gcc-10.3.0/gcc/config/sparc/sparc.opt gcc-10.4.0/gcc/config/sparc/sparc.opt
*** gcc-10.3.0/gcc/config/sparc/sparc.opt	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/sparc/sparc.opt	Tue Jun 28 08:54:27 2022
*************** EnumValue
*** 176,181 ****
--- 176,184 ----
  Enum(sparc_processor) String(leon3v7) Value(PROCESSOR_LEON3V7)
  
  EnumValue
+ Enum(sparc_processor) String(leon5) Value(PROCESSOR_LEON5)
+ 
+ EnumValue
  Enum(sparc_processor) String(sparclite) Value(PROCESSOR_SPARCLITE)
  
  EnumValue
diff -Nrcpad gcc-10.3.0/gcc/config/tilepro/gen-mul-tables.cc gcc-10.4.0/gcc/config/tilepro/gen-mul-tables.cc
*** gcc-10.3.0/gcc/config/tilepro/gen-mul-tables.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config/tilepro/gen-mul-tables.cc	Tue Jun 28 08:54:27 2022
*************** tilegx_emit (long long multiplier, int n
*** 1190,1200 ****
      long long next_pow10;
  
      while (((j * 10) < abs_multiplier)
! 	   && (j < (INTMAX_MAX / 10)))
        j = j * 10;
  
      prev_pow10 = j;
!     next_pow10 = (j > (INTMAX_MAX / 10)) ? 0 : j * 10;
  
      if ((abs_multiplier - prev_pow10 <= 100)
  	|| (next_pow10
--- 1190,1200 ----
      long long next_pow10;
  
      while (((j * 10) < abs_multiplier)
! 	   && (j < (j * 10)))
        j = j * 10;
  
      prev_pow10 = j;
!     next_pow10 = j * 10;
  
      if ((abs_multiplier - prev_pow10 <= 100)
  	|| (next_pow10
diff -Nrcpad gcc-10.3.0/gcc/config.gcc gcc-10.4.0/gcc/config.gcc
*** gcc-10.3.0/gcc/config.gcc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/config.gcc	Tue Jun 28 08:54:27 2022
*************** case ${target} in
*** 691,699 ****
        *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
          macos_min=`expr $darwin_maj - 4`
          ;;
!       *-*-darwin20*)
!         # Darwin 20 corresponds to macOS 11.
!         macos_maj=11
          def_ld64=609.0
          ;;
        *-*-darwin)
--- 691,699 ----
        *-*-darwin[4-9]* | *-*-darwin1[0-9]*)
          macos_min=`expr $darwin_maj - 4`
          ;;
!       *-*-darwin2*)
!         # Darwin 20 corresponds to macOS 11, Darwin 21 to macOS 12.
!         macos_maj=`expr $darwin_maj - 9`
          def_ld64=609.0
          ;;
        *-*-darwin)
*************** hppa[12]*-*-hpux11*)
*** 1869,1875 ****
  		dwarf2=no
  	fi
  	;;
! i[34567]86-*-darwin1[89]*)
  	echo "Error: 32bit target is not supported after Darwin17" 1>&2
  	;;
  i[34567]86-*-darwin*)
--- 1869,1875 ----
  		dwarf2=no
  	fi
  	;;
! i[34567]86-*-darwin1[89]* | i[34567]86-*-darwin2*)
  	echo "Error: 32bit target is not supported after Darwin17" 1>&2
  	;;
  i[34567]86-*-darwin*)
*************** i[34567]86-*-darwin*)
*** 1879,1885 ****
  	tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
  	tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
  	;;
! x86_64-*-darwin1[89]* | x86_64-*-darwin2[01]*)
  	# Only 64b from now
  	with_cpu=${with_cpu:-core2}
  	tmake_file="${tmake_file} t-slibgcc"
--- 1879,1885 ----
  	tmake_file="${tmake_file} ${cpu_type}/t-darwin32-biarch t-slibgcc"
  	tm_file="${tm_file} ${cpu_type}/darwin32-biarch.h"
  	;;
! x86_64-*-darwin1[89]* | x86_64-*-darwin2*)
  	# Only 64b from now
  	with_cpu=${with_cpu:-core2}
  	tmake_file="${tmake_file} t-slibgcc"
diff -Nrcpad gcc-10.3.0/gcc/config.in gcc-10.4.0/gcc/config.in
*** gcc-10.3.0/gcc/config.in	Thu Apr  8 11:57:03 2021
--- gcc-10.4.0/gcc/config.in	Tue Jun 28 08:55:09 2022
***************
*** 55,60 ****
--- 55,66 ----
  #endif
  
  
+ /* Define to enable the use of a default debug linker. */
+ #ifndef USED_FOR_TARGET
+ #undef DEFAULT_DSYMUTIL
+ #endif
+ 
+ 
  /* Define to enable the use of a default linker. */
  #ifndef USED_FOR_TARGET
  #undef DEFAULT_LINKER
***************
*** 94,99 ****
--- 100,111 ----
  #endif
  
  
+ /* Define to the dsymutil version. */
+ #ifndef USED_FOR_TARGET
+ #undef DSYMUTIL_VERSION
+ #endif
+ 
+ 
  /* Define 0/1 if static analyzer feature is enabled. */
  #ifndef USED_FOR_TARGET
  #undef ENABLE_ANALYZER
***************
*** 570,575 ****
--- 582,594 ----
  #endif
  
  
+ /* Define if your Mac OS X assembler supports -mllvm -x86-pad-for-align=false.
+    */
+ #ifndef USED_FOR_TARGET
+ #undef HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN
+ #endif
+ 
+ 
  /* Define if your Mac OS X assembler supports the -mmacos-version-min option.
     */
  #ifndef USED_FOR_TARGET
diff -Nrcpad gcc-10.3.0/gcc/configure gcc-10.4.0/gcc/configure
*** gcc-10.3.0/gcc/configure	Thu Apr  8 11:57:03 2021
--- gcc-10.4.0/gcc/configure	Tue Jun 28 08:55:09 2022
*************** thin_archive_support
*** 719,724 ****
--- 719,726 ----
  ld_soname_option
  ld_version_script_option
  libgcc_visibility
+ ORIGINAL_DSYMUTIL_FOR_TARGET
+ gcc_cv_dsymutil
  gcc_cv_otool
  gcc_cv_readelf
  gcc_cv_objdump
*************** FGREP
*** 747,756 ****
  SED
  LIBTOOL
  collect2
- NO_PIE_FLAG_FOR_BUILD
- NO_PIE_CFLAGS_FOR_BUILD
- BUILD_NO_PIE_FLAG
- BUILD_NO_PIE_CFLAGS
  STMP_FIXINC
  BUILD_LDFLAGS
  BUILD_CXXFLAGS
--- 749,754 ----
*************** enable_generated_files_in_srcdir
*** 938,943 ****
--- 936,942 ----
  with_gnu_ld
  with_ld
  with_demangler_in_ld
+ with_dsymutil
  with_gnu_as
  with_as
  enable_largefile
*************** Optional Packages:
*** 1791,1796 ****
--- 1790,1797 ----
    --with-gnu-ld           arrange to work with GNU ld
    --with-ld               arrange to use the specified ld (full pathname)
    --with-demangler-in-ld  try to use demangler in GNU ld
+   --with-dsymutil         arrange to use the specified dsymutil (full
+                           pathname)
    --with-gnu-as           arrange to work with GNU as
    --with-as               arrange to use the specified as (full pathname)
    --with-stabs            arrange to use stabs instead of host debug format
*************** fi
*** 3765,3772 ****
  
  
  case $target in
!     *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
!     *) ld64_flag=no;;
  esac
  
  # With pre-defined ld
--- 3766,3779 ----
  
  
  case $target in
!     *darwin*)
! 	ld64_flag=yes # Darwin can only use a ld64-compatible linker.
! 	dsymutil_flag=yes # Darwin uses dsymutil to link debug.
! 	;;
!     *)
! 	ld64_flag=no
! 	dsymutil_flag=no
! 	;;
  esac
  
  # With pre-defined ld
*************** else
*** 3816,3821 ****
--- 3823,3862 ----
  fi
  
  
+ # Allow the user to specify a dsymutil executable (used on Darwin only, so far)
+ 
+ # Check whether --with-dsymutil was given.
+ if test "${with_dsymutil+set}" = set; then :
+   withval=$with_dsymutil; DEFAULT_DSYMUTIL="$with_dsymutil"
+ fi
+ 
+ 
+ dsymutil_vers=
+ if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
+   if test ! -x "$DEFAULT_DSYMUTIL"; then
+     as_fn_error $? "cannot execute: $DEFAULT_DSYMUTIL: check --with-dsymutil or env. var. DEFAULT_DSYMUTIL" "$LINENO" 5
+   else
+     if dsymutil_vers=`$DEFAULT_DSYMUTIL -v /dev/null 2>&1`; then
+       dsymutil_flag=yes
+     fi
+   fi
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define DEFAULT_DSYMUTIL "$DEFAULT_DSYMUTIL"
+ _ACEOF
+ 
+ fi
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a default dsymutil was specified" >&5
+ $as_echo_n "checking whether a default dsymutil was specified... " >&6; }
+ if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes ($DEFAULT_DSYMUTIL)" >&5
+ $as_echo "yes ($DEFAULT_DSYMUTIL)" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
  # ----------------------
  # Find default assembler
  # ----------------------
*************** BUILD_CXXFLAGS='$(ALL_CXXFLAGS)'
*** 12868,12891 ****
  BUILD_LDFLAGS='$(LDFLAGS)'
  STMP_FIXINC=stmp-fixinc
  
- BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)'
- BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)'
- 
  # And these apply if build != host, or we are generating coverage data
  if test x$build != x$host || test "x$coverage_flags" != x
  then
      BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
      BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
      BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
- 
-     NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
-     NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
-     BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
-     BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
  fi
  
- 
- 
  # Expand extra_headers to include complete path.
  # This substitutes for lots of t-* files.
  extra_headers_list=
--- 12909,12922 ----
*************** else
*** 19022,19028 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 19025 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 19053,19059 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 19056 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 19128,19134 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 19131 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 19159,19165 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 19162 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 23036,23041 ****
--- 23067,23137 ----
  $as_echo "$gcc_cv_otool" >&6; }
  fi
  
+ # Figure out the dsymutil we will use.
+ if ${gcc_cv_dsymutil+:} false; then :
+ 
+ else
+ 
+ if test -x "$DEFAULT_DSYMUTIL"; then
+     gcc_cv_dsymutil="$DEFAULT_DSYMUTIL"
+ elif test -x dsymutil$build_exeext; then
+     gcc_cv_dsymutil=./dsymutil$build_exeext
+ elif ( set dummy $DSYMUTIL_FOR_TARGET; test -x $2 ); then
+     gcc_cv_dsymutil=$DSYMUTIL_FOR_TARGET
+ elif ( set dummy $DSYMUTIL; test -x $2 ); then
+     gcc_cv_dsymutil=$DSYMUTIL
+ else
+     # Extract the first word of "$DSYMUTIL_FOR_TARGET", so it can be a program name with args.
+ set dummy $DSYMUTIL_FOR_TARGET; 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_path_gcc_cv_dsymutil+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   case $gcc_cv_dsymutil in
+   [\\/]* | ?:[\\/]*)
+   ac_cv_path_gcc_cv_dsymutil="$gcc_cv_dsymutil" # Let the user override the test with a path.
+   ;;
+   *)
+   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_path_gcc_cv_dsymutil="$as_dir/$ac_word$ac_exec_ext"
+     $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
+ 
+   ;;
+ esac
+ fi
+ gcc_cv_dsymutil=$ac_cv_path_gcc_cv_dsymutil
+ if test -n "$gcc_cv_dsymutil"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_dsymutil" >&5
+ $as_echo "$gcc_cv_dsymutil" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+ fi
+ fi
+ 
+ ORIGINAL_DSYMUTIL_FOR_TARGET=$gcc_cv_dsymutil
+ 
+ case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
+   ./dsymutil | ./dsymutil$build_exeext) ;;
+   *) ac_config_files="$ac_config_files dsymutil:exec-tool.in"
+  ;;
+ esac
+ 
  # Figure out what assembler alignment features are present.
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler flags" >&5
  $as_echo_n "checking assembler flags... " >&6; }
*************** $as_echo "$as_me: WARNING: LTO for $targ
*** 26421,26426 ****
--- 26517,26557 ----
  	fi
  	;;
      esac
+     case $target_os in
+        darwin2* | darwin19*)
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for llvm assembler x86-pad-for-align option" >&5
+ $as_echo_n "checking assembler for llvm assembler x86-pad-for-align option... " >&6; }
+ if ${gcc_cv_as_mllvm_x86_pad_for_align+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   gcc_cv_as_mllvm_x86_pad_for_align=no
+   if test x$gcc_cv_as != x; then
+     $as_echo '.text' > conftest.s
+     if { ac_try='$gcc_cv_as $gcc_cv_as_flags -mllvm -x86-pad-for-align=false -o conftest.o conftest.s >&5'
+   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+   (eval $ac_try) 2>&5
+   ac_status=$?
+   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+   test $ac_status = 0; }; }
+     then
+ 	gcc_cv_as_mllvm_x86_pad_for_align=yes
+     else
+       echo "configure: failed program was" >&5
+       cat conftest.s >&5
+     fi
+     rm -f conftest.o conftest.s
+   fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_mllvm_x86_pad_for_align" >&5
+ $as_echo "$gcc_cv_as_mllvm_x86_pad_for_align" >&6; }
+ if test $gcc_cv_as_mllvm_x86_pad_for_align = yes; then
+ 
+ $as_echo "#define HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN 1" >>confdefs.h
+ 
+ fi
+ 
+        ;;
+     esac
  
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for -xbrace_comment" >&5
  $as_echo_n "checking assembler for -xbrace_comment... " >&6; }
*************** _ACEOF
*** 29241,29246 ****
--- 29372,29471 ----
  
  fi
  
+ if test x"$dsymutil_flag" = x"yes"; then
+ 
+     # If the user specified a dsymutil path, then we will already have the
+     # version string, otherwise, pick it up.
+     if test x"$gcc_cv_dsymutil" = x; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: dsymutil is a required tool for this system, but not found" >&5
+ $as_echo "$as_me: WARNING: dsymutil is a required tool for this system, but not found" >&2;}
+         dsymutil_vers="tool unspecified"
+     elif test x"$dsymutil_vers" = x; then
+ 	dsymutil_vers=`$gcc_cv_dsymutil -v /dev/null 2>&1`
+     fi
+ 
+     dsymutil_temp=`echo $dsymutil_vers | sed 1q`
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking dsymutil version \"$dsymutil_temp\"" >&5
+ $as_echo_n "checking dsymutil version \"$dsymutil_temp\"... " >&6; }
+     if echo $dsymutil_temp | grep dwarfutils- > /dev/null; then
+       dsymutil_kind=DWARFUTILS
+       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*dwarfutils-\([0-9\.]*\).*/\1/'`
+     elif echo $dsymutil_temp | grep clang- > /dev/null; then
+       dsymutil_kind=CLANG
+       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*clang-\([0-9\.]*\).*/\1/'`
+     elif echo $dsymutil_temp | grep 'LLVM version ' > /dev/null; then
+       dsymutil_kind=LLVM
+       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*LLVM\ version\ \([0-9\.]*\).*/\1/'`
+     else
+       dsymutil_kind=UNKNOWN
+       dsymutil_vers="0.0"
+     fi
+     dsymutil_major=`expr "$dsymutil_vers" : '\([0-9]*\)'`
+     dsymutil_minor=`expr "$dsymutil_vers" : '[0-9]*\.\([0-9]*\)'`
+     dsymutil_tiny=`expr "$dsymutil_vers" : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
+     if test x"${dsymutil_minor}" = x; then
+       dsymutil_minor=0
+     fi
+     if test x"${dsymutil_tiny}" = x; then
+       dsymutil_tiny=0
+     fi
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define DSYMUTIL_VERSION $dsymutil_kind,${dsymutil_major},${dsymutil_minor},${dsymutil_tiny}
+ _ACEOF
+ 
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} " >&5
+ $as_echo "$dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} " >&6; }
+ fi
+ 
+ case $target_os in
+   win32 | pe | cygwin* | mingw32*)
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking broken PE linker dwarf5 support" >&5
+ $as_echo_n "checking broken PE linker dwarf5 support... " >&6; }
+     gcc_cv_ld_broken_pe_dwarf5=yes
+     if test $in_tree_ld = yes ; then
+       if grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ 	   $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc \
+ 	 && grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ 	      $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc; then
+ 	gcc_cv_ld_broken_pe_dwarf5=no
+       fi
+     else
+       if $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ 	 && $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:'; then
+ 	gcc_cv_ld_broken_pe_dwarf5=no
+       fi
+     fi
+     if test x$gcc_cv_ld_broken_pe_dwarf5 = xyes; then
+ 
+ $as_echo "#define HAVE_LD_BROKEN_PE_DWARF5 1" >>confdefs.h
+ 
+     fi
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_broken_pe_dwarf5" >&5
+ $as_echo "$gcc_cv_ld_broken_pe_dwarf5" >&6; }
+ 
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking PE linker --disable-dynamicbase support" >&5
+ $as_echo_n "checking PE linker --disable-dynamicbase support... " >&6; }
+     gcc_cv_ld_disable_dynamicbase=no
+     if test $in_tree_ld = yes; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
+         gcc_cv_ld_disable_dynamicbase=yes
+       fi
+     else
+       if $gcc_cv_ld --help 2>&1 | grep -q 'disable\-]dynamicbase' > /dev/null; then
+         gcc_cv_ld_disable_dynamicbase=yes
+       fi
+     fi
+     if test x"$gcc_cv_ld_disable_dynamicbase" = xyes; then
+ 
+ $as_echo "#define HAVE_LD_PE_DISABLE_DYNAMICBASE 1" >>confdefs.h
+ 
+     fi
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_disable_dynamicbase" >&5
+ $as_echo "$gcc_cv_ld_disable_dynamicbase" >&6; }
+     ;;
+ esac
+ 
  # --------
  # UNSORTED
  # --------
*************** $as_echo "#define HAVE_LD_PPC_GNU_ATTR_L
*** 29405,29411 ****
  esac
  
  case "$target:$tm_file" in
!   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
    case "$target" in
       *le-*-linux*)
       emul_name="-melf64lppc"
--- 29630,29636 ----
  esac
  
  case "$target:$tm_file" in
!   powerpc64*-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
    case "$target" in
       *le-*-linux*)
       emul_name="-melf64lppc"
*************** do
*** 31541,31546 ****
--- 31766,31772 ----
      "as") CONFIG_FILES="$CONFIG_FILES as:exec-tool.in" ;;
      "collect-ld") CONFIG_FILES="$CONFIG_FILES collect-ld:exec-tool.in" ;;
      "nm") CONFIG_FILES="$CONFIG_FILES nm:exec-tool.in" ;;
+     "dsymutil") CONFIG_FILES="$CONFIG_FILES dsymutil:exec-tool.in" ;;
      "clearcap.map") CONFIG_LINKS="$CONFIG_LINKS clearcap.map:${srcdir}/config/$clearcap_map" ;;
      "$all_outputs") CONFIG_FILES="$CONFIG_FILES $all_outputs" ;;
      "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
*************** $as_echo "$as_me: executing $ac_file com
*** 32175,32180 ****
--- 32401,32407 ----
      "as":F) chmod +x as ;;
      "collect-ld":F) chmod +x collect-ld ;;
      "nm":F) chmod +x nm ;;
+     "dsymutil":F) chmod +x dsymutil ;;
      "default":C)
  case ${CONFIG_HEADERS} in
    *auto-host.h:config.in*)
diff -Nrcpad gcc-10.3.0/gcc/configure.ac gcc-10.4.0/gcc/configure.ac
*** gcc-10.3.0/gcc/configure.ac	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/configure.ac	Tue Jun 28 08:54:27 2022
*************** gnu_ld_flag="$with_gnu_ld",
*** 274,281 ****
  gnu_ld_flag=no)
  
  case $target in
!     *darwin*) ld64_flag=yes;; # Darwin can only use a ld64-compatible linker.
!     *) ld64_flag=no;;
  esac
  
  # With pre-defined ld
--- 274,287 ----
  gnu_ld_flag=no)
  
  case $target in
!     *darwin*)
! 	ld64_flag=yes # Darwin can only use a ld64-compatible linker.
! 	dsymutil_flag=yes # Darwin uses dsymutil to link debug.
! 	;;
!     *)
! 	ld64_flag=no
! 	dsymutil_flag=no
! 	;;
  esac
  
  # With pre-defined ld
*************** AC_ARG_WITH(demangler-in-ld,
*** 311,316 ****
--- 317,347 ----
  demangler_in_ld="$with_demangler_in_ld",
  demangler_in_ld=yes)
  
+ # Allow the user to specify a dsymutil executable (used on Darwin only, so far)
+ AC_ARG_WITH(dsymutil,
+ [AS_HELP_STRING([--with-dsymutil], [arrange to use the specified dsymutil (full pathname)])],
+ DEFAULT_DSYMUTIL="$with_dsymutil")
+ 
+ dsymutil_vers=
+ if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
+   if test ! -x "$DEFAULT_DSYMUTIL"; then
+     AC_MSG_ERROR([cannot execute: $DEFAULT_DSYMUTIL: check --with-dsymutil or env. var. DEFAULT_DSYMUTIL])
+   else
+     if dsymutil_vers=`$DEFAULT_DSYMUTIL -v /dev/null 2>&1`; then
+       dsymutil_flag=yes
+     fi
+   fi
+   AC_DEFINE_UNQUOTED(DEFAULT_DSYMUTIL,"$DEFAULT_DSYMUTIL",
+ 	[Define to enable the use of a default debug linker.])
+ fi
+ 
+ AC_MSG_CHECKING([whether a default dsymutil was specified])
+ if test x"${DEFAULT_DSYMUTIL+set}" = x"set"; then
+   AC_MSG_RESULT([yes ($DEFAULT_DSYMUTIL)])
+ else
+   AC_MSG_RESULT(no)
+ fi
+ 
  # ----------------------
  # Find default assembler
  # ----------------------
*************** BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBS
*** 2304,2326 ****
  BUILD_LDFLAGS='$(LDFLAGS)'	AC_SUBST(BUILD_LDFLAGS)
  STMP_FIXINC=stmp-fixinc		AC_SUBST(STMP_FIXINC)
  
- BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS)' AC_SUBST(BUILD_NO_PIE_CFLAGS)
- BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG)' AC_SUBST(BUILD_NO_PIE_FLAG)
- 
  # And these apply if build != host, or we are generating coverage data
  if test x$build != x$host || test "x$coverage_flags" != x
  then
      BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
      BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CXXFLAGS_FOR_BUILD)'
      BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
- 
-     NO_PIE_CFLAGS_FOR_BUILD=${NO_PIE_CFLAGS_FOR_BUILD-${NO_PIE_CFLAGS}}
-     NO_PIE_FLAG_FOR_BUILD=${NO_PIE_FLAG_FOR_BUILD-${NO_PIE_FLAG}}
-     BUILD_NO_PIE_CFLAGS='$(NO_PIE_CFLAGS_FOR_BUILD)'
-     BUILD_NO_PIE_FLAG='$(NO_PIE_FLAG_FOR_BUILD)'
  fi
- AC_SUBST(NO_PIE_CFLAGS_FOR_BUILD)
- AC_SUBST(NO_PIE_FLAG_FOR_BUILD)
  
  # Expand extra_headers to include complete path.
  # This substitutes for lots of t-* files.
--- 2335,2347 ----
*************** else
*** 2714,2719 ****
--- 2735,2761 ----
  	AC_MSG_RESULT($gcc_cv_otool)
  fi
  
+ # Figure out the dsymutil we will use.
+ AS_VAR_SET_IF(gcc_cv_dsymutil,, [
+ if test -x "$DEFAULT_DSYMUTIL"; then
+     gcc_cv_dsymutil="$DEFAULT_DSYMUTIL"
+ elif test -x dsymutil$build_exeext; then
+     gcc_cv_dsymutil=./dsymutil$build_exeext
+ elif ( set dummy $DSYMUTIL_FOR_TARGET; test -x $[2] ); then
+     gcc_cv_dsymutil=$DSYMUTIL_FOR_TARGET
+ elif ( set dummy $DSYMUTIL; test -x $[2] ); then
+     gcc_cv_dsymutil=$DSYMUTIL
+ else
+     AC_PATH_PROG(gcc_cv_dsymutil, $DSYMUTIL_FOR_TARGET)
+ fi])
+ 
+ ORIGINAL_DSYMUTIL_FOR_TARGET=$gcc_cv_dsymutil
+ AC_SUBST(ORIGINAL_DSYMUTIL_FOR_TARGET)
+ case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
+   ./dsymutil | ./dsymutil$build_exeext) ;;
+   *) AC_CONFIG_FILES(dsymutil:exec-tool.in, [chmod +x dsymutil]) ;;
+ esac 
+ 
  # Figure out what assembler alignment features are present.
  gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,
   [2,6,0],,
*************** foo:	nop
*** 4534,4539 ****
--- 4576,4590 ----
  	fi
  	;;
      esac
+     case $target_os in
+        darwin2* | darwin19*)
+         gcc_GAS_CHECK_FEATURE([llvm assembler x86-pad-for-align option],
+           gcc_cv_as_mllvm_x86_pad_for_align,,
+           [-mllvm -x86-pad-for-align=false], [.text],,
+           [AC_DEFINE(HAVE_AS_MLLVM_X86_PAD_FOR_ALIGN, 1,
+ 	    [Define if your Mac OS X assembler supports -mllvm -x86-pad-for-align=false.])])
+        ;;
+     esac
  
      gcc_GAS_CHECK_FEATURE([-xbrace_comment], gcc_cv_as_ix86_xbrace_comment,,
        [-xbrace_comment=no], [.text],,
*************** if test x"$ld64_flag" = x"yes"; then
*** 5740,5745 ****
--- 5791,5878 ----
    [Define to 1 if ld64 supports '-export_dynamic'.])
  fi
  
+ if test x"$dsymutil_flag" = x"yes"; then
+ 
+     # If the user specified a dsymutil path, then we will already have the
+     # version string, otherwise, pick it up.
+     if test x"$gcc_cv_dsymutil" = x; then
+         AC_MSG_WARN([dsymutil is a required tool for this system, but not found])
+         dsymutil_vers="tool unspecified"
+     elif test x"$dsymutil_vers" = x; then
+ 	dsymutil_vers=`$gcc_cv_dsymutil -v /dev/null 2>&1`
+     fi
+ 
+     dsymutil_temp=`echo $dsymutil_vers | sed 1q`
+     AC_MSG_CHECKING(dsymutil version "$dsymutil_temp")
+     if echo $dsymutil_temp | grep dwarfutils- > /dev/null; then
+       dsymutil_kind=DWARFUTILS
+       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*dwarfutils-\([[0-9\.]]*\).*/\1/'`
+     elif echo $dsymutil_temp | grep clang- > /dev/null; then
+       dsymutil_kind=CLANG
+       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*clang-\([[0-9\.]]*\).*/\1/'`
+     elif echo $dsymutil_temp | grep 'LLVM version ' > /dev/null; then
+       dsymutil_kind=LLVM
+       dsymutil_vers=`echo $dsymutil_temp | sed 's/.*LLVM\ version\ \([[0-9\.]]*\).*/\1/'`
+     else
+       dsymutil_kind=UNKNOWN
+       dsymutil_vers="0.0"
+     fi
+     dsymutil_major=`expr "$dsymutil_vers" : '\([[0-9]]*\)'`
+     dsymutil_minor=`expr "$dsymutil_vers" : '[[0-9]]*\.\([[0-9]]*\)'`
+     dsymutil_tiny=`expr "$dsymutil_vers" : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
+     if test x"${dsymutil_minor}" = x; then
+       dsymutil_minor=0
+     fi
+     if test x"${dsymutil_tiny}" = x; then
+       dsymutil_tiny=0
+     fi
+     AC_DEFINE_UNQUOTED(DSYMUTIL_VERSION, [$dsymutil_kind,${dsymutil_major},${dsymutil_minor},${dsymutil_tiny}],
+         [Define to the dsymutil version.])
+     AC_MSG_RESULT($dsymutil_vers : $dsymutil_kind ${dsymutil_major} ${dsymutil_minor} ${dsymutil_tiny} )
+ fi
+ 
+ case $target_os in
+   win32 | pe | cygwin* | mingw32*)
+     AC_MSG_CHECKING(broken PE linker dwarf5 support)
+     gcc_cv_ld_broken_pe_dwarf5=yes
+     if test $in_tree_ld = yes ; then
+       if grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ 	   $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc \
+ 	 && grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ 	      $gcc_cv_ld_gld_srcdir/scripttempl/pe*.sc; then
+ 	gcc_cv_ld_broken_pe_dwarf5=no
+       fi
+     else
+       if $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_loclists.*BLOCK.*__section_alignment__.*NOLOAD.*:' \
+ 	 && $gcc_cv_ld --verbose 2>&1 | grep -q '\.debug_rnglists.*BLOCK.*__section_alignment__.*NOLOAD.*:'; then
+ 	gcc_cv_ld_broken_pe_dwarf5=no
+       fi
+     fi
+     if test x$gcc_cv_ld_broken_pe_dwarf5 = xyes; then
+       AC_DEFINE(HAVE_LD_BROKEN_PE_DWARF5, 1,
+ 	        [Define if the PE linker has broken DWARF 5 support.])
+     fi
+     AC_MSG_RESULT($gcc_cv_ld_broken_pe_dwarf5)
+ 
+     AC_MSG_CHECKING(PE linker --disable-dynamicbase support)
+     gcc_cv_ld_disable_dynamicbase=no
+     if test $in_tree_ld = yes; then
+       if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
+         gcc_cv_ld_disable_dynamicbase=yes
+       fi
+     else
+       if $gcc_cv_ld --help 2>&1 | grep -q 'disable\-]dynamicbase' > /dev/null; then
+         gcc_cv_ld_disable_dynamicbase=yes
+       fi
+     fi
+     if test x"$gcc_cv_ld_disable_dynamicbase" = xyes; then
+       AC_DEFINE(HAVE_LD_PE_DISABLE_DYNAMICBASE, 1,
+                 [Define if the PE linker supports --disable-dynamicbase option.])
+     fi
+     AC_MSG_RESULT($gcc_cv_ld_disable_dynamicbase)
+     ;;
+ esac
+ 
  # --------
  # UNSORTED
  # --------
*************** EOF
*** 5871,5877 ****
  esac
  
  case "$target:$tm_file" in
!   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
    case "$target" in
       *le-*-linux*)
       emul_name="-melf64lppc"
--- 6004,6010 ----
  esac
  
  case "$target:$tm_file" in
!   powerpc64*-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
    case "$target" in
       *le-*-linux*)
       emul_name="-melf64lppc"
diff -Nrcpad gcc-10.3.0/gcc/coretypes.h gcc-10.4.0/gcc/coretypes.h
*** gcc-10.3.0/gcc/coretypes.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/coretypes.h	Tue Jun 28 08:54:27 2022
*************** enum profile_reproducibility {
*** 219,233 ****
      PROFILE_REPRODUCIBILITY_MULTITHREADED
  };
  
! /* Types of unwind/exception handling info that can be generated.  */
  
  enum unwind_info_type
  {
    UI_NONE,
    UI_SJLJ,
    UI_DWARF2,
!   UI_TARGET,
!   UI_SEH
  };
  
  /* Callgraph node profile representation.  */
--- 219,235 ----
      PROFILE_REPRODUCIBILITY_MULTITHREADED
  };
  
! /* Types of unwind/exception handling info that can be generated.
!    Note that a UI_TARGET (or larger) setting is considered to be
!    incompatible with -freorder-blocks-and-partition.  */
  
  enum unwind_info_type
  {
    UI_NONE,
    UI_SJLJ,
    UI_DWARF2,
!   UI_SEH,
!   UI_TARGET
  };
  
  /* Callgraph node profile representation.  */
diff -Nrcpad gcc-10.3.0/gcc/coverage.c gcc-10.4.0/gcc/coverage.c
*** gcc-10.3.0/gcc/coverage.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/coverage.c	Tue Jun 28 08:54:27 2022
*************** coverage_compute_cfg_checksum (struct fu
*** 616,633 ****
  int
  coverage_begin_function (unsigned lineno_checksum, unsigned cfg_checksum)
  {
-   expanded_location xloc;
-   unsigned long offset;
- 
    /* We don't need to output .gcno file unless we're under -ftest-coverage
       (e.g. -fprofile-arcs/generate/use don't need .gcno to work). */
    if (no_coverage || !bbg_file_name)
      return 0;
  
!   xloc = expand_location (DECL_SOURCE_LOCATION (current_function_decl));
  
    /* Announce function */
!   offset = gcov_write_tag (GCOV_TAG_FUNCTION);
    if (param_profile_func_internal_id)
      gcov_write_unsigned (current_function_funcdef_no + 1);
    else
--- 616,631 ----
  int
  coverage_begin_function (unsigned lineno_checksum, unsigned cfg_checksum)
  {
    /* We don't need to output .gcno file unless we're under -ftest-coverage
       (e.g. -fprofile-arcs/generate/use don't need .gcno to work). */
    if (no_coverage || !bbg_file_name)
      return 0;
  
!   expanded_location startloc
!     = expand_location (DECL_SOURCE_LOCATION (current_function_decl));
  
    /* Announce function */
!   unsigned long offset = gcov_write_tag (GCOV_TAG_FUNCTION);
    if (param_profile_func_internal_id)
      gcov_write_unsigned (current_function_funcdef_no + 1);
    else
*************** coverage_begin_function (unsigned lineno
*** 644,659 ****
    gcov_write_unsigned (DECL_ARTIFICIAL (current_function_decl)
  		       && !DECL_FUNCTION_VERSIONED (current_function_decl)
  		       && !DECL_LAMBDA_FUNCTION_P (current_function_decl));
!   gcov_write_filename (xloc.file);
!   gcov_write_unsigned (xloc.line);
!   gcov_write_unsigned (xloc.column);
  
    expanded_location endloc = expand_location (cfun->function_end_locus);
  
    /* Function can start in a single file and end in another one.  */
!   int end_line = endloc.file == xloc.file ? endloc.line : xloc.line;
!   int end_column = endloc.file == xloc.file ? endloc.column: xloc.column;
!   gcc_assert (xloc.line <= end_line);
    gcov_write_unsigned (end_line);
    gcov_write_unsigned (end_column);
    gcov_write_length (offset);
--- 642,665 ----
    gcov_write_unsigned (DECL_ARTIFICIAL (current_function_decl)
  		       && !DECL_FUNCTION_VERSIONED (current_function_decl)
  		       && !DECL_LAMBDA_FUNCTION_P (current_function_decl));
!   gcov_write_filename (startloc.file);
!   gcov_write_unsigned (startloc.line);
!   gcov_write_unsigned (startloc.column);
  
    expanded_location endloc = expand_location (cfun->function_end_locus);
  
    /* Function can start in a single file and end in another one.  */
!   int end_line
!     = endloc.file == startloc.file ? endloc.line : startloc.line;
!   int end_column
!     = endloc.file == startloc.file ? endloc.column: startloc.column;
! 
!   if (startloc.line > end_line)
!     {
!       end_line = startloc.line;
!       end_column = startloc.column;
!     }
! 
    gcov_write_unsigned (end_line);
    gcov_write_unsigned (end_column);
    gcov_write_length (offset);
diff -Nrcpad gcc-10.3.0/gcc/cp/ChangeLog gcc-10.4.0/gcc/cp/ChangeLog
*** gcc-10.3.0/gcc/cp/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/cp/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,809 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102307
+ 	* decl.c (check_initializer): Use build_cplus_new in case of
+ 	constexpr failure.
+ 
+ 2022-05-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102629
+ 	* pt.c (gen_elem_of_pack_expansion_instantiation): Clear
+ 	TEMPLATE_TYPE_PARAMETER_PACK on auto.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101078
+ 	* pt.c (tsubst_baselink): Update binfos in non-dependent case.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/65211
+ 	* pt.c (tsubst_decl) [TYPE_DECL]: Copy TYPE_ALIGN.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101698
+ 	* pt.c (tsubst_baselink): Also check dependent optype.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101442
+ 	* decl.c (cp_finish_decl): Don't pass decl to push_cleanup.
+ 	* init.c (perform_member_init): Likewise.
+ 	* semantics.c (push_cleanup): Adjust comment.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99066
+ 	* pt.c (mark_decl_instantiated): Set DECL_EXTERNAL.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/91241
+ 	* mangle.c (write_compact_number): Add sanity check.
+ 	(write_local_name): Use list_length for parm number.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86355
+ 	* pt.c (use_pack_expansion_extra_args_p): Don't compare
+ 	args from the same argument pack.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101767
+ 	* decl.c (reshape_init_class): Back out of anon struct
+ 	if a designator doesn't match.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/41723
+ 	* parser.c (cp_parser_class_name): Check dependent_scope_p.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/104142
+ 	* decl.c (check_initializer): Check TREE_SIDE_EFFECTS.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102071
+ 	* init.c (build_new_1): Include cookie in alignment.  Omit
+ 	constexpr wrapper from alloc_call.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100838
+ 	PR c++/105265
+ 	* call.c (convert_like_internal): Clear tf_no_cleanup when
+ 	recursing.
+ 	(build_user_type_conversion_1): Only add ck_rvalue if
+ 	LOOKUP_ONLYCONVERTING.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/82980
+ 	* lambda.c (type_deducible_expression_p): New.
+ 	(lambda_capture_field_type): Check it.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/104646
+ 	* constexpr.c (maybe_save_constexpr_fundef): Don't do extra
+ 	checks for defaulted ctors.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102629
+ 	* pt.c (gen_elem_of_pack_expansion_instantiation): Clear
+ 	TEMPLATE_TYPE_PARAMETER_PACK on auto.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/59950
+ 	* call.c (build_over_call): Use cp_build_indirect_ref.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/105245
+ 	PR c++/100111
+ 	* constexpr.c (cxx_eval_store_expression): Build a CONSTRUCTOR
+ 	as needed in empty base handling.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101717
+ 	* lambda.c (lambda_expr_this_capture): Check all enclosing
+ 	lambdas for completeness.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100608
+ 	* name-lookup.c (check_local_shadow): Use -Wshadow=local
+ 	if exactly one of 'old' and 'decl' is a type.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/98249
+ 	* call.c (build_operator_new_call): Just look in ::.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101767
+ 	* decl.c (reshape_init_class): Back out of anon struct
+ 	if a designator doesn't match.
+ 
+ 2022-05-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-01  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/101194
+ 	* constexpr.c (cxx_eval_array_reference): When the element type
+ 	is an empty type and the corresponding element is omitted, just
+ 	return an empty CONSTRUCTOR instead of attempting value
+ 	initialization.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105256
+ 	* typeck2.c (process_init_constructor_array,
+ 	process_init_constructor_record, process_init_constructor_union): Move
+ 	CONSTRUCTOR_PLACEHOLDER_BOUNDARY flag from CONSTRUCTOR elements to the
+ 	containing CONSTRUCTOR.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105061
+ 	* parser.c (cp_parser_template_introduction): If member_p, temporarily
+ 	clear parser->colon_corrects_to_scope_p around tentative parsing of
+ 	nested name specifier.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* parser.c (cp_parser_postfix_expression)
+ 	<case RID_BILTIN_CONVERTVECTOR>: Don't
+ 	return cp_build_vec_convert result right away, instead
+ 	set postfix_expression to it and break.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104994
+ 	* constexpr.c (potential_constant_expression_1): Don't diagnose extern
+ 	thread_local declarations.
+ 	* decl.c (start_decl): Likewise.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104568
+ 	* init.c (build_new_constexpr_heap_type): Remove FULL_SIZE
+ 	argument and its handling, instead add ITYPE2 argument.  Only
+ 	support COOKIE_SIZE != NULL.
+ 	(build_new_1): If size is 0, change it to 0 * outer_nelts if
+ 	outer_nelts is non-NULL.  Pass type rather than elt_type to
+ 	maybe_wrap_new_for_constexpr.
+ 	* constexpr.c (build_new_constexpr_heap_type): New function.
+ 	(cxx_eval_constant_expression) <case CONVERT_EXPR>:
+ 	If elt_size is zero sized type, try to recover outer_nelts from
+ 	the size argument to operator new/new[] and pass that as
+ 	arg_size to build_new_constexpr_heap_type.  Pass ctx,
+ 	non_constant_p and overflow_p to that call too.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104711
+ 	* constexpr.c (cxx_eval_check_shift_p): Use TYPE_OVERFLOW_WRAPS
+ 	instead of TYPE_UNSIGNED.
+ 	* typeck.c (cp_build_binary_op): Don't emit
+ 	-Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104806
+ 	* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Ignore
+ 	identifiers with space at the end.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104513
+ 	* constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
+ 	Don't punt if returns (target).
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104472
+ 	* constexpr.c (cxx_eval_internal_function) <case IFN_VEC_CONVERT>:
+ 	Only return fold_const_call result if it is non-NULL.  Otherwise
+ 	fall through into the default: case to return t, set *non_constant_p
+ 	and emit diagnostics if needed.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104055
+ 	* constexpr.c (cxx_eval_outermost_constant_expr): If t is a
+ 	TARGET_EXPR with TARGET_EXPR_CLEANUP, use get_target_expr rather
+ 	than get_target_expr_sfinae with tf_no_cleanup, and don't set
+ 	TREE_CONSTANT.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-12  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/103480
+ 	* tree.c (move): If expr is xvalue_p, just return expr without
+ 	build_static_cast.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/103912
+ 	* semantics.c (expand_or_defer_fn): For immediate functions, set
+ 	node->body_removed to true and clear analyzed, definition and
+ 	force_output.
+ 	* decl2.c (c_parse_final_cleanups): Ignore immediate functions for
+ 	expand_or_defer_fn.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/70796
+ 	* cp-gimplify.c (cp_gimplify_arg): New function.
+ 	(cp_gimplify_expr): Use cp_gimplify_arg instead of gimplify_arg,
+ 	pass true as last argument to it if there are any following
+ 	arguments in strong evaluation order with side-effects.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102786
+ 	* constexpr.c (cxx_eval_constant_expression): Don't reject
+ 	INTEGER_CSTs with type POINTER_TYPE to METHOD_TYPE.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102548
+ 	* tree.c (apply_identity_attributes): Fix handling of the
+ 	case where an attribute in the list doesn't affect type
+ 	identity but some attribute before it does.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/88578
+ 	PR c++/102295
+ 	* typeck2.c (split_nonconstant_init_1): Don't throw away empty
+ 	initializers of flexible array members if they have non-zero type
+ 	size.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102295
+ 	* decl.c (layout_var_decl): For aggregates ending with a flexible
+ 	array member, add the size of the initializer for that member to
+ 	DECL_SIZE and DECL_SIZE_UNIT.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102305
+ 	* method.c (is_xible_helper): Call complete_type on to.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101516
+ 	* semantics.c (finish_omp_reduction_clause): Also call
+ 	complete_type_or_else and return true if it fails.
+ 
+ 2022-05-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* semantics.c (finish_omp_reduction_clause): Accept float + complex
+ 	for || and && reductions.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101443
+ 	* cp-gimplify.c (cp_fold): For comparisons with NULLPTR_TYPE
+ 	operands, fold them right away to true or false.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/100785
+ 	* typeck.c (cxx_mark_addressable): Diagnose trying to make
+ 	bit-fields addressable.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/100666
+ 	* call.c (convert_arg_to_ellipsis): For expressions with NULLPTR_TYPE
+ 	and side-effects, temporarily disable -Wunused-result warning when
+ 	building COMPOUND_EXPR.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/103455
+ 	* call.c (add_builtin_candidate) <case MEMBER_REF>: Test
+ 	CLASS_TYPE_P instead of MAYBE_CLASS_TYPE_P.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/104565
+ 	* semantics.c (finish_compound_literal): Don't perform
+ 	non-dependent expr folding before calling check_narrowing.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-25  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/101532
+ 	PR c++/104225
+ 	* decl2.c (mark_used): Don't consider maybe_instantiate_noexcept
+ 	on a deleted function.
+ 
+ 2022-02-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92918
+ 	* name-lookup.c (push_class_level_binding_1): Do overload a new
+ 	function with a previous using-declaration.
+ 
+ 2021-10-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/95520
+ 	* coroutines.cc (struct coroutine_info): Add fields for
+ 	actor and destroy function decls.
+ 	(to_ramp): New.
+ 	(coro_get_ramp_function): New.
+ 	(coro_get_actor_function): New.
+ 	(coro_get_destroy_function): New.
+ 	(act_des_fn): Set up mapping between ramp, actor and
+ 	destroy functions.
+ 	(morph_fn_to_coro): Adjust interface to the builder for
+ 	helper function decls.
+ 	* cp-tree.h (DECL_ACTOR_FN, DECL_DESTROY_FN, DECL_RAMP_FN,
+ 	JOIN_STR): New.
+ 	* mangle.c (write_encoding): Handle coroutine helpers.
+ 	(write_unqualified_name): Handle lambda coroutine helpers.
+ 
+ 2021-10-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc (build_actor_fn): Move common code to
+ 	act_des_fn.
+ 	(build_destroy_fn): Likewise.
+ 	(act_des_fn): Build the void return here.  Ensure that the
+ 	source location matches the original function.
+ 
+ 2021-10-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* coroutines.cc
+ 	(coro_rewrite_function_body): Connect the replacement
+ 	function block to the block nest correctly.
+ 
+ 2021-10-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-03-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/99617
+ 	* coroutines.cc (struct var_nest_node): Init then_cl and else_cl
+ 	to NULL.
+ 
+ 2021-07-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/101087
+ 	* cp-tree.h (unevaluated_p): New.
+ 	* except.c (check_noexcept_r): Use it.  Don't walk into
+ 	unevaluated operands.
+ 
+ 2021-06-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101029
+ 	* init.c (build_vec_init): Shortcut [0] case.
+ 
+ 2021-06-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/100102
+ 	* pt.c (tsubst_function_decl): Remove old code for reducing
+ 	args when it has excess levels.
+ 
+ 2021-06-01  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100797
+ 	PR c++/95719
+ 	* call.c (build_over_call): Adjust base_binfo in
+ 	resolves_to_fixed_type_p case.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100489
+ 	* constexpr.c (get_or_insert_ctor_field): Remove assert.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/80456
+ 	* call.c (build_new_method_call_1): Check again for side-effects
+ 	with a volatile object.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100054
+ 	PR c++/90479
+ 	* init.c (get_nsdmi): Do more context adjustment for local classes.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100032
+ 	* pt.c (get_underlying_template): Compare TYPE_QUALS.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/91933
+ 	* class.c (build_base_path): Shortcut simple non-pointer case.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99180
+ 	PR c++/93295
+ 	PR c++/93867
+ 	PR c++/99118
+ 	PR c++/96873
+ 	* pt.c (alias_ctad_tweaks): Handle failure better.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/41723
+ 	* parser.c (cp_parser_class_name): Check dependent_scope_p.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/52625
+ 	* pt.c (maybe_process_partial_specialization): Check
+ 	DECL_SELF_REFERENCE_P.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92918
+ 	* name-lookup.c (push_class_level_binding_1): Do overload a new
+ 	function with a previous using-declaration.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/96673
+ 	* init.c (get_nsdmi): Don't defer access checking.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99901
+ 	* decl.c (cp_finish_decl): mark_needed an implicitly inline
+ 	static data member with an out-of-class redeclaration.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/96311
+ 	* typeck.c (check_return_expr): Call mark_exp_read in dependent
+ 	case.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/95870
+ 	* pt.c (enclosing_instantiation_of): Compare DECL_SOURCE_LOCATION if
+ 	there is no enclosing non-lambda function.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99201
+ 	* pt.c (class el_data): Add visited field.
+ 	(extract_local_specs): Pass it to cp_walk_tree.
+ 	(extract_locals_r): Walk into the body of a lambda.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99643
+ 	* typeck2.c (massage_init_elt): Don't strip TARGET_EXPR.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/90664
+ 	* cvt.c (can_convert_qual): Check fnptr_conv_p.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/91217
+ 	* pt.c (tsubst_lambda_expr): Skip the body block from
+ 	DECL_SAVED_TREE.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/97938
+ 	* cp-tree.h (PACK_EXPANSION_AUTO_P): New.
+ 	* lambda.c (add_capture): Set it.
+ 	* pt.c (tsubst_pack_expansion): Handle it.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-09-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97051
+ 	* constraint.cc (satisfy_atom): Pass true as the
+ 	manifestly_const_eval argument to maybe_constant_value.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-07-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/95486
+ 	* pt.c (alias_ctad_tweaks): Call remove_constraints before
+ 	calling set_constraints.
+ 
+ 2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-10-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97052
+ 	* constraint.cc (build_type_constraint): Temporarily increment
+ 	processing_template_decl before calling build_concept_check.
+ 	* pt.c (make_constrained_placeholder_type): Likewise.
+ 
+ 2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/95434
+ 	* pt.c (tsubst) <case TEMPLATE_TYPE_PARM>: If tsubsting
+ 	CLASS_PLACEHOLDER_TEMPLATE yields a TEMPLATE_TEMPLATE_PARM,
+ 	adjust to its TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL.
+ 
+ 2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/83476
+ 	PR c++/99885
+ 	* pt.c (deducible_expression): Look through implicit
+ 	INDIRECT_REFs as well.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/100111
+ 	* constexpr.c (cxx_eval_store_expression): Don't add CONSTRUCTORs
+ 	for empty classes into *valp when types don't match even when *valp
+ 	is NULL.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/99833
+ 	* pt.c (extract_locals_r): When handling DECL_EXPR of a structured
+ 	binding, add to data.internal also all corresponding structured
+ 	binding decls.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/99859
+ 	* constexpr.c (addr_of_non_const_var): New function.
+ 	(cxx_bind_parameters_in_call): Set *non_constant_args to true
+ 	even if cp_walk_tree on arg with addr_of_non_const_var callback
+ 	returns true.
+ 
+ 2021-04-11  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97966
+ 	* pt.c (instantiate_class_template_1): Use FOR_EACH_VEC_ELT instead
+ 	of range-based for loop.
+ 
+ 2021-04-10  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97973
+ 	* call.c (conv_unsafe_in_template_p): New.
+ 	(convert_like): Use it.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99806
+ 	* parser.c (cp_parser_member_declaration): Call
+ 	cp_parser_save_default_args even for function templates.  Use
+ 	STRIP_TEMPLATE on the declaration we're passing.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/91416
+ 	* parser.c: Create a GC root for attributes in a decl specifier.
+ 	(cp_parser_type_specifier): Push/pop ->attributes onto/from it.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99831
+ 	* method.c (defaulted_late_check): ++ and -- function_depth around
+ 	the call to synthesize_method.
+ 	* pt.c: Remove the saved_trees global.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99331
+ 	* call.c (build_converted_constant_expr_internal): Don't emit
+ 	-Wconversion warnings.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	DR 1312
+ 	PR c++/99176
+ 	* constexpr.c (is_std_construct_at): New overload.
+ 	(is_std_allocator_allocate): New overload.
+ 	(cxx_eval_call_expression): Use the new overloads.
+ 	(cxx_eval_constant_expression): Reject casting
+ 	from void * as per DR 1312.  Don't check can_convert.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99120
+ 	* name-lookup.c (check_local_shadow): Check if the type of decl
+ 	is non-null before checking TYPE_PTR*.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99374
+ 	* call.c (standard_conversion): When converting pointers to
+ 	member, don't return NULL when the bases are equivalent but
+ 	incomplete.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-02-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/98947
+ 	* call.c (build_conditional_expr_1): Don't call mark_lvalue_use
+ 	on arg2/arg3.
+ 	* expr.c (mark_use) <case MODIFY_EXPR>: Don't check read_p when
+ 	issuing the -Wvolatile warning.  Only set TREE_THIS_VOLATILE if
+ 	a warning was emitted.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97966
+ 	* pt.c (instantiate_class_template_1): Instantiate members
+ 	marked with attribute used only after we're done instantiating
+ 	the class.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/98333
+ 	* parser.c (cp_parser_class_specifier_1): Perform late-parsing
+ 	of NSDMIs before late-parsing of noexcept-specifiers.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/cp/call.c gcc-10.4.0/gcc/cp/call.c
*** gcc-10.3.0/gcc/cp/call.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/call.c	Tue Jun 28 08:54:28 2022
*************** standard_conversion (tree to, tree from,
*** 1434,1440 ****
        tree fbase = class_of_this_parm (fromfn);
        tree tbase = class_of_this_parm (tofn);
  
!       if (!DERIVED_FROM_P (fbase, tbase))
  	return NULL;
  
        tree fstat = static_fn_type (fromfn);
--- 1434,1442 ----
        tree fbase = class_of_this_parm (fromfn);
        tree tbase = class_of_this_parm (tofn);
  
!       /* If FBASE and TBASE are equivalent but incomplete, DERIVED_FROM_P
! 	 yields false.  But a pointer to member of incomplete class is OK.  */
!       if (!same_type_p (fbase, tbase) && !DERIVED_FROM_P (fbase, tbase))
  	return NULL;
  
        tree fstat = static_fn_type (fromfn);
*************** add_builtin_candidate (struct z_candidat
*** 2761,2767 ****
  	  tree c1 = TREE_TYPE (type1);
  	  tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
  
! 	  if (MAYBE_CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
  	      && (TYPE_PTRMEMFUNC_P (type2)
  		  || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
  	    break;
--- 2763,2769 ----
  	  tree c1 = TREE_TYPE (type1);
  	  tree c2 = TYPE_PTRMEM_CLASS_TYPE (type2);
  
! 	  if (CLASS_TYPE_P (c1) && DERIVED_FROM_P (c2, c1)
  	      && (TYPE_PTRMEMFUNC_P (type2)
  		  || is_complete (TYPE_PTRMEM_POINTED_TO_TYPE (type2))))
  	    break;
*************** build_user_type_conversion_1 (tree totyp
*** 4061,4067 ****
  	{
  	  cand->second_conv = build_identity_conv (totype, NULL_TREE);
  
! 	  /* If totype isn't a reference, and LOOKUP_NO_TEMP_BIND isn't
  	     set, then this is copy-initialization.  In that case, "The
  	     result of the call is then used to direct-initialize the
  	     object that is the destination of the copy-initialization."
--- 4063,4069 ----
  	{
  	  cand->second_conv = build_identity_conv (totype, NULL_TREE);
  
! 	  /* If totype isn't a reference, and LOOKUP_ONLYCONVERTING is
  	     set, then this is copy-initialization.  In that case, "The
  	     result of the call is then used to direct-initialize the
  	     object that is the destination of the copy-initialization."
*************** build_user_type_conversion_1 (tree totyp
*** 4070,4075 ****
--- 4072,4079 ----
  	     We represent this in the conversion sequence with an
  	     rvalue conversion, which means a constructor call.  */
  	  if (!TYPE_REF_P (totype)
+ 	      && cxx_dialect < cxx17
+ 	      && (flags & LOOKUP_ONLYCONVERTING)
  	      && !(convflags & LOOKUP_NO_TEMP_BIND))
  	    cand->second_conv
  	      = build_conv (ck_rvalue, totype, cand->second_conv);
*************** build_converted_constant_expr_internal (
*** 4392,4397 ****
--- 4396,4404 ----
  	  && processing_template_decl)
  	conv = next_conversion (conv);
  
+       /* Issuing conversion warnings for value-dependent expressions is
+ 	 likely too noisy.  */
+       warning_sentinel w (warn_conversion);
        conv->check_narrowing = true;
        conv->check_narrowing_const_only = true;
        expr = convert_like (conv, expr, complain);
*************** build_operator_new_call (tree fnname, ve
*** 4677,4683 ****
  
       we disregard block-scope declarations of "operator new".  */
    fns = lookup_name_real (fnname, 0, 1, /*block_p=*/false, 0, 0);
-   fns = lookup_arg_dependent (fnname, fns, *args);
  
    if (align_arg)
      {
--- 4684,4689 ----
*************** build_conditional_expr_1 (const op_locat
*** 5474,5481 ****
        && same_type_p (arg2_type, arg3_type))
      {
        result_type = arg2_type;
-       arg2 = mark_lvalue_use (arg2);
-       arg3 = mark_lvalue_use (arg3);
        goto valid_operands;
      }
  
--- 5480,5485 ----
*************** maybe_warn_array_conv (location_t loc, c
*** 7302,7307 ****
--- 7306,7332 ----
  	     "are only available with %<-std=c++2a%> or %<-std=gnu++2a%>");
  }
  
+ /* Return true if converting FROM to TO is unsafe in a template.  */
+ 
+ static bool
+ conv_unsafe_in_template_p (tree to, tree from)
+ {
+   /* Converting classes involves TARGET_EXPR.  */
+   if (CLASS_TYPE_P (to) || CLASS_TYPE_P (from))
+     return true;
+ 
+   /* Converting real to integer produces FIX_TRUNC_EXPR which tsubst
+      doesn't handle.  */
+   if (SCALAR_FLOAT_TYPE_P (from) && INTEGRAL_OR_ENUMERATION_TYPE_P (to))
+     return true;
+ 
+   /* Converting integer to real isn't a trivial conversion, either.  */
+   if (INTEGRAL_OR_ENUMERATION_TYPE_P (from) && SCALAR_FLOAT_TYPE_P (to))
+     return true;
+ 
+   return false;
+ }
+ 
  /* Wrapper for convert_like_real_1 that handles creating IMPLICIT_CONV_EXPR.  */
  
  static tree
*************** convert_like_real (conversion *convs, tr
*** 7317,7323 ****
    tree conv_expr = NULL_TREE;
    if (processing_template_decl
        && convs->kind != ck_identity
!       && (CLASS_TYPE_P (convs->type) || CLASS_TYPE_P (TREE_TYPE (expr))))
      {
        conv_expr = build1 (IMPLICIT_CONV_EXPR, convs->type, expr);
        if (convs->kind != ck_ref_bind)
--- 7342,7348 ----
    tree conv_expr = NULL_TREE;
    if (processing_template_decl
        && convs->kind != ck_identity
!       && conv_unsafe_in_template_p (convs->type, TREE_TYPE (expr)))
      {
        conv_expr = build1 (IMPLICIT_CONV_EXPR, convs->type, expr);
        if (convs->kind != ck_ref_bind)
*************** convert_like_real_1 (conversion *convs,
*** 7655,7661 ****
    expr = convert_like_real (next_conversion (convs), expr, fn, argnum,
  			    convs->kind == ck_ref_bind
  			    ? issue_conversion_warnings : false, 
! 			    c_cast_p, complain);
    if (expr == error_mark_node)
      return error_mark_node;
  
--- 7680,7686 ----
    expr = convert_like_real (next_conversion (convs), expr, fn, argnum,
  			    convs->kind == ck_ref_bind
  			    ? issue_conversion_warnings : false, 
! 			    c_cast_p, complain & ~tf_no_cleanup);
    if (expr == error_mark_node)
      return error_mark_node;
  
*************** convert_arg_to_ellipsis (tree arg, tsubs
*** 7944,7950 ****
      {
        arg = mark_rvalue_use (arg);
        if (TREE_SIDE_EFFECTS (arg))
! 	arg = cp_build_compound_expr (arg, null_pointer_node, complain);
        else
  	arg = null_pointer_node;
      }
--- 7969,7978 ----
      {
        arg = mark_rvalue_use (arg);
        if (TREE_SIDE_EFFECTS (arg))
! 	{
! 	  warning_sentinel w(warn_unused_result);
! 	  arg = cp_build_compound_expr (arg, null_pointer_node, complain);
! 	}
        else
  	arg = null_pointer_node;
      }
*************** build_over_call (struct z_candidate *can
*** 8738,8756 ****
  	  || CLASSTYPE_FINAL (TYPE_METHOD_BASETYPE (TREE_TYPE (fn))))
  	flags |= LOOKUP_NONVIRTUAL;
  
-       /* If we know the dynamic type of the object, look up the final overrider
- 	 in the BINFO.  */
-       if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0
- 	  && resolves_to_fixed_type_p (arg))
- 	{
- 	  tree binfo = cand->conversion_path;
- 	  if (BINFO_TYPE (binfo) != DECL_CONTEXT (fn))
- 	    binfo = lookup_base (binfo, DECL_CONTEXT (fn), ba_unique,
- 				 NULL, complain);
- 	  fn = lookup_vfn_in_binfo (DECL_VINDEX (fn), binfo);
- 	  flags |= LOOKUP_NONVIRTUAL;
- 	}
- 
        /* [class.mfct.nonstatic]: If a nonstatic member function of a class
  	 X is called for an object that is not of type X, or of a type
  	 derived from X, the behavior is undefined.
--- 8766,8771 ----
*************** build_over_call (struct z_candidate *can
*** 8760,8769 ****
        gcc_assert (TYPE_PTR_P (parmtype));
        /* Convert to the base in which the function was declared.  */
        gcc_assert (cand->conversion_path != NULL_TREE);
-       converted_arg = build_base_path (PLUS_EXPR,
- 				       arg,
- 				       cand->conversion_path,
- 				       1, complain);
        /* Check that the base class is accessible.  */
        if (!accessible_base_p (TREE_TYPE (argtype),
  			      BINFO_TYPE (cand->conversion_path), true))
--- 8775,8780 ----
*************** build_over_call (struct z_candidate *can
*** 8778,8787 ****
        /* If fn was found by a using declaration, the conversion path
  	 will be to the derived class, not the base declaring fn. We
  	 must convert from derived to base.  */
!       base_binfo = lookup_base (TREE_TYPE (TREE_TYPE (converted_arg)),
  				TREE_TYPE (parmtype), ba_unique,
  				NULL, complain);
!       converted_arg = build_base_path (PLUS_EXPR, converted_arg,
  				       base_binfo, 1, complain);
  
        argarray[j++] = converted_arg;
--- 8789,8821 ----
        /* If fn was found by a using declaration, the conversion path
  	 will be to the derived class, not the base declaring fn. We
  	 must convert from derived to base.  */
!       base_binfo = lookup_base (cand->conversion_path,
  				TREE_TYPE (parmtype), ba_unique,
  				NULL, complain);
! 
!       /* If we know the dynamic type of the object, look up the final overrider
! 	 in the BINFO.  */
!       if (DECL_VINDEX (fn) && (flags & LOOKUP_NONVIRTUAL) == 0
! 	  && resolves_to_fixed_type_p (arg))
! 	{
! 	  tree ov = lookup_vfn_in_binfo (DECL_VINDEX (fn), base_binfo);
! 
! 	  /* And unwind base_binfo to match.  If we don't find the type we're
! 	     looking for in BINFO_INHERITANCE_CHAIN, we're looking at diamond
! 	     inheritance; for now do a normal virtual call in that case.  */
! 	  tree octx = DECL_CONTEXT (ov);
! 	  tree obinfo = base_binfo;
! 	  while (obinfo && !SAME_BINFO_TYPE_P (BINFO_TYPE (obinfo), octx))
! 	    obinfo = BINFO_INHERITANCE_CHAIN (obinfo);
! 	  if (obinfo)
! 	    {
! 	      fn = ov;
! 	      base_binfo = obinfo;
! 	      flags |= LOOKUP_NONVIRTUAL;
! 	    }
! 	}
! 
!       converted_arg = build_base_path (PLUS_EXPR, arg,
  				       base_binfo, 1, complain);
  
        argarray[j++] = converted_arg;
*************** build_over_call (struct z_candidate *can
*** 9049,9056 ****
  	   && DECL_OVERLOADED_OPERATOR_IS (fn, NOP_EXPR)
  	   && trivial_fn_p (fn))
      {
!       tree to = cp_stabilize_reference
! 	(cp_build_fold_indirect_ref (argarray[0]));
        tree type = TREE_TYPE (to);
        tree as_base = CLASSTYPE_AS_BASE (type);
        tree arg = argarray[1];
--- 9083,9093 ----
  	   && DECL_OVERLOADED_OPERATOR_IS (fn, NOP_EXPR)
  	   && trivial_fn_p (fn))
      {
!       /* Don't use cp_build_fold_indirect_ref, op= returns an lvalue even if
! 	 the object argument isn't one.  */
!       tree to = cp_build_indirect_ref (input_location, argarray[0],
! 				       RO_ARROW, complain);
!       to = cp_stabilize_reference (to);
        tree type = TREE_TYPE (to);
        tree as_base = CLASSTYPE_AS_BASE (type);
        tree arg = argarray[1];
*************** build_new_method_call_1 (tree instance,
*** 10423,10429 ****
  		  tree a = instance;
  		  if (TREE_THIS_VOLATILE (a))
  		    a = build_this (a);
! 		  call = build2 (COMPOUND_EXPR, TREE_TYPE (call), a, call);
  		}
  	      else if (call != error_mark_node
  		       && DECL_DESTRUCTOR_P (cand->fn)
--- 10460,10467 ----
  		  tree a = instance;
  		  if (TREE_THIS_VOLATILE (a))
  		    a = build_this (a);
! 		  if (TREE_SIDE_EFFECTS (a))
! 		    call = build2 (COMPOUND_EXPR, TREE_TYPE (call), a, call);
  		}
  	      else if (call != error_mark_node
  		       && DECL_DESTRUCTOR_P (cand->fn)
diff -Nrcpad gcc-10.3.0/gcc/cp/class.c gcc-10.4.0/gcc/cp/class.c
*** gcc-10.3.0/gcc/cp/class.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/class.c	Tue Jun 28 08:54:28 2022
*************** build_base_path (enum tree_code code,
*** 331,336 ****
--- 331,345 ----
        return error_mark_node;
      }
  
+   bool uneval = (cp_unevaluated_operand != 0
+ 		 || processing_template_decl
+ 		 || in_template_function ());
+ 
+   /* For a non-pointer simple base reference, express it as a COMPONENT_REF
+      without taking its address (and so causing lambda capture, 91933).  */
+   if (code == PLUS_EXPR && !v_binfo && !want_pointer && !has_empty && !uneval)
+     return build_simple_base_path (expr, binfo);
+ 
    if (!want_pointer)
      {
        rvalue = !lvalue_p (expr);
*************** build_base_path (enum tree_code code,
*** 358,366 ****
       template (even in instantiate_non_dependent_expr), we don't have vtables
       set up properly yet, and the value doesn't matter there either; we're
       just interested in the result of overload resolution.  */
!   if (cp_unevaluated_operand != 0
!       || processing_template_decl
!       || in_template_function ())
      {
        expr = build_nop (ptr_target_type, expr);
        goto indout;
--- 367,373 ----
       template (even in instantiate_non_dependent_expr), we don't have vtables
       set up properly yet, and the value doesn't matter there either; we're
       just interested in the result of overload resolution.  */
!   if (uneval)
      {
        expr = build_nop (ptr_target_type, expr);
        goto indout;
diff -Nrcpad gcc-10.3.0/gcc/cp/constexpr.c gcc-10.4.0/gcc/cp/constexpr.c
*** gcc-10.3.0/gcc/cp/constexpr.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/constexpr.c	Tue Jun 28 08:54:28 2022
*************** register_constexpr_fundef (tree fun, tre
*** 898,904 ****
    if (!potential && !DECL_GENERATED_P (fun))
      require_potential_rvalue_constant_expression (massaged);
  
!   if (DECL_CONSTRUCTOR_P (fun)
        && cx_check_missing_mem_inits (DECL_CONTEXT (fun),
  				     massaged, !DECL_GENERATED_P (fun)))
      potential = false;
--- 898,904 ----
    if (!potential && !DECL_GENERATED_P (fun))
      require_potential_rvalue_constant_expression (massaged);
  
!   if (DECL_CONSTRUCTOR_P (fun) && !DECL_DEFAULTED_FN (fun)
        && cx_check_missing_mem_inits (DECL_CONTEXT (fun),
  				     massaged, !DECL_GENERATED_P (fun)))
      potential = false;
*************** free_constructor (tree t)
*** 1495,1500 ****
--- 1495,1524 ----
      }
  }
  
+ /* Helper function of cxx_bind_parameters_in_call.  Return non-NULL
+    if *TP is address of a static variable (or part of it) currently being
+    constructed or of a heap artificial variable.  */
+ 
+ static tree
+ addr_of_non_const_var (tree *tp, int *walk_subtrees, void *data)
+ {
+   if (TREE_CODE (*tp) == ADDR_EXPR)
+     if (tree var = get_base_address (TREE_OPERAND (*tp, 0)))
+       if (VAR_P (var) && TREE_STATIC (var))
+ 	{
+ 	  if (DECL_NAME (var) == heap_uninit_identifier
+ 	      || DECL_NAME (var) == heap_identifier)
+ 	    return var;
+ 
+ 	  constexpr_global_ctx *global = (constexpr_global_ctx *) data;
+ 	  if (global->values.get (var))
+ 	    return var;
+ 	}
+   if (TYPE_P (*tp))
+     *walk_subtrees = false;
+   return NULL_TREE;
+ }
+ 
  /* Subroutine of cxx_eval_call_expression.
     We are processing a call expression (either CALL_EXPR or
     AGGR_INIT_EXPR) in the context of CTX.  Evaluate
*************** cxx_bind_parameters_in_call (const const
*** 1549,1554 ****
--- 1573,1588 ----
  	    arg = adjust_temp_type (type, arg);
  	  if (!TREE_CONSTANT (arg))
  	    *non_constant_args = true;
+ 	    /* If arg is or contains address of a heap artificial variable or
+ 	       of a static variable being constructed, avoid caching the
+ 	       function call, as those variables might be modified by the
+ 	       function, or might be modified by the callers in between
+ 	       the cached function and just read by the function.  */
+ 	  else if (!*non_constant_args
+ 		   && cp_walk_tree (&arg, addr_of_non_const_var, ctx->global,
+ 				    NULL))
+ 	    *non_constant_args = true;
+ 
  	  /* For virtual calls, adjust the this argument, so that it is
  	     the object on which the method is called, rather than
  	     one of its bases.  */
*************** cxx_eval_internal_function (const conste
*** 1653,1665 ****
  						 false, non_constant_p,
  						 overflow_p);
  	if (TREE_CODE (arg) == VECTOR_CST)
! 	  return fold_const_call (CFN_VEC_CONVERT, TREE_TYPE (t), arg);
! 	else
! 	  {
! 	    *non_constant_p = true;
! 	    return t;
! 	  }
        }
  
      default:
        if (!ctx->quiet)
--- 1687,1696 ----
  						 false, non_constant_p,
  						 overflow_p);
  	if (TREE_CODE (arg) == VECTOR_CST)
! 	  if (tree r = fold_const_call (CFN_VEC_CONVERT, TREE_TYPE (t), arg))
! 	    return r;
        }
+       /* FALLTHRU */
  
      default:
        if (!ctx->quiet)
*************** is_std_construct_at (tree fndecl)
*** 1769,1774 ****
--- 1800,1815 ----
    return name && id_equal (name, "construct_at");
  }
  
+ /* Overload for the above taking constexpr_call*.  */
+ 
+ static inline bool
+ is_std_construct_at (const constexpr_call *call)
+ {
+   return (call
+ 	  && call->fundef
+ 	  && is_std_construct_at (call->fundef->decl));
+ }
+ 
  /* Return true if FNDECL is std::allocator<T>::{,de}allocate.  */
  
  static inline bool
*************** is_std_allocator_allocate (tree fndecl)
*** 1791,1796 ****
--- 1832,1847 ----
    return decl_in_std_namespace_p (decl);
  }
  
+ /* Overload for the above taking constexpr_call*.  */
+ 
+ static inline bool
+ is_std_allocator_allocate (const constexpr_call *call)
+ {
+   return (call
+ 	  && call->fundef
+ 	  && is_std_allocator_allocate (call->fundef->decl));
+ }
+ 
  /* Return true if FNDECL is __dynamic_cast.  */
  
  static inline bool
*************** cxx_eval_call_expression (const constexp
*** 2197,2205 ****
        if (TREE_CODE (t) == CALL_EXPR
  	  && cxx_replaceable_global_alloc_fn (fun)
  	  && (CALL_FROM_NEW_OR_DELETE_P (t)
! 	      || (ctx->call
! 		  && ctx->call->fundef
! 		  && is_std_allocator_allocate (ctx->call->fundef->decl))))
  	{
  	  const int nargs = call_expr_nargs (t);
  	  tree arg0 = NULL_TREE;
--- 2248,2254 ----
        if (TREE_CODE (t) == CALL_EXPR
  	  && cxx_replaceable_global_alloc_fn (fun)
  	  && (CALL_FROM_NEW_OR_DELETE_P (t)
! 	      || is_std_allocator_allocate (ctx->call)))
  	{
  	  const int nargs = call_expr_nargs (t);
  	  tree arg0 = NULL_TREE;
*************** cxx_eval_call_expression (const constexp
*** 2267,2275 ****
  	 argument.  */
        if (TREE_CODE (t) == CALL_EXPR
  	  && cxx_placement_new_fn (fun)
! 	  && ctx->call
! 	  && ctx->call->fundef
! 	  && is_std_construct_at (ctx->call->fundef->decl))
  	{
  	  const int nargs = call_expr_nargs (t);
  	  tree arg1 = NULL_TREE;
--- 2316,2322 ----
  	 argument.  */
        if (TREE_CODE (t) == CALL_EXPR
  	  && cxx_placement_new_fn (fun)
! 	  && is_std_construct_at (ctx->call))
  	{
  	  const int nargs = call_expr_nargs (t);
  	  tree arg1 = NULL_TREE;
*************** cxx_eval_check_shift_p (location_t loc,
*** 2829,2835 ****
       The value of E1 << E2 is the unique value congruent to E1 x 2^E2 modulo
       2^N, where N is the range exponent of the type of the result.  */
    if (code == LSHIFT_EXPR
!       && !TYPE_UNSIGNED (lhstype)
        && cxx_dialect >= cxx11
        && cxx_dialect < cxx2a)
      {
--- 2876,2882 ----
       The value of E1 << E2 is the unique value congruent to E1 x 2^E2 modulo
       2^N, where N is the range exponent of the type of the result.  */
    if (code == LSHIFT_EXPR
!       && !TYPE_OVERFLOW_WRAPS (lhstype)
        && cxx_dialect >= cxx11
        && cxx_dialect < cxx2a)
      {
*************** get_or_insert_ctor_field (tree ctor, tre
*** 3311,3319 ****
      }
    else
      {
!       gcc_assert (TREE_CODE (index) == FIELD_DECL
! 		  && (same_type_ignoring_top_level_qualifiers_p
! 		      (DECL_CONTEXT (index), TREE_TYPE (ctor))));
  
        /* We must keep the CONSTRUCTOR's ELTS in FIELD order.
  	 Usually we meet initializers in that order, but it is
--- 3358,3364 ----
      }
    else
      {
!       gcc_assert (TREE_CODE (index) == FIELD_DECL);
  
        /* We must keep the CONSTRUCTOR's ELTS in FIELD order.
  	 Usually we meet initializers in that order, but it is
*************** cxx_eval_array_reference (const constexp
*** 3592,3598 ****
       directly for non-aggregates to avoid creating a garbage CONSTRUCTOR.  */
    tree val;
    constexpr_ctx new_ctx;
!   if (CP_AGGREGATE_TYPE_P (elem_type))
      {
        tree empty_ctor = build_constructor (init_list_type_node, NULL);
        val = digest_init (elem_type, empty_ctor, tf_warning_or_error);
--- 3637,3645 ----
       directly for non-aggregates to avoid creating a garbage CONSTRUCTOR.  */
    tree val;
    constexpr_ctx new_ctx;
!   if (is_really_empty_class (elem_type, /*ignore_vptr*/false))
!     return build_constructor (elem_type, NULL);
!   else if (CP_AGGREGATE_TYPE_P (elem_type))
      {
        tree empty_ctor = build_constructor (init_list_type_node, NULL);
        val = digest_init (elem_type, empty_ctor, tf_warning_or_error);
*************** cxx_eval_store_expression (const constex
*** 5096,5101 ****
--- 5143,5162 ----
        CONSTRUCTOR_NO_CLEARING (*valp)
  	= CONSTRUCTOR_NO_CLEARING (init);
      }
+   else if (TREE_CODE (init) == CONSTRUCTOR
+ 	   && !same_type_ignoring_top_level_qualifiers_p (TREE_TYPE (init),
+ 							  type))
+     {
+       /* See above on initialization of empty bases.  */
+       gcc_assert (is_empty_class (TREE_TYPE (init)) && !lval);
+       if (!*valp)
+ 	{
+ 	  /* But do make sure we have something in *valp.  */
+ 	  *valp = build_constructor (type, NULL);
+ 	  CONSTRUCTOR_NO_CLEARING (*valp) = no_zero_init;
+ 	}
+       return init;
+     }
    else
      *valp = init;
  
*************** inline_asm_in_constexpr_error (location_
*** 5565,5570 ****
--- 5626,5709 ----
  	  "%<constexpr%> function in C++2a");
  }
  
+ /* For element type ELT_TYPE, return the appropriate type of the heap object
+    containing such element(s).  COOKIE_SIZE is NULL or the size of cookie
+    in bytes.  If COOKIE_SIZE is NULL, return array type
+    ELT_TYPE[FULL_SIZE / sizeof(ELT_TYPE)], otherwise return
+    struct { size_t[COOKIE_SIZE/sizeof(size_t)]; ELT_TYPE[N]; }
+    where N is is computed such that the size of the struct fits into FULL_SIZE.
+    If ARG_SIZE is non-NULL, it is the first argument to the new operator.
+    It should be passed if ELT_TYPE is zero sized type in which case FULL_SIZE
+    will be also 0 and so it is not possible to determine the actual array
+    size.  CTX, NON_CONSTANT_P and OVERFLOW_P are used during constant
+    expression evaluation of subexpressions of ARG_SIZE.  */
+ 
+ static tree
+ build_new_constexpr_heap_type (const constexpr_ctx *ctx, tree elt_type,
+ 			       tree cookie_size, tree full_size, tree arg_size,
+ 			       bool *non_constant_p, bool *overflow_p)
+ {
+   gcc_assert (cookie_size == NULL_TREE || tree_fits_uhwi_p (cookie_size));
+   gcc_assert (tree_fits_uhwi_p (full_size));
+   unsigned HOST_WIDE_INT csz = cookie_size ? tree_to_uhwi (cookie_size) : 0;
+   if (arg_size)
+     {
+       STRIP_NOPS (arg_size);
+       if (cookie_size)
+ 	{
+ 	  if (TREE_CODE (arg_size) != PLUS_EXPR)
+ 	    arg_size = NULL_TREE;
+ 	  else if (TREE_CODE (TREE_OPERAND (arg_size, 0)) == INTEGER_CST
+ 		   && tree_int_cst_equal (cookie_size,
+ 					  TREE_OPERAND (arg_size, 0)))
+ 	    {
+ 	      arg_size = TREE_OPERAND (arg_size, 1);
+ 	      STRIP_NOPS (arg_size);
+ 	    }
+ 	  else if (TREE_CODE (TREE_OPERAND (arg_size, 1)) == INTEGER_CST
+ 		   && tree_int_cst_equal (cookie_size,
+ 					  TREE_OPERAND (arg_size, 1)))
+ 	    {
+ 	      arg_size = TREE_OPERAND (arg_size, 0);
+ 	      STRIP_NOPS (arg_size);
+ 	    }
+ 	  else
+ 	    arg_size = NULL_TREE;
+ 	}
+       if (arg_size && TREE_CODE (arg_size) == MULT_EXPR)
+ 	{
+ 	  tree op0 = TREE_OPERAND (arg_size, 0);
+ 	  tree op1 = TREE_OPERAND (arg_size, 1);
+ 	  if (integer_zerop (op0))
+ 	    arg_size
+ 	      = cxx_eval_constant_expression (ctx, op1, false, non_constant_p,
+ 					      overflow_p);
+ 	  else if (integer_zerop (op1))
+ 	    arg_size
+ 	      = cxx_eval_constant_expression (ctx, op0, false, non_constant_p,
+ 					      overflow_p);
+ 	  else
+ 	    arg_size = NULL_TREE;
+ 	}
+       else
+ 	arg_size = NULL_TREE;
+     }
+ 
+   unsigned HOST_WIDE_INT fsz = tree_to_uhwi (arg_size ? arg_size : full_size);
+   if (!arg_size)
+     {
+       unsigned HOST_WIDE_INT esz = int_size_in_bytes (elt_type);
+       gcc_assert (fsz >= csz);
+       fsz -= csz;
+       if (esz)
+ 	fsz /= esz;
+     }
+   tree itype2 = build_index_type (size_int (fsz - 1));
+   if (!cookie_size)
+     return build_cplus_array_type (elt_type, itype2);
+   return build_new_constexpr_heap_type (elt_type, cookie_size, itype2);
+ }
+ 
  /* Attempt to reduce the expression T to a constant value.
     On failure, issue diagnostic and return error_mark_node.  */
  /* FIXME unify with c_fully_fold */
*************** cxx_eval_constant_expression (const cons
*** 5623,5628 ****
--- 5762,5771 ----
  
        if (TREE_CODE (t) == INTEGER_CST
  	  && TYPE_PTR_P (TREE_TYPE (t))
+ 	  /* INTEGER_CST with pointer-to-method type is only used
+ 	     for a virtual method in a pointer to member function.
+ 	     Don't reject those.  */
+ 	  && TREE_CODE (TREE_TYPE (TREE_TYPE (t))) != METHOD_TYPE
  	  && !integer_zerop (t))
  	{
  	  if (!ctx->quiet)
*************** cxx_eval_constant_expression (const cons
*** 6270,6275 ****
--- 6413,6448 ----
  	if (VOID_TYPE_P (type))
  	  return void_node;
  
+ 	/* [expr.const]: a conversion from type cv void* to a pointer-to-object
+ 	   type cannot be part of a core constant expression as a resolution to
+ 	   DR 1312.  */
+ 	if (integer_zerop (op) /* FIXME: Remove in GCC 12.  */
+ 	    && TYPE_PTROB_P (type)
+ 	    && TYPE_PTR_P (TREE_TYPE (op))
+ 	    && VOID_TYPE_P (TREE_TYPE (TREE_TYPE (op)))
+ 	    /* Inside a call to std::construct_at or to
+ 	       std::allocator<T>::{,de}allocate, we permit casting from void*
+ 	       because that is compiler-generated code.  */
+ 	    && !is_std_construct_at (ctx->call)
+ 	    && !is_std_allocator_allocate (ctx->call))
+ 	  {
+ 	    /* Likewise, don't error when casting from void* when OP is
+ 	       &heap uninit and similar.  */
+ 	    tree sop = tree_strip_nop_conversions (op);
+ 	    if (TREE_CODE (sop) == ADDR_EXPR
+ 		&& VAR_P (TREE_OPERAND (sop, 0))
+ 		&& DECL_ARTIFICIAL (TREE_OPERAND (sop, 0)))
+ 	      /* OK */;
+ 	    else
+ 	      {
+ 		if (!ctx->quiet)
+ 		  error_at (loc, "cast from %qT is not allowed",
+ 			    TREE_TYPE (op));
+ 		*non_constant_p = true;
+ 		return t;
+ 	      }
+ 	  }
+ 
  	if (TREE_CODE (op) == PTRMEM_CST && !TYPE_PTRMEM_P (type))
  	  op = cplus_expand_constant (op);
  
*************** cxx_eval_constant_expression (const cons
*** 6288,6313 ****
  		if (TYPE_REF_P (type))
  		  {
  		    if (!ctx->quiet)
! 		      error_at (loc,
! 				"dereferencing a null pointer");
  		    *non_constant_p = true;
  		    return t;
  		  }
- 		else if (TYPE_PTR_P (TREE_TYPE (op)))
- 		  {
- 		    tree from = TREE_TYPE (op);
- 
- 		    if (!can_convert (type, from, tf_none))
- 		      {
- 			if (!ctx->quiet)
- 			  error_at (loc,
- 				    "conversion of %qT null pointer to %qT "
- 				    "is not a constant expression",
- 				    from, type);
- 			*non_constant_p = true;
- 			return t;
- 		      }
- 		  }
  	      }
  	    else
  	      {
--- 6461,6470 ----
  		if (TYPE_REF_P (type))
  		  {
  		    if (!ctx->quiet)
! 		      error_at (loc, "dereferencing a null pointer");
  		    *non_constant_p = true;
  		    return t;
  		  }
  	      }
  	    else
  	      {
*************** cxx_eval_constant_expression (const cons
*** 6335,6340 ****
--- 6492,6498 ----
  	    tree var_size = TYPE_SIZE_UNIT (TREE_TYPE (var));
  	    tree elt_type = TREE_TYPE (type);
  	    tree cookie_size = NULL_TREE;
+ 	    tree arg_size = NULL_TREE;
  	    if (TREE_CODE (elt_type) == RECORD_TYPE
  		&& TYPE_NAME (elt_type) == heap_identifier)
  	      {
*************** cxx_eval_constant_expression (const cons
*** 6344,6352 ****
  		cookie_size = TYPE_SIZE_UNIT (TREE_TYPE (fld1));
  	      }
  	    DECL_NAME (var) = heap_identifier;
  	    TREE_TYPE (var)
! 	      = build_new_constexpr_heap_type (elt_type, cookie_size,
! 					       var_size);
  	    TREE_TYPE (TREE_OPERAND (op, 0))
  	      = build_pointer_type (TREE_TYPE (var));
  	  }
--- 6502,6522 ----
  		cookie_size = TYPE_SIZE_UNIT (TREE_TYPE (fld1));
  	      }
  	    DECL_NAME (var) = heap_identifier;
+ 	    /* For zero sized elt_type, try to recover how many outer_nelts
+ 	       it should have.  */
+ 	    if ((cookie_size ? tree_int_cst_equal (var_size, cookie_size)
+ 			     : integer_zerop (var_size))
+ 		&& !int_size_in_bytes (elt_type)
+ 		&& TREE_CODE (oldop) == CALL_EXPR
+ 		&& call_expr_nargs (oldop) >= 1)
+ 	      if (tree fun = get_function_named_in_call (oldop))
+ 		if (cxx_replaceable_global_alloc_fn (fun)
+ 		    && IDENTIFIER_NEW_OP_P (DECL_NAME (fun)))
+ 		  arg_size = CALL_EXPR_ARG (oldop, 0);
  	    TREE_TYPE (var)
! 	      = build_new_constexpr_heap_type (ctx, elt_type, cookie_size,
! 					       var_size, arg_size,
! 					       non_constant_p, overflow_p);
  	    TREE_TYPE (TREE_OPERAND (op, 0))
  	      = build_pointer_type (TREE_TYPE (var));
  	  }
*************** cxx_eval_outermost_constant_expr (tree t
*** 6899,6905 ****
        if (TREE_CODE (t) == TARGET_EXPR
  	  && TARGET_EXPR_INITIAL (t) == r)
  	return t;
!       else if (TREE_CODE (t) != CONSTRUCTOR)
  	{
  	  r = get_target_expr_sfinae (r, tf_warning_or_error | tf_no_cleanup);
  	  TREE_CONSTANT (r) = true;
--- 7069,7079 ----
        if (TREE_CODE (t) == TARGET_EXPR
  	  && TARGET_EXPR_INITIAL (t) == r)
  	return t;
!       else if (TREE_CODE (t) == CONSTRUCTOR)
! 	;
!       else if (TREE_CODE (t) == TARGET_EXPR && TARGET_EXPR_CLEANUP (t))
! 	r = get_target_expr (r);
!       else
  	{
  	  r = get_target_expr_sfinae (r, tf_warning_or_error | tf_no_cleanup);
  	  TREE_CONSTANT (r) = true;
*************** potential_constant_expression_1 (tree t,
*** 8131,8148 ****
        tmp = DECL_EXPR_DECL (t);
        if (VAR_P (tmp) && !DECL_ARTIFICIAL (tmp))
  	{
! 	  if (TREE_STATIC (tmp))
  	    {
  	      if (flags & tf_error)
  		error_at (DECL_SOURCE_LOCATION (tmp), "%qD declared "
! 			  "%<static%> in %<constexpr%> context", tmp);
  	      return false;
  	    }
! 	  else if (CP_DECL_THREAD_LOCAL_P (tmp))
  	    {
  	      if (flags & tf_error)
  		error_at (DECL_SOURCE_LOCATION (tmp), "%qD declared "
! 			  "%<thread_local%> in %<constexpr%> context", tmp);
  	      return false;
  	    }
  	  else if (!check_for_uninitialized_const_var
--- 8305,8322 ----
        tmp = DECL_EXPR_DECL (t);
        if (VAR_P (tmp) && !DECL_ARTIFICIAL (tmp))
  	{
! 	  if (CP_DECL_THREAD_LOCAL_P (tmp) && !DECL_REALLY_EXTERN (tmp))
  	    {
  	      if (flags & tf_error)
  		error_at (DECL_SOURCE_LOCATION (tmp), "%qD declared "
! 			  "%<thread_local%> in %<constexpr%> context", tmp);
  	      return false;
  	    }
! 	  else if (TREE_STATIC (tmp))
  	    {
  	      if (flags & tf_error)
  		error_at (DECL_SOURCE_LOCATION (tmp), "%qD declared "
! 			  "%<static%> in %<constexpr%> context", tmp);
  	      return false;
  	    }
  	  else if (!check_for_uninitialized_const_var
*************** potential_constant_expression_1 (tree t,
*** 8402,8409 ****
      case GOTO_EXPR:
        {
  	tree *target = &TREE_OPERAND (t, 0);
! 	/* Gotos representing break and continue are OK.  */
! 	if (breaks (target) || continues (target))
  	  {
  	    *jump_target = *target;
  	    return true;
--- 8576,8583 ----
      case GOTO_EXPR:
        {
  	tree *target = &TREE_OPERAND (t, 0);
! 	/* Gotos representing break, continue and cdtor return are OK.  */
! 	if (breaks (target) || continues (target) || returns (target))
  	  {
  	    *jump_target = *target;
  	    return true;
diff -Nrcpad gcc-10.3.0/gcc/cp/constraint.cc gcc-10.4.0/gcc/cp/constraint.cc
*** gcc-10.3.0/gcc/cp/constraint.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/constraint.cc	Tue Jun 28 08:54:28 2022
*************** tree
*** 1420,1426 ****
--- 1420,1428 ----
  build_type_constraint (tree decl, tree args, tsubst_flags_t complain)
  {
    tree wildcard = build_nt (WILDCARD_DECL);
+   ++processing_template_decl;
    tree check = build_concept_check (decl, wildcard, args, complain);
+   --processing_template_decl;
    if (check == error_mark_node)
      return error_mark_node;
    return unpack_concept_check (check);
*************** satisfy_atom (tree t, tree args, subst_i
*** 2628,2634 ****
      result = cxx_constant_value (result);
    else
      {
!       result = maybe_constant_value (result);
        if (!TREE_CONSTANT (result))
  	result = error_mark_node;
      }
--- 2630,2637 ----
      result = cxx_constant_value (result);
    else
      {
!       result = maybe_constant_value (result, NULL_TREE,
! 				     /*manifestly_const_eval=*/true);
        if (!TREE_CONSTANT (result))
  	result = error_mark_node;
      }
diff -Nrcpad gcc-10.3.0/gcc/cp/coroutines.cc gcc-10.4.0/gcc/cp/coroutines.cc
*** gcc-10.3.0/gcc/cp/coroutines.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/coroutines.cc	Tue Jun 28 08:54:28 2022
*************** static bool coro_promise_type_found_p (t
*** 82,92 ****
  struct GTY((for_user)) coroutine_info
  {
    tree function_decl; /* The original function decl.  */
!   tree promise_type; /* The cached promise type for this function.  */
!   tree handle_type;  /* The cached coroutine handle for this function.  */
!   tree self_h_proxy; /* A handle instance that is used as the proxy for the
! 			one that will eventually be allocated in the coroutine
! 			frame.  */
    tree promise_proxy; /* Likewise, a proxy promise instance.  */
    tree return_void;   /* The expression for p.return_void() if it exists.  */
    location_t first_coro_keyword; /* The location of the keyword that made this
--- 82,94 ----
  struct GTY((for_user)) coroutine_info
  {
    tree function_decl; /* The original function decl.  */
!   tree actor_decl;    /* The synthesized actor function.  */
!   tree destroy_decl;  /* The synthesized destroy function.  */
!   tree promise_type;  /* The cached promise type for this function.  */
!   tree handle_type;   /* The cached coroutine handle for this function.  */
!   tree self_h_proxy;  /* A handle instance that is used as the proxy for the
! 			 one that will eventually be allocated in the coroutine
! 			 frame.  */
    tree promise_proxy; /* Likewise, a proxy promise instance.  */
    tree return_void;   /* The expression for p.return_void() if it exists.  */
    location_t first_coro_keyword; /* The location of the keyword that made this
*************** coro_promise_type_found_p (tree fndecl,
*** 525,530 ****
--- 527,572 ----
    return true;
  }
  
+ /* Map from actor or destroyer to ramp.  */
+ static GTY(()) hash_map<tree, tree> *to_ramp;
+ 
+ /* Given a tree that is an actor or destroy, find the ramp function.  */
+ 
+ tree
+ coro_get_ramp_function (tree decl)
+ {
+   if (!to_ramp)
+     return NULL_TREE;
+   tree *p = to_ramp->get (decl);
+   if (p)
+     return *p;
+   return NULL_TREE;
+ }
+ 
+ /* Given the DECL for a ramp function (the user's original declaration) return
+    the actor function if it has been defined.  */
+ 
+ tree
+ coro_get_actor_function (tree decl)
+ {
+   if (coroutine_info *info = get_coroutine_info (decl))
+     return info->actor_decl;
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Given the DECL for a ramp function (the user's original declaration) return
+    the destroy function if it has been defined.  */
+ 
+ tree
+ coro_get_destroy_function (tree decl)
+ {
+   if (coroutine_info *info = get_coroutine_info (decl))
+     return info->destroy_decl;
+ 
+   return NULL_TREE;
+ }
+ 
  /* These functions assumes that the caller has verified that the state for
     the decl has been initialized, we try to minimize work here.  */
  
*************** build_actor_fn (location_t loc, tree cor
*** 2179,2191 ****
    /* One param, the coro frame pointer.  */
    tree actor_fp = DECL_ARGUMENTS (actor);
  
-   /* A void return.  */
-   tree resdecl = build_decl (loc, RESULT_DECL, 0, void_type_node);
-   DECL_ARTIFICIAL (resdecl) = 1;
-   DECL_IGNORED_P (resdecl) = 1;
-   DECL_RESULT (actor) = resdecl;
-   DECL_COROUTINE_P (actor) = 1;
- 
    /* We have a definition here.  */
    TREE_STATIC (actor) = 1;
  
--- 2221,2226 ----
*************** build_destroy_fn (location_t loc, tree c
*** 2556,2570 ****
    /* One param, the coro frame pointer.  */
    tree destr_fp = DECL_ARGUMENTS (destroy);
  
-   /* A void return.  */
-   tree resdecl = build_decl (loc, RESULT_DECL, 0, void_type_node);
-   DECL_ARTIFICIAL (resdecl) = 1;
-   DECL_IGNORED_P (resdecl) = 1;
-   DECL_RESULT (destroy) = resdecl;
- 
    /* We have a definition here.  */
    TREE_STATIC (destroy) = 1;
-   DECL_COROUTINE_P (destroy) = 1;
  
    tree destr_outer = push_stmt_list ();
    current_stmt_tree ()->stmts_are_full_exprs_p = 1;
--- 2591,2598 ----
*************** struct var_nest_node
*** 2823,2829 ****
      : var(NULL_TREE), init(NULL_TREE),
        prev(NULL), next(NULL), then_cl(NULL), else_cl(NULL) {}
    var_nest_node (tree v, tree i, var_nest_node *p, var_nest_node *n)
!     : var(v), init(i), prev(p), next(n)
      {
        if (p)
  	p->next = this;
--- 2851,2857 ----
      : var(NULL_TREE), init(NULL_TREE),
        prev(NULL), next(NULL), then_cl(NULL), else_cl(NULL) {}
    var_nest_node (tree v, tree i, var_nest_node *p, var_nest_node *n)
!     : var(v), init(i), prev(p), next(n), then_cl (NULL), else_cl (NULL)
      {
        if (p)
  	p->next = this;
*************** register_local_var_uses (tree *stmt, int
*** 4027,4048 ****
    return NULL_TREE;
  }
  
! /* Build, return FUNCTION_DECL node with its coroutine frame pointer argument
!    for either actor or destroy functions.  */
  
  static tree
! act_des_fn (tree orig, tree fn_type, tree coro_frame_ptr, const char* name)
  {
!   tree fn_name = get_fn_local_identifier (orig, name);
!   tree fn = build_lang_decl (FUNCTION_DECL, fn_name, fn_type);
    DECL_CONTEXT (fn) = DECL_CONTEXT (orig);
    DECL_ARTIFICIAL (fn) = true;
    DECL_INITIAL (fn) = error_mark_node;
    tree id = get_identifier ("frame_ptr");
    tree fp = build_lang_decl (PARM_DECL, id, coro_frame_ptr);
    DECL_CONTEXT (fp) = fn;
    DECL_ARG_TYPE (fp) = type_passed_as (coro_frame_ptr);
    DECL_ARGUMENTS (fn) = fp;
    /* Copy selected attributes from the original function.  */
    TREE_USED (fn) = TREE_USED (orig);
    if (DECL_SECTION_NAME (orig))
--- 4055,4088 ----
    return NULL_TREE;
  }
  
! /* Build, return FUNCTION_DECL node based on ORIG with a type FN_TYPE which has
!    a single argument of type CORO_FRAME_PTR.  Build the actor function if
!    ACTOR_P is true, otherwise the destroy. */
  
  static tree
! coro_build_actor_or_destroy_function (tree orig, tree fn_type,
! 				      tree coro_frame_ptr, bool actor_p)
  {
!   location_t loc = DECL_SOURCE_LOCATION (orig);
!   tree fn
!     = build_lang_decl (FUNCTION_DECL, copy_node (DECL_NAME (orig)), fn_type);
! 
!   /* Allow for locating the ramp (original) function from this one.  */
!   if (!to_ramp)
!     to_ramp = hash_map<tree, tree>::create_ggc (10);
!   to_ramp->put (fn, orig);
! 
    DECL_CONTEXT (fn) = DECL_CONTEXT (orig);
+   DECL_SOURCE_LOCATION (fn) = loc;
    DECL_ARTIFICIAL (fn) = true;
    DECL_INITIAL (fn) = error_mark_node;
+ 
    tree id = get_identifier ("frame_ptr");
    tree fp = build_lang_decl (PARM_DECL, id, coro_frame_ptr);
    DECL_CONTEXT (fp) = fn;
    DECL_ARG_TYPE (fp) = type_passed_as (coro_frame_ptr);
    DECL_ARGUMENTS (fn) = fp;
+ 
    /* Copy selected attributes from the original function.  */
    TREE_USED (fn) = TREE_USED (orig);
    if (DECL_SECTION_NAME (orig))
*************** act_des_fn (tree orig, tree fn_type, tre
*** 4054,4059 ****
--- 4094,4121 ----
    DECL_USER_ALIGN (fn) = DECL_USER_ALIGN (orig);
    /* Apply attributes from the original fn.  */
    DECL_ATTRIBUTES (fn) = copy_list (DECL_ATTRIBUTES (orig));
+ 
+   /* A void return.  */
+   tree resdecl = build_decl (loc, RESULT_DECL, 0, void_type_node);
+   DECL_CONTEXT (resdecl) = fn;
+   DECL_ARTIFICIAL (resdecl) = 1;
+   DECL_IGNORED_P (resdecl) = 1;
+   DECL_RESULT (fn) = resdecl;
+ 
+   /* This is a coroutine component.  */
+   DECL_COROUTINE_P (fn) = 1;
+ 
+   /* Set up a means to find out if a decl is one of the helpers and, if so,
+      which one.  */
+   if (coroutine_info *info = get_coroutine_info (orig))
+     {
+       gcc_checking_assert ((actor_p && info->actor_decl == NULL_TREE)
+ 			   || info->destroy_decl == NULL_TREE);
+       if (actor_p)
+ 	info->actor_decl = fn;
+       else
+ 	info->destroy_decl = fn;
+     }
    return fn;
  }
  
*************** coro_rewrite_function_body (location_t f
*** 4089,4096 ****
        BIND_EXPR_BLOCK (first) = replace_blk;
        /* The top block has one child, so far, and we have now got a 
  	 superblock.  */
!       BLOCK_SUPERCONTEXT (block) = top_block;
!       BLOCK_SUBBLOCKS (top_block) = block;
      }
  
    /* Wrap the function body in a try {} catch (...) {} block, if exceptions
--- 4151,4158 ----
        BIND_EXPR_BLOCK (first) = replace_blk;
        /* The top block has one child, so far, and we have now got a 
  	 superblock.  */
!       BLOCK_SUPERCONTEXT (replace_blk) = top_block;
!       BLOCK_SUBBLOCKS (top_block) = replace_blk;
      }
  
    /* Wrap the function body in a try {} catch (...) {} block, if exceptions
*************** morph_fn_to_coro (tree orig, tree *resum
*** 4362,4369 ****
    tree act_des_fn_ptr = build_pointer_type (act_des_fn_type);
  
    /* Declare the actor and destroyer function.  */
!   tree actor = act_des_fn (orig, act_des_fn_type, coro_frame_ptr, "actor");
!   tree destroy = act_des_fn (orig, act_des_fn_type, coro_frame_ptr, "destroy");
  
    /* Construct the wrapped function body; we will analyze this to determine
       the requirements for the coroutine frame.  */
--- 4424,4433 ----
    tree act_des_fn_ptr = build_pointer_type (act_des_fn_type);
  
    /* Declare the actor and destroyer function.  */
!   tree actor = coro_build_actor_or_destroy_function (orig, act_des_fn_type,
! 						     coro_frame_ptr, true);
!   tree destroy = coro_build_actor_or_destroy_function (orig, act_des_fn_type,
! 						       coro_frame_ptr, false);
  
    /* Construct the wrapped function body; we will analyze this to determine
       the requirements for the coroutine frame.  */
diff -Nrcpad gcc-10.3.0/gcc/cp/cp-gimplify.c gcc-10.4.0/gcc/cp/cp-gimplify.c
*** gcc-10.3.0/gcc/cp/cp-gimplify.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/cp-gimplify.c	Tue Jun 28 08:54:28 2022
*************** gimplify_to_rvalue (tree *expr_p, gimple
*** 674,679 ****
--- 674,720 ----
    return t;
  }
  
+ /* Like gimplify_arg, but if ORDERED is set (which should be set if
+    any of the arguments this argument is sequenced before has
+    TREE_SIDE_EFFECTS set, make sure expressions with is_gimple_reg_type type
+    are gimplified into SSA_NAME or a fresh temporary and for
+    non-is_gimple_reg_type we don't optimize away TARGET_EXPRs.  */
+ 
+ static enum gimplify_status
+ cp_gimplify_arg (tree *arg_p, gimple_seq *pre_p, location_t call_location,
+ 		 bool ordered)
+ {
+   enum gimplify_status t;
+   if (ordered
+       && !is_gimple_reg_type (TREE_TYPE (*arg_p))
+       && TREE_CODE (*arg_p) == TARGET_EXPR)
+     {
+       /* gimplify_arg would strip away the TARGET_EXPR, but
+ 	 that can mean we don't copy the argument and some following
+ 	 argument with side-effect could modify it.  */
+       protected_set_expr_location (*arg_p, call_location);
+       return gimplify_expr (arg_p, pre_p, NULL, is_gimple_lvalue, fb_either);
+     }
+   else
+     {
+       t = gimplify_arg (arg_p, pre_p, call_location);
+       if (t == GS_ERROR)
+ 	return GS_ERROR;
+       else if (ordered
+ 	       && is_gimple_reg_type (TREE_TYPE (*arg_p))
+ 	       && is_gimple_variable (*arg_p)
+ 	       && TREE_CODE (*arg_p) != SSA_NAME
+ 	       /* No need to force references into register, references
+ 		  can't be modified.  */
+ 	       && !TYPE_REF_P (TREE_TYPE (*arg_p))
+ 	       /* And this can't be modified either.  */
+ 	       && *arg_p != current_class_ptr)
+ 	*arg_p = get_initialized_tmp_var (*arg_p, pre_p);
+       return t;
+     }
+ 
+ }
+ 
  /* Do C++-specific gimplification.  Args are as for gimplify_expr.  */
  
  int
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 888,894 ****
  	  gcc_assert (call_expr_nargs (*expr_p) == 2);
  	  gcc_assert (!CALL_EXPR_ORDERED_ARGS (*expr_p));
  	  enum gimplify_status t
! 	    = gimplify_arg (&CALL_EXPR_ARG (*expr_p, 1), pre_p, loc);
  	  if (t == GS_ERROR)
  	    ret = GS_ERROR;
  	}
--- 929,936 ----
  	  gcc_assert (call_expr_nargs (*expr_p) == 2);
  	  gcc_assert (!CALL_EXPR_ORDERED_ARGS (*expr_p));
  	  enum gimplify_status t
! 	    = cp_gimplify_arg (&CALL_EXPR_ARG (*expr_p, 1), pre_p, loc,
! 			       TREE_SIDE_EFFECTS (CALL_EXPR_ARG (*expr_p, 0)));
  	  if (t == GS_ERROR)
  	    ret = GS_ERROR;
  	}
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 897,906 ****
  	  /* Leave the last argument for gimplify_call_expr, to avoid problems
  	     with __builtin_va_arg_pack().  */
  	  int nargs = call_expr_nargs (*expr_p) - 1;
  	  for (int i = 0; i < nargs; ++i)
  	    {
  	      enum gimplify_status t
! 		= gimplify_arg (&CALL_EXPR_ARG (*expr_p, i), pre_p, loc);
  	      if (t == GS_ERROR)
  		ret = GS_ERROR;
  	    }
--- 939,956 ----
  	  /* Leave the last argument for gimplify_call_expr, to avoid problems
  	     with __builtin_va_arg_pack().  */
  	  int nargs = call_expr_nargs (*expr_p) - 1;
+ 	  int last_side_effects_arg = -1;
+ 	  for (int i = nargs; i > 0; --i)
+ 	    if (TREE_SIDE_EFFECTS (CALL_EXPR_ARG (*expr_p, i)))
+ 	      {
+ 		last_side_effects_arg = i;
+ 		break;
+ 	      }
  	  for (int i = 0; i < nargs; ++i)
  	    {
  	      enum gimplify_status t
! 		= cp_gimplify_arg (&CALL_EXPR_ARG (*expr_p, i), pre_p, loc,
! 				   i < last_side_effects_arg);
  	      if (t == GS_ERROR)
  		ret = GS_ERROR;
  	    }
*************** cp_gimplify_expr (tree *expr_p, gimple_s
*** 914,921 ****
  	    fntype = TREE_TYPE (fntype);
  	  if (TREE_CODE (fntype) == METHOD_TYPE)
  	    {
  	      enum gimplify_status t
! 		= gimplify_arg (&CALL_EXPR_ARG (*expr_p, 0), pre_p, loc);
  	      if (t == GS_ERROR)
  		ret = GS_ERROR;
  	    }
--- 964,980 ----
  	    fntype = TREE_TYPE (fntype);
  	  if (TREE_CODE (fntype) == METHOD_TYPE)
  	    {
+ 	      int nargs = call_expr_nargs (*expr_p);
+ 	      bool side_effects = false;
+ 	      for (int i = 1; i < nargs; ++i)
+ 		if (TREE_SIDE_EFFECTS (CALL_EXPR_ARG (*expr_p, i)))
+ 		  {
+ 		    side_effects = true;
+ 		    break;
+ 		  }
  	      enum gimplify_status t
! 		= cp_gimplify_arg (&CALL_EXPR_ARG (*expr_p, 0), pre_p, loc,
! 				   side_effects);
  	      if (t == GS_ERROR)
  		ret = GS_ERROR;
  	    }
*************** cp_fold (tree x)
*** 2723,2728 ****
--- 2782,2813 ----
        op0 = cp_fold_maybe_rvalue (TREE_OPERAND (x, 0), rval_ops);
        op1 = cp_fold_rvalue (TREE_OPERAND (x, 1));
  
+       /* decltype(nullptr) has only one value, so optimize away all comparisons
+ 	 with that type right away, keeping them in the IL causes troubles for
+ 	 various optimizations.  */
+       if (COMPARISON_CLASS_P (org_x)
+ 	  && TREE_CODE (TREE_TYPE (op0)) == NULLPTR_TYPE
+ 	  && TREE_CODE (TREE_TYPE (op1)) == NULLPTR_TYPE)
+ 	{
+ 	  switch (code)
+ 	    {
+ 	    case EQ_EXPR:
+ 	    case LE_EXPR:
+ 	    case GE_EXPR:
+ 	      x = constant_boolean_node (true, TREE_TYPE (x));
+ 	      break;
+ 	    case NE_EXPR:
+ 	    case LT_EXPR:
+ 	    case GT_EXPR:
+ 	      x = constant_boolean_node (false, TREE_TYPE (x));
+ 	      break;
+ 	    default:
+ 	      gcc_unreachable ();
+ 	    }
+ 	  return omit_two_operands_loc (loc, TREE_TYPE (x), x,
+ 					op0, op1);
+ 	}
+ 
        if (op0 != TREE_OPERAND (x, 0) || op1 != TREE_OPERAND (x, 1))
  	{
  	  if (op0 == error_mark_node || op1 == error_mark_node)
diff -Nrcpad gcc-10.3.0/gcc/cp/cp-tree.h gcc-10.4.0/gcc/cp/cp-tree.h
*** gcc-10.3.0/gcc/cp/cp-tree.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/cp-tree.h	Tue Jun 28 08:54:28 2022
*************** extern GTY(()) tree cp_global_trees[CPTI
*** 464,469 ****
--- 464,470 ----
        IMPLICIT_CONV_EXPR_BRACED_INIT (in IMPLICIT_CONV_EXPR)
        TINFO_VAR_DECLARED_CONSTINIT (in TEMPLATE_INFO)
        CALL_FROM_NEW_OR_DELETE_P (in CALL_EXPR)
+       PACK_EXPANSION_AUTO_P (in *_PACK_EXPANSION)
     3: (TREE_REFERENCE_EXPR) (in NON_LVALUE_EXPR) (commented-out).
        ICS_BAD_FLAG (in _CONV)
        FN_TRY_BLOCK_P (in TRY_BLOCK)
*************** struct GTY(()) lang_decl {
*** 3728,3733 ****
--- 3729,3737 ----
  /* True iff this pack expansion is for sizeof....  */
  #define PACK_EXPANSION_SIZEOF_P(NODE) TREE_LANG_FLAG_1 (NODE)
  
+ /* True iff this pack expansion is for auto... in lambda init-capture.  */
+ #define PACK_EXPANSION_AUTO_P(NODE) TREE_LANG_FLAG_2 (NODE)
+ 
  /* True iff the wildcard can match a template parameter pack.  */
  #define WILDCARD_PACK_P(NODE) TREE_LANG_FLAG_0 (NODE)
  
*************** more_aggr_init_expr_args_p (const aggr_i
*** 5024,5029 ****
--- 5028,5048 ----
  #define DECL_COROUTINE_P(NODE) \
    (LANG_DECL_FN_CHECK (DECL_COMMON_CHECK (NODE))->coroutine_p)
  
+ /* For a FUNCTION_DECL of a coroutine, this holds the ACTOR helper function
+    decl.  */
+ #define DECL_ACTOR_FN(NODE) \
+   (coro_get_actor_function ((NODE)))
+ 
+ /* For a FUNCTION_DECL of a coroutine, this holds the DESTROY helper function
+   decl.  */
+ #define DECL_DESTROY_FN(NODE) \
+   (coro_get_destroy_function ((NODE)))
+ 
+ /* For a FUNCTION_DECL of a coroutine helper (ACTOR or DESTROY), this points
+    back to the original (ramp) function.  */
+ #define DECL_RAMP_FN(NODE) \
+   (coro_get_ramp_function (NODE))
+ 
  /* True for an OMP_ATOMIC that has dependent parameters.  These are stored
     as an expr in operand 1, and integer_zero_node or clauses in operand 0.  */
  #define OMP_ATOMIC_DEPENDENT_P(NODE) \
*************** extern GTY(()) vec<tree, va_gc> *keyed_c
*** 5459,5464 ****
--- 5478,5484 ----
  #ifndef NO_DOT_IN_LABEL
  
  #define JOINER '.'
+ #define JOIN_STR "."
  
  #define AUTO_TEMP_NAME "_.tmp_"
  #define VFIELD_BASE ".vf"
*************** extern GTY(()) vec<tree, va_gc> *keyed_c
*** 5470,5475 ****
--- 5490,5496 ----
  #ifndef NO_DOLLAR_IN_LABEL
  
  #define JOINER '$'
+ #define JOIN_STR "$"
  
  #define AUTO_TEMP_NAME "_$tmp_"
  #define VFIELD_BASE "$vf"
*************** extern GTY(()) vec<tree, va_gc> *keyed_c
*** 5478,5483 ****
--- 5499,5506 ----
  
  #else /* NO_DOLLAR_IN_LABEL */
  
+ #define JOIN_STR "_"
+ 
  #define VTABLE_NAME "__vt_"
  #define VTABLE_NAME_P(ID_NODE) \
    (!strncmp (IDENTIFIER_POINTER (ID_NODE), VTABLE_NAME, \
*************** extern tree finish_co_yield_expr		(locat
*** 7988,7993 ****
--- 8011,8019 ----
  extern tree coro_validate_builtin_call		(tree,
  						 tsubst_flags_t = tf_warning_or_error);
  extern bool morph_fn_to_coro			(tree, tree *, tree *);
+ extern tree coro_get_actor_function		(tree);
+ extern tree coro_get_destroy_function		(tree);
+ extern tree coro_get_ramp_function		(tree);
  
  /* Inline bodies.  */
  
*************** is_constrained_auto (const_tree t)
*** 8132,8137 ****
--- 8158,8176 ----
    return is_auto (t) && PLACEHOLDER_TYPE_CONSTRAINTS (t);
  }
  
+ /* True if CODE, a tree code, denotes a tree whose operand is not evaluated
+    as per [expr.context], i.e., an operand to sizeof, typeof, decltype, or
+    alignof.  */
+ 
+ inline bool
+ unevaluated_p (tree_code code)
+ {
+   return (code == DECLTYPE_TYPE
+ 	  || code == ALIGNOF_EXPR
+ 	  || code == SIZEOF_EXPR
+ 	  || code == NOEXCEPT_EXPR);
+ }
+ 
  /* RAII class to push/pop class scope T; if T is not a class, do nothing.  */
  
  struct push_nested_class_guard
diff -Nrcpad gcc-10.3.0/gcc/cp/cvt.c gcc-10.4.0/gcc/cp/cvt.c
*** gcc-10.3.0/gcc/cp/cvt.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/cvt.c	Tue Jun 28 08:54:28 2022
*************** can_convert_qual (tree type, tree expr)
*** 2004,2009 ****
--- 2004,2014 ----
    tree expr_type = TREE_TYPE (expr);
    gcc_assert (!same_type_p (type, expr_type));
  
+   /* A function pointer conversion also counts as a Qualification Adjustment
+      under [over.ics.scs].  */
+   if (fnptr_conv_p (type, expr_type))
+     return true;
+ 
    if (TYPE_PTR_P (type) && TYPE_PTR_P (expr_type))
      return comp_ptr_ttypes (TREE_TYPE (type), TREE_TYPE (expr_type));
    else if (TYPE_PTRMEM_P (type) && TYPE_PTRMEM_P (expr_type))
diff -Nrcpad gcc-10.3.0/gcc/cp/decl.c gcc-10.4.0/gcc/cp/decl.c
*** gcc-10.3.0/gcc/cp/decl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/decl.c	Tue Jun 28 08:54:28 2022
*************** start_decl (const cp_declarator *declara
*** 5447,5453 ****
        && DECL_DECLARED_CONSTEXPR_P (current_function_decl))
      {
        bool ok = false;
!       if (CP_DECL_THREAD_LOCAL_P (decl))
  	error_at (DECL_SOURCE_LOCATION (decl),
  		  "%qD declared %<thread_local%> in %qs function", decl,
  		  DECL_IMMEDIATE_FUNCTION_P (current_function_decl)
--- 5447,5453 ----
        && DECL_DECLARED_CONSTEXPR_P (current_function_decl))
      {
        bool ok = false;
!       if (CP_DECL_THREAD_LOCAL_P (decl) && !DECL_REALLY_EXTERN (decl))
  	error_at (DECL_SOURCE_LOCATION (decl),
  		  "%qD declared %<thread_local%> in %qs function", decl,
  		  DECL_IMMEDIATE_FUNCTION_P (current_function_decl)
*************** layout_var_decl (tree decl)
*** 5837,5842 ****
--- 5837,5874 ----
  	  error_at (DECL_SOURCE_LOCATION (decl),
  		    "storage size of %qD isn%'t constant", decl);
  	  TREE_TYPE (decl) = error_mark_node;
+ 	  type = error_mark_node;
+ 	}
+     }
+ 
+   /* If the final element initializes a flexible array field, add the size of
+      that initializer to DECL's size.  */
+   if (type != error_mark_node
+       && DECL_INITIAL (decl)
+       && TREE_CODE (DECL_INITIAL (decl)) == CONSTRUCTOR
+       && !vec_safe_is_empty (CONSTRUCTOR_ELTS (DECL_INITIAL (decl)))
+       && DECL_SIZE (decl) != NULL_TREE
+       && TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST
+       && TYPE_SIZE (type) != NULL_TREE
+       && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
+       && tree_int_cst_equal (DECL_SIZE (decl), TYPE_SIZE (type)))
+     {
+       constructor_elt &elt = CONSTRUCTOR_ELTS (DECL_INITIAL (decl))->last ();
+       if (elt.index)
+ 	{
+ 	  tree itype = TREE_TYPE (elt.index);
+ 	  tree vtype = TREE_TYPE (elt.value);
+ 	  if (TREE_CODE (itype) == ARRAY_TYPE
+ 	      && TYPE_DOMAIN (itype) == NULL
+ 	      && TREE_CODE (vtype) == ARRAY_TYPE
+ 	      && COMPLETE_TYPE_P (vtype))
+ 	    {
+ 	      DECL_SIZE (decl)
+ 		= size_binop (PLUS_EXPR, DECL_SIZE (decl), TYPE_SIZE (vtype));
+ 	      DECL_SIZE_UNIT (decl)
+ 		= size_binop (PLUS_EXPR, DECL_SIZE_UNIT (decl),
+ 			      TYPE_SIZE_UNIT (vtype));
+ 	    }
  	}
      }
  }
*************** check_initializer (tree decl, tree init,
*** 6844,6855 ****
  	      /* Declared constexpr or constinit, but no suitable initializer;
  		 massage init appropriately so we can pass it into
  		 store_init_value for the error.  */
! 	      if (CLASS_TYPE_P (type)
! 		  && (!init || TREE_CODE (init) == TREE_LIST))
  		{
! 		  init = build_functional_cast (input_location, type,
! 						init, tf_none);
! 		  if (TREE_CODE (init) == TARGET_EXPR)
  		    TARGET_EXPR_DIRECT_INIT_P (init) = true;
  		}
  	      init_code = NULL_TREE;
--- 6876,6894 ----
  	      /* Declared constexpr or constinit, but no suitable initializer;
  		 massage init appropriately so we can pass it into
  		 store_init_value for the error.  */
! 	      tree new_init = NULL_TREE;
! 	      if (!processing_template_decl
! 		  && TREE_CODE (init_code) == CALL_EXPR)
! 		new_init = build_cplus_new (type, init_code, tf_none);
! 	      else if (CLASS_TYPE_P (type)
! 		       && (!init || TREE_CODE (init) == TREE_LIST))
! 		new_init = build_functional_cast (input_location, type,
! 						  init, tf_none);
! 	      if (new_init)
  		{
! 		  init = new_init;
! 		  if (TREE_CODE (init) == TARGET_EXPR
! 		      && !(flags & LOOKUP_ONLYCONVERTING))
  		    TARGET_EXPR_DIRECT_INIT_P (init) = true;
  		}
  	      init_code = NULL_TREE;
*************** check_initializer (tree decl, tree init,
*** 6904,6909 ****
--- 6943,6952 ----
    if (init && init != error_mark_node)
      init_code = build2 (INIT_EXPR, type, decl, init);
  
+   if (init_code && !TREE_SIDE_EFFECTS (init_code)
+       && init_code != error_mark_node)
+     init_code = NULL_TREE;
+ 
    if (init_code)
      {
        /* We might have set these in cp_finish_decl.  */
*************** cp_finish_decl (tree decl, tree init, bo
*** 7489,7498 ****
    if (asmspec_tree && asmspec_tree != error_mark_node)
      asmspec = TREE_STRING_POINTER (asmspec_tree);
  
!   if (current_class_type
!       && CP_DECL_CONTEXT (decl) == current_class_type
!       && TYPE_BEING_DEFINED (current_class_type)
!       && !CLASSTYPE_TEMPLATE_INSTANTIATION (current_class_type)
        && (DECL_INITIAL (decl) || init))
      DECL_INITIALIZED_IN_CLASS_P (decl) = 1;
  
--- 7532,7544 ----
    if (asmspec_tree && asmspec_tree != error_mark_node)
      asmspec = TREE_STRING_POINTER (asmspec_tree);
  
!   bool in_class_decl
!     = (current_class_type
!        && CP_DECL_CONTEXT (decl) == current_class_type
!        && TYPE_BEING_DEFINED (current_class_type)
!        && !CLASSTYPE_TEMPLATE_INSTANTIATION (current_class_type));
! 
!   if (in_class_decl
        && (DECL_INITIAL (decl) || init))
      DECL_INITIALIZED_IN_CLASS_P (decl) = 1;
  
*************** cp_finish_decl (tree decl, tree init, bo
*** 7863,7868 ****
--- 7909,7921 ----
  	  if (!flag_weak)
  	    /* Check again now that we have an initializer.  */
  	    maybe_commonize_var (decl);
+ 	  /* A class-scope constexpr variable with an out-of-class declaration.
+ 	     C++17 makes them implicitly inline, but still force it out.  */
+ 	  if (DECL_INLINE_VAR_P (decl)
+ 	      && !DECL_VAR_DECLARED_INLINE_P (decl)
+ 	      && !DECL_TEMPLATE_INSTANTIATION (decl)
+ 	      && !in_class_decl)
+ 	    mark_needed (decl);
  	}
  
        if (var_definition_p
*************** cp_finish_decl (tree decl, tree init, bo
*** 7947,7953 ****
      {
        unsigned i; tree t;
        FOR_EACH_VEC_ELT (*cleanups, i, t)
! 	push_cleanup (decl, t, false);
        release_tree_vector (cleanups);
      }
  
--- 8000,8006 ----
      {
        unsigned i; tree t;
        FOR_EACH_VEC_ELT (*cleanups, i, t)
! 	push_cleanup (NULL_TREE, t, false);
        release_tree_vector (cleanups);
      }
  
diff -Nrcpad gcc-10.3.0/gcc/cp/decl2.c gcc-10.4.0/gcc/cp/decl2.c
*** gcc-10.3.0/gcc/cp/decl2.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/decl2.c	Tue Jun 28 08:54:28 2022
*************** c_parse_final_cleanups (void)
*** 5054,5059 ****
--- 5054,5060 ----
  	  if (!DECL_EXTERNAL (decl)
  	      && decl_needed_p (decl)
  	      && !TREE_ASM_WRITTEN (decl)
+ 	      && !DECL_IMMEDIATE_FUNCTION_P (decl)
  	      && !node->definition)
  	    {
  	      /* We will output the function; no longer consider it in this
*************** mark_used (tree decl, tsubst_flags_t com
*** 5514,5519 ****
--- 5515,5521 ----
      used_types_insert (DECL_CONTEXT (decl));
  
    if (TREE_CODE (decl) == FUNCTION_DECL
+       && !DECL_DELETED_FN (decl)
        && !maybe_instantiate_noexcept (decl, complain))
      return false;
  
diff -Nrcpad gcc-10.3.0/gcc/cp/except.c gcc-10.4.0/gcc/cp/except.c
*** gcc-10.3.0/gcc/cp/except.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/except.c	Tue Jun 28 08:54:28 2022
*************** check_handlers (tree handlers)
*** 1103,1114 ****
       expression whose type is a polymorphic class type (10.3).  */
  
  static tree
! check_noexcept_r (tree *tp, int * /*walk_subtrees*/, void * /*data*/)
  {
    tree t = *tp;
    enum tree_code code = TREE_CODE (t);
!   if ((code == CALL_EXPR && CALL_EXPR_FN (t))
!       || code == AGGR_INIT_EXPR)
      {
        /* We can only use the exception specification of the called function
  	 for determining the value of a noexcept expression; we can't use
--- 1103,1117 ----
       expression whose type is a polymorphic class type (10.3).  */
  
  static tree
! check_noexcept_r (tree *tp, int *walk_subtrees, void *)
  {
    tree t = *tp;
    enum tree_code code = TREE_CODE (t);
! 
!   if (unevaluated_p (code))
!     *walk_subtrees = false;
!   else if ((code == CALL_EXPR && CALL_EXPR_FN (t))
! 	   || code == AGGR_INIT_EXPR)
      {
        /* We can only use the exception specification of the called function
  	 for determining the value of a noexcept expression; we can't use
diff -Nrcpad gcc-10.3.0/gcc/cp/expr.c gcc-10.4.0/gcc/cp/expr.c
*** gcc-10.3.0/gcc/cp/expr.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/expr.c	Tue Jun 28 08:54:28 2022
*************** mark_use (tree expr, bool rvalue_p, bool
*** 226,242 ****
  	     a volatile-qualified type is deprecated unless the assignment
  	     is either a discarded-value expression or appears in an
  	     unevaluated context."  */
! 	  if (read_p
! 	      && !cp_unevaluated_operand
  	      && (TREE_THIS_VOLATILE (lhs)
  		  || CP_TYPE_VOLATILE_P (TREE_TYPE (lhs)))
  	      && !TREE_THIS_VOLATILE (expr))
  	    {
! 	      warning_at (location_of (expr), OPT_Wvolatile,
! 			  "using value of simple assignment with %<volatile%>-"
! 			  "qualified left operand is deprecated");
! 	      /* Make sure not to warn about this assignment again.  */
! 	      TREE_THIS_VOLATILE (expr) = true;
  	    }
  	  break;
  	}
--- 226,242 ----
  	     a volatile-qualified type is deprecated unless the assignment
  	     is either a discarded-value expression or appears in an
  	     unevaluated context."  */
! 	  if (!cp_unevaluated_operand
  	      && (TREE_THIS_VOLATILE (lhs)
  		  || CP_TYPE_VOLATILE_P (TREE_TYPE (lhs)))
  	      && !TREE_THIS_VOLATILE (expr))
  	    {
! 	      if (warning_at (location_of (expr), OPT_Wvolatile,
! 			      "using value of simple assignment with "
! 			      "%<volatile%>-qualified left operand is "
! 			      "deprecated"))
! 		/* Make sure not to warn about this assignment again.  */
! 		TREE_THIS_VOLATILE (expr) = true;
  	    }
  	  break;
  	}
diff -Nrcpad gcc-10.3.0/gcc/cp/init.c gcc-10.4.0/gcc/cp/init.c
*** gcc-10.3.0/gcc/cp/init.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/init.c	Tue Jun 28 08:54:28 2022
*************** get_nsdmi (tree member, bool in_ctor, ts
*** 585,600 ****
  
  	  bool pushed = false;
  	  tree ctx = DECL_CONTEXT (member);
! 	  if (!currently_open_class (ctx)
! 	      && !LOCAL_CLASS_P (ctx))
  	    {
! 	      push_to_top_level ();
  	      push_nested_class (ctx);
  	      pushed = true;
  	    }
  
- 	  gcc_checking_assert (!processing_template_decl);
- 
  	  inject_this_parameter (ctx, TYPE_UNQUALIFIED);
  
  	  start_lambda_scope (member);
--- 585,605 ----
  
  	  bool pushed = false;
  	  tree ctx = DECL_CONTEXT (member);
! 
! 	  processing_template_decl_sentinel ptds (/*reset*/false);
! 	  if (!currently_open_class (ctx))
  	    {
! 	      if (!LOCAL_CLASS_P (ctx))
! 		push_to_top_level ();
! 	      else
! 		/* push_to_top_level would lose the necessary function context,
! 		   just reset processing_template_decl.  */
! 		processing_template_decl = 0;
  	      push_nested_class (ctx);
+ 	      push_deferring_access_checks (dk_no_deferred);
  	      pushed = true;
  	    }
  
  	  inject_this_parameter (ctx, TYPE_UNQUALIFIED);
  
  	  start_lambda_scope (member);
*************** get_nsdmi (tree member, bool in_ctor, ts
*** 615,622 ****
  
  	  if (pushed)
  	    {
  	      pop_nested_class ();
! 	      pop_from_top_level ();
  	    }
  
  	  input_location = sloc;
--- 620,629 ----
  
  	  if (pushed)
  	    {
+ 	      pop_deferring_access_checks ();
  	      pop_nested_class ();
! 	      if (!LOCAL_CLASS_P (ctx))
! 		pop_from_top_level ();
  	    }
  
  	  input_location = sloc;
*************** perform_member_init (tree member, tree i
*** 881,887 ****
        init = build2 (INIT_EXPR, type, decl, init);
        finish_expr_stmt (init);
        FOR_EACH_VEC_ELT (*cleanups, i, t)
! 	push_cleanup (decl, t, false);
      }
    else if (type_build_ctor_call (type)
  	   || (init && CLASS_TYPE_P (strip_array_types (type))))
--- 888,894 ----
        init = build2 (INIT_EXPR, type, decl, init);
        finish_expr_stmt (init);
        FOR_EACH_VEC_ELT (*cleanups, i, t)
! 	push_cleanup (NULL_TREE, t, false);
      }
    else if (type_build_ctor_call (type)
  	   || (init && CLASS_TYPE_P (strip_array_types (type))))
*************** std_placement_new_fn_p (tree alloc_fn)
*** 2868,2900 ****
  }
  
  /* For element type ELT_TYPE, return the appropriate type of the heap object
!    containing such element(s).  COOKIE_SIZE is NULL or the size of cookie
!    in bytes.  FULL_SIZE is NULL if it is unknown how big the heap allocation
!    will be, otherwise size of the heap object.  If COOKIE_SIZE is NULL,
!    return array type ELT_TYPE[FULL_SIZE / sizeof(ELT_TYPE)], otherwise return
     struct { size_t[COOKIE_SIZE/sizeof(size_t)]; ELT_TYPE[N]; }
!    where N is nothing (flexible array member) if FULL_SIZE is NULL, otherwise
!    it is computed such that the size of the struct fits into FULL_SIZE.  */
  
  tree
! build_new_constexpr_heap_type (tree elt_type, tree cookie_size, tree full_size)
  {
!   gcc_assert (cookie_size == NULL_TREE || tree_fits_uhwi_p (cookie_size));
!   gcc_assert (full_size == NULL_TREE || tree_fits_uhwi_p (full_size));
!   unsigned HOST_WIDE_INT csz = cookie_size ? tree_to_uhwi (cookie_size) : 0;
!   tree itype2 = NULL_TREE;
!   if (full_size)
!     {
!       unsigned HOST_WIDE_INT fsz = tree_to_uhwi (full_size);
!       gcc_assert (fsz >= csz);
!       fsz -= csz;
!       fsz /= int_size_in_bytes (elt_type);
!       itype2 = build_index_type (size_int (fsz - 1));
!       if (!cookie_size)
! 	return build_cplus_array_type (elt_type, itype2);
!     }
!   else
!     gcc_assert (cookie_size);
    csz /= int_size_in_bytes (sizetype);
    tree itype1 = build_index_type (size_int (csz - 1));
    tree atype1 = build_cplus_array_type (sizetype, itype1);
--- 2875,2891 ----
  }
  
  /* For element type ELT_TYPE, return the appropriate type of the heap object
!    containing such element(s).  COOKIE_SIZE is the size of cookie in bytes.
!    Return
     struct { size_t[COOKIE_SIZE/sizeof(size_t)]; ELT_TYPE[N]; }
!    where N is nothing (flexible array member) if ITYPE2 is NULL, otherwise
!    the array has ITYPE2 as its TYPE_DOMAIN.  */
  
  tree
! build_new_constexpr_heap_type (tree elt_type, tree cookie_size, tree itype2)
  {
!   gcc_assert (tree_fits_uhwi_p (cookie_size));
!   unsigned HOST_WIDE_INT csz = tree_to_uhwi (cookie_size);
    csz /= int_size_in_bytes (sizetype);
    tree itype1 = build_index_type (size_int (csz - 1));
    tree atype1 = build_cplus_array_type (sizetype, itype1);
*************** build_new_1 (vec<tree, va_gc> **placemen
*** 3238,3244 ****
  
    tree align_arg = NULL_TREE;
    if (type_has_new_extended_alignment (elt_type))
!     align_arg = build_int_cst (align_type_node, TYPE_ALIGN_UNIT (elt_type));
  
    alloc_fn = NULL_TREE;
  
--- 3229,3241 ----
  
    tree align_arg = NULL_TREE;
    if (type_has_new_extended_alignment (elt_type))
!     {
!       unsigned align = TYPE_ALIGN_UNIT (elt_type);
!       /* Also consider the alignment of the cookie, if any.  */
!       if (array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type))
! 	align = MAX (align, TYPE_ALIGN_UNIT (size_type_node));
!       align_arg = build_int_cst (align_type_node, align);
!     }
  
    alloc_fn = NULL_TREE;
  
*************** build_new_1 (vec<tree, va_gc> **placemen
*** 3340,3345 ****
--- 3337,3348 ----
  	    outer_nelts_check = NULL_TREE;
  	}
  
+       /* If size is zero e.g. due to type having zero size, try to
+ 	 preserve outer_nelts for constant expression evaluation
+ 	 purposes.  */
+       if (integer_zerop (size) && outer_nelts)
+ 	size = build2 (MULT_EXPR, TREE_TYPE (size), size, outer_nelts);
+ 
        alloc_call = build_operator_new_call (fnname, placement,
  					    &size, &cookie_size,
  					    align_arg, outer_nelts_check,
*************** build_new_1 (vec<tree, va_gc> **placemen
*** 3418,3435 ****
    if (TREE_CODE (alloc_call_expr) == CALL_EXPR)
      CALL_FROM_NEW_OR_DELETE_P (alloc_call_expr) = 1;
  
    if (cookie_size)
!     alloc_call = maybe_wrap_new_for_constexpr (alloc_call, elt_type,
  					       cookie_size);
  
    /* In the simple case, we can stop now.  */
    pointer_type = build_pointer_type (type);
    if (!cookie_size && !is_initialized)
!     return build_nop (pointer_type, alloc_call);
  
    /* Store the result of the allocation call in a variable so that we can
       use it more than once.  */
!   alloc_expr = get_target_expr (alloc_call);
    alloc_node = TARGET_EXPR_SLOT (alloc_expr);
  
    /* Strip any COMPOUND_EXPRs from ALLOC_CALL.  */
--- 3421,3439 ----
    if (TREE_CODE (alloc_call_expr) == CALL_EXPR)
      CALL_FROM_NEW_OR_DELETE_P (alloc_call_expr) = 1;
  
+   alloc_expr = alloc_call;
    if (cookie_size)
!     alloc_expr = maybe_wrap_new_for_constexpr (alloc_call, type,
  					       cookie_size);
  
    /* In the simple case, we can stop now.  */
    pointer_type = build_pointer_type (type);
    if (!cookie_size && !is_initialized)
!     return build_nop (pointer_type, alloc_expr);
  
    /* Store the result of the allocation call in a variable so that we can
       use it more than once.  */
!   alloc_expr = get_target_expr (alloc_expr);
    alloc_node = TARGET_EXPR_SLOT (alloc_expr);
  
    /* Strip any COMPOUND_EXPRs from ALLOC_CALL.  */
*************** build_vec_init (tree base, tree maxindex
*** 4332,4337 ****
--- 4336,4349 ----
    else
      ptype = atype;
  
+   if (integer_all_onesp (maxindex))
+     {
+       /* Shortcut zero element case to avoid unneeded constructor synthesis.  */
+       if (init && TREE_SIDE_EFFECTS (init))
+ 	base = build2 (COMPOUND_EXPR, ptype, init, base);
+       return base;
+     }
+ 
    /* The code we are generating looks like:
       ({
         T* t1 = (T*) base;
diff -Nrcpad gcc-10.3.0/gcc/cp/lambda.c gcc-10.4.0/gcc/cp/lambda.c
*** gcc-10.3.0/gcc/cp/lambda.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/lambda.c	Tue Jun 28 08:54:28 2022
*************** lambda_function (tree lambda)
*** 202,207 ****
--- 202,225 ----
    return lambda;
  }
  
+ /* True if EXPR is an expression whose type can be used directly in lambda
+    capture.  Not to be used for 'auto'.  */
+ 
+ static bool
+ type_deducible_expression_p (tree expr)
+ {
+   if (!type_dependent_expression_p (expr))
+     return true;
+   if (BRACE_ENCLOSED_INITIALIZER_P (expr)
+       || TREE_CODE (expr) == EXPR_PACK_EXPANSION)
+     return false;
+   tree t = non_reference (TREE_TYPE (expr));
+   if (!t) return false;
+   while (TREE_CODE (t) == POINTER_TYPE)
+     t = TREE_TYPE (t);
+   return currently_open_class (t);
+ }
+ 
  /* Returns the type to use for the FIELD_DECL corresponding to the
     capture of EXPR.  EXPLICIT_INIT_P indicates whether this is a
     C++14 init capture, and BY_REFERENCE_P indicates whether we're
*************** lambda_capture_field_type (tree expr, bo
*** 228,234 ****
        else
  	type = do_auto_deduction (type, expr, auto_node);
      }
!   else if (!is_this && type_dependent_expression_p (expr))
      {
        type = cxx_make_type (DECLTYPE_TYPE);
        DECLTYPE_TYPE_EXPR (type) = expr;
--- 246,252 ----
        else
  	type = do_auto_deduction (type, expr, auto_node);
      }
!   else if (!is_this && !type_deducible_expression_p (expr))
      {
        type = cxx_make_type (DECLTYPE_TYPE);
        DECLTYPE_TYPE_EXPR (type) = expr;
*************** add_capture (tree lambda, tree id, tree
*** 607,614 ****
  	   parameter pack in this context.  We will want as many fields as we
  	   have elements in the expansion of the initializer, so use its packs
  	   instead.  */
! 	PACK_EXPANSION_PARAMETER_PACKS (type)
! 	  = uses_parameter_packs (initializer);
      }
  
    /* Make member variable.  */
--- 625,635 ----
  	   parameter pack in this context.  We will want as many fields as we
  	   have elements in the expansion of the initializer, so use its packs
  	   instead.  */
! 	{
! 	  PACK_EXPANSION_PARAMETER_PACKS (type)
! 	    = uses_parameter_packs (initializer);
! 	  PACK_EXPANSION_AUTO_P (type) = true;
! 	}
      }
  
    /* Make member variable.  */
*************** lambda_expr_this_capture (tree lambda, i
*** 740,745 ****
--- 761,767 ----
      {
        tree lambda_stack = NULL_TREE;
        tree init = NULL_TREE;
+       bool saw_complete = false;
  
        /* If we are in a lambda function, we can move out until we hit:
             1. a non-lambda function or NSDMI,
*************** lambda_expr_this_capture (tree lambda, i
*** 758,763 ****
--- 780,790 ----
  				      lambda_stack);
  
  	  tree closure = LAMBDA_EXPR_CLOSURE (tlambda);
+ 	  if (COMPLETE_TYPE_P (closure))
+ 	    /* We're instantiating a generic lambda op(), the containing
+ 	       scope may be gone.  */
+ 	    saw_complete = true;
+ 
  	  tree containing_function
  	    = decl_function_context (TYPE_NAME (closure));
  
*************** lambda_expr_this_capture (tree lambda, i
*** 767,773 ****
  	      /* Lambda in an NSDMI.  We don't have a function to look up
  		 'this' in, but we can find (or rebuild) the fake one from
  		 inject_this_parameter.  */
! 	      if (!containing_function && !COMPLETE_TYPE_P (closure))
  		/* If we're parsing a lambda in a non-local class,
  		   we can find the fake 'this' in scope_chain.  */
  		init = scope_chain->x_current_class_ptr;
--- 794,800 ----
  	      /* Lambda in an NSDMI.  We don't have a function to look up
  		 'this' in, but we can find (or rebuild) the fake one from
  		 inject_this_parameter.  */
! 	      if (!containing_function && !saw_complete)
  		/* If we're parsing a lambda in a non-local class,
  		   we can find the fake 'this' in scope_chain.  */
  		init = scope_chain->x_current_class_ptr;
diff -Nrcpad gcc-10.3.0/gcc/cp/mangle.c gcc-10.4.0/gcc/cp/mangle.c
*** gcc-10.3.0/gcc/cp/mangle.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/mangle.c	Tue Jun 28 08:54:28 2022
*************** write_encoding (const tree decl)
*** 847,852 ****
--- 847,864 ----
        write_bare_function_type (fn_type,
  				mangle_return_type_p (decl),
  				d);
+ 
+       /* If this is a coroutine helper, then append an appropriate string to
+ 	 identify which.  */
+       if (tree ramp = DECL_RAMP_FN (decl))
+ 	{
+ 	  if (DECL_ACTOR_FN (ramp) == decl)
+ 	    write_string (JOIN_STR "actor");
+ 	  else if (DECL_DESTROY_FN (ramp) == decl)
+ 	    write_string (JOIN_STR "destroy");
+ 	  else
+ 	    gcc_unreachable ();
+ 	}
      }
  }
  
*************** write_unqualified_name (tree decl)
*** 1383,1391 ****
  	}
        else if (DECL_OVERLOADED_OPERATOR_P (decl))
  	{
  	  const char *mangled_name
! 	    = (ovl_op_info[DECL_ASSIGNMENT_OPERATOR_P (decl)]
! 	       [DECL_OVERLOADED_OPERATOR_CODE_RAW (decl)].mangled_name);
  	  write_string (mangled_name);
  	}
        else if (UDLIT_OPER_P (DECL_NAME (decl)))
--- 1395,1406 ----
  	}
        else if (DECL_OVERLOADED_OPERATOR_P (decl))
  	{
+ 	  tree t;
+ 	  if (!(t = DECL_RAMP_FN (decl)))
+ 	    t = decl;
  	  const char *mangled_name
! 	    = (ovl_op_info[DECL_ASSIGNMENT_OPERATOR_P (t)]
! 	       [DECL_OVERLOADED_OPERATOR_CODE_RAW (t)].mangled_name);
  	  write_string (mangled_name);
  	}
        else if (UDLIT_OPER_P (DECL_NAME (decl)))
*************** write_literal_operator_name (tree identi
*** 1589,1594 ****
--- 1604,1610 ----
  static void
  write_compact_number (int num)
  {
+   gcc_checking_assert (num >= 0);
    if (num > 0)
      write_unsigned_number (num - 1);
    write_char ('_');
*************** write_local_name (tree function, const t
*** 1988,2002 ****
    /* For this purpose, parameters are numbered from right-to-left.  */
    if (parm)
      {
!       tree t;
!       int i = 0;
!       for (t = DECL_ARGUMENTS (function); t; t = DECL_CHAIN (t))
! 	{
! 	  if (t == parm)
! 	    i = 1;
! 	  else if (i)
! 	    ++i;
! 	}
        write_char ('d');
        write_compact_number (i - 1);
      }
--- 2004,2010 ----
    /* For this purpose, parameters are numbered from right-to-left.  */
    if (parm)
      {
!       int i = list_length (parm);
        write_char ('d');
        write_compact_number (i - 1);
      }
diff -Nrcpad gcc-10.3.0/gcc/cp/method.c gcc-10.4.0/gcc/cp/method.c
*** gcc-10.3.0/gcc/cp/method.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/method.c	Tue Jun 28 08:54:28 2022
*************** constructible_expr (tree to, tree from)
*** 1877,1882 ****
--- 1877,1883 ----
  static tree
  is_xible_helper (enum tree_code code, tree to, tree from, bool trivial)
  {
+   to = complete_type (to);
    deferring_access_check_sentinel acs (dk_no_deferred);
    if (VOID_TYPE_P (to) || ABSTRACT_CLASS_TYPE_P (to)
        || (from && FUNC_OR_METHOD_TYPE_P (from)
*************** defaulted_late_check (tree fn)
*** 2934,2940 ****
        /* If the function was declared constexpr, check that the definition
  	 qualifies.  Otherwise we can define the function lazily.  */
        if (DECL_DECLARED_CONSTEXPR_P (fn) && !DECL_INITIAL (fn))
! 	synthesize_method (fn);
        return;
      }
  
--- 2935,2946 ----
        /* If the function was declared constexpr, check that the definition
  	 qualifies.  Otherwise we can define the function lazily.  */
        if (DECL_DECLARED_CONSTEXPR_P (fn) && !DECL_INITIAL (fn))
! 	{
! 	  /* Prevent GC.  */
! 	  function_depth++;
! 	  synthesize_method (fn);
! 	  function_depth--;
! 	}
        return;
      }
  
diff -Nrcpad gcc-10.3.0/gcc/cp/name-lookup.c gcc-10.4.0/gcc/cp/name-lookup.c
*** gcc-10.3.0/gcc/cp/name-lookup.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/name-lookup.c	Tue Jun 28 08:54:28 2022
*************** check_local_shadow (tree decl)
*** 2762,2767 ****
--- 2762,2771 ----
        enum opt_code warning_code;
        if (warn_shadow)
  	warning_code = OPT_Wshadow;
+       else if ((TREE_CODE (decl) == TYPE_DECL)
+ 	       ^ (TREE_CODE (old) == TYPE_DECL))
+ 	/* If exactly one is a type, they aren't compatible.  */
+ 	warning_code = OPT_Wshadow_local;
        else if ((TREE_TYPE (old)
  		&& TREE_TYPE (decl)
  		&& same_type_p (TREE_TYPE (old), TREE_TYPE (decl)))
*************** check_local_shadow (tree decl)
*** 2802,2808 ****
    /* Don't warn for artificial things that are not implicit typedefs.  */
    if (DECL_ARTIFICIAL (decl) && !DECL_IMPLICIT_TYPEDEF_P (decl))
      return;
!   
    if (nonlambda_method_basetype ())
      if (tree member = lookup_member (current_nonlambda_class_type (),
  				     DECL_NAME (decl), /*protect=*/0,
--- 2806,2812 ----
    /* Don't warn for artificial things that are not implicit typedefs.  */
    if (DECL_ARTIFICIAL (decl) && !DECL_IMPLICIT_TYPEDEF_P (decl))
      return;
! 
    if (nonlambda_method_basetype ())
      if (tree member = lookup_member (current_nonlambda_class_type (),
  				     DECL_NAME (decl), /*protect=*/0,
*************** check_local_shadow (tree decl)
*** 2814,2821 ****
  	   is a function or a pointer-to-function.  */
  	if (!OVL_P (member)
  	    || TREE_CODE (decl) == FUNCTION_DECL
! 	    || TYPE_PTRFN_P (TREE_TYPE (decl))
! 	    || TYPE_PTRMEMFUNC_P (TREE_TYPE (decl)))
  	  {
  	    auto_diagnostic_group d;
  	    if (warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wshadow,
--- 2818,2826 ----
  	   is a function or a pointer-to-function.  */
  	if (!OVL_P (member)
  	    || TREE_CODE (decl) == FUNCTION_DECL
! 	    || (TREE_TYPE (decl)
! 		&& (TYPE_PTRFN_P (TREE_TYPE (decl))
! 		    || TYPE_PTRMEMFUNC_P (TREE_TYPE (decl)))))
  	  {
  	    auto_diagnostic_group d;
  	    if (warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wshadow,
diff -Nrcpad gcc-10.3.0/gcc/cp/parser.c gcc-10.4.0/gcc/cp/parser.c
*** gcc-10.3.0/gcc/cp/parser.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/parser.c	Tue Jun 28 08:54:28 2022
*************** cp_parser_postfix_expression (cp_parser
*** 7162,7169 ****
  	}
  	/* Look for the closing `)'.  */
  	parens.require_close (parser);
! 	return cp_build_vec_convert (expression, type_location, type,
! 				     tf_warning_or_error);
        }
  
      default:
--- 7162,7171 ----
  	}
  	/* Look for the closing `)'.  */
  	parens.require_close (parser);
! 	postfix_expression
! 	  = cp_build_vec_convert (expression, type_location, type,
! 				  tf_warning_or_error);
! 	break;
        }
  
      default:
*************** cp_parser_explicit_specialization (cp_pa
*** 17631,17636 ****
--- 17633,17643 ----
    --parser->num_template_parameter_lists;
  }
  
+ /* Preserve the attributes across a garbage collect (by making it a GC
+    root), which can occur when parsing a member function.  */
+ 
+ static GTY(()) vec<tree, va_gc> *cp_parser_decl_specs_attrs;
+ 
  /* Parse a type-specifier.
  
     type-specifier:
*************** cp_parser_type_specifier (cp_parser* par
*** 17723,17730 ****
--- 17730,17741 ----
        /* Parse tentatively so that we can back up if we don't find a
  	 class-specifier.  */
        cp_parser_parse_tentatively (parser);
+       if (decl_specs->attributes)
+ 	vec_safe_push (cp_parser_decl_specs_attrs, decl_specs->attributes);
        /* Look for the class-specifier.  */
        type_spec = cp_parser_class_specifier (parser);
+       if (decl_specs->attributes)
+ 	cp_parser_decl_specs_attrs->pop ();
        invoke_plugin_callbacks (PLUGIN_FINISH_TYPE, type_spec);
        /* If that worked, we're done.  */
        if (cp_parser_parse_definitely (parser))
*************** cp_parser_class_specifier_1 (cp_parser*
*** 24091,24121 ****
  	  maybe_end_member_template_processing ();
  	}
        vec_safe_truncate (unparsed_funs_with_default_args, 0);
-       /* Now parse any NSDMIs.  */
-       save_ccp = current_class_ptr;
-       save_ccr = current_class_ref;
-       FOR_EACH_VEC_SAFE_ELT (unparsed_nsdmis, ix, decl)
- 	{
- 	  if (class_type != DECL_CONTEXT (decl))
- 	    {
- 	      if (pushed_scope)
- 		pop_scope (pushed_scope);
- 	      class_type = DECL_CONTEXT (decl);
- 	      pushed_scope = push_scope (class_type);
- 	    }
- 	  inject_this_parameter (class_type, TYPE_UNQUALIFIED);
- 	  cp_parser_late_parsing_nsdmi (parser, decl);
- 	}
-       vec_safe_truncate (unparsed_nsdmis, 0);
-       current_class_ptr = save_ccp;
-       current_class_ref = save_ccr;
-       if (pushed_scope)
- 	pop_scope (pushed_scope);
  
        /* If there are noexcept-specifiers that have not yet been processed,
! 	 take care of them now.  */
!       class_type = NULL_TREE;
!       pushed_scope = NULL_TREE;
        FOR_EACH_VEC_SAFE_ELT (unparsed_noexcepts, ix, decl)
  	{
  	  tree ctx = DECL_CONTEXT (decl);
--- 24102,24111 ----
  	  maybe_end_member_template_processing ();
  	}
        vec_safe_truncate (unparsed_funs_with_default_args, 0);
  
        /* If there are noexcept-specifiers that have not yet been processed,
! 	 take care of them now.  Do this before processing NSDMIs as they
! 	 may depend on noexcept-specifiers already having been processed.  */
        FOR_EACH_VEC_SAFE_ELT (unparsed_noexcepts, ix, decl)
  	{
  	  tree ctx = DECL_CONTEXT (decl);
*************** cp_parser_class_specifier_1 (cp_parser*
*** 24163,24168 ****
--- 24153,24177 ----
  	  maybe_end_member_template_processing ();
  	}
        vec_safe_truncate (unparsed_noexcepts, 0);
+ 
+       /* Now parse any NSDMIs.  */
+       save_ccp = current_class_ptr;
+       save_ccr = current_class_ref;
+       FOR_EACH_VEC_SAFE_ELT (unparsed_nsdmis, ix, decl)
+ 	{
+ 	  if (class_type != DECL_CONTEXT (decl))
+ 	    {
+ 	      if (pushed_scope)
+ 		pop_scope (pushed_scope);
+ 	      class_type = DECL_CONTEXT (decl);
+ 	      pushed_scope = push_scope (class_type);
+ 	    }
+ 	  inject_this_parameter (class_type, TYPE_UNQUALIFIED);
+ 	  cp_parser_late_parsing_nsdmi (parser, decl);
+ 	}
+       vec_safe_truncate (unparsed_nsdmis, 0);
+       current_class_ptr = save_ccp;
+       current_class_ref = save_ccr;
        if (pushed_scope)
  	pop_scope (pushed_scope);
  
*************** cp_parser_member_declaration (cp_parser*
*** 25430,25437 ****
  		  || !DECL_DECLARES_FUNCTION_P (decl))
  		finish_member_declaration (decl);
  
! 	      if (TREE_CODE (decl) == FUNCTION_DECL)
! 		cp_parser_save_default_args (parser, decl);
  	      else if (TREE_CODE (decl) == FIELD_DECL
  		       && DECL_INITIAL (decl))
  		/* Add DECL to the queue of NSDMI to be parsed later.  */
--- 25439,25446 ----
  		  || !DECL_DECLARES_FUNCTION_P (decl))
  		finish_member_declaration (decl);
  
! 	      if (DECL_DECLARES_FUNCTION_P (decl))
! 		cp_parser_save_default_args (parser, STRIP_TEMPLATE (decl));
  	      else if (TREE_CODE (decl) == FIELD_DECL
  		       && DECL_INITIAL (decl))
  		/* Add DECL to the queue of NSDMI to be parsed later.  */
*************** cp_parser_template_introduction (cp_pars
*** 29209,29217 ****
--- 29218,29232 ----
    tree saved_scope = parser->scope;
    tree saved_object_scope = parser->object_scope;
    tree saved_qualifying_scope = parser->qualifying_scope;
+   bool saved_colon_corrects_to_scope_p = parser->colon_corrects_to_scope_p;
  
    cp_token *start_token = cp_lexer_peek_token (parser->lexer);
  
+   /* In classes don't parse valid unnamed bitfields as invalid
+      template introductions.  */
+   if (member_p)
+     parser->colon_corrects_to_scope_p = false;
+ 
    /* Look for the optional `::' operator.  */
    cp_parser_global_scope_opt (parser,
  			      /*current_scope_valid_p=*/false);
*************** cp_parser_template_introduction (cp_pars
*** 29232,29237 ****
--- 29247,29253 ----
    parser->scope = saved_scope;
    parser->object_scope = saved_object_scope;
    parser->qualifying_scope = saved_qualifying_scope;
+   parser->colon_corrects_to_scope_p = saved_colon_corrects_to_scope_p;
  
    if (concept_name == error_mark_node
        || (seen_error () && !concept_definition_p (tmpl_decl)))
diff -Nrcpad gcc-10.3.0/gcc/cp/pt.c gcc-10.4.0/gcc/cp/pt.c
*** gcc-10.3.0/gcc/cp/pt.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/pt.c	Tue Jun 28 08:54:28 2022
*************** static GTY(()) struct pending_template *
*** 63,69 ****
  int processing_template_parmlist;
  static int template_header_count;
  
- static GTY(()) tree saved_trees;
  static vec<int> inline_parm_levels;
  
  static GTY(()) struct tinst_level *current_tinst_level;
--- 63,68 ----
*************** maybe_process_partial_specialization (tr
*** 977,982 ****
--- 976,985 ----
    if (CLASS_TYPE_P (type) && CLASSTYPE_LAMBDA_EXPR (type))
      return type;
  
+   /* An injected-class-name is not a specialization.  */
+   if (DECL_SELF_REFERENCE_P (TYPE_NAME (type)))
+     return type;
+ 
    if (TREE_CODE (type) == BOUND_TEMPLATE_TEMPLATE_PARM)
      {
        error ("name of class shadows template template parameter %qD",
*************** get_underlying_template (tree tmpl)
*** 6516,6521 ****
--- 6519,6528 ----
  	      != num_innermost_template_parms (underlying)))
  	break;
  
+       /* Does the alias add cv-quals?  */
+       if (TYPE_QUALS (TREE_TYPE (underlying)) != TYPE_QUALS (TREE_TYPE (tmpl)))
+ 	break;
+ 
        tree alias_args = INNERMOST_TEMPLATE_ARGS (generic_targs_for (tmpl));
        if (!comp_template_args (TI_ARGS (tinfo), alias_args))
  	break;
*************** instantiate_class_template_1 (tree type)
*** 11762,11767 ****
--- 11769,11777 ----
       class, except we also need to push the enclosing classes.  */
    push_nested_class (type);
  
+   /* A vector to hold members marked with attribute used. */
+   auto_vec<tree> used;
+ 
    /* Now members are processed in the order of declaration.  */
    for (member = CLASSTYPE_DECL_LIST (pattern);
         member; member = TREE_CHAIN (member))
*************** instantiate_class_template_1 (tree type)
*** 11839,11845 ****
  	      finish_member_declaration (r);
  	      /* Instantiate members marked with attribute used.  */
  	      if (r != error_mark_node && DECL_PRESERVE_P (r))
! 		mark_used (r);
  	      if (TREE_CODE (r) == FUNCTION_DECL
  		  && DECL_OMP_DECLARE_REDUCTION_P (r))
  		cp_check_omp_declare_reduction (r);
--- 11849,11855 ----
  	      finish_member_declaration (r);
  	      /* Instantiate members marked with attribute used.  */
  	      if (r != error_mark_node && DECL_PRESERVE_P (r))
! 		used.safe_push (r);
  	      if (TREE_CODE (r) == FUNCTION_DECL
  		  && DECL_OMP_DECLARE_REDUCTION_P (r))
  		cp_check_omp_declare_reduction (r);
*************** instantiate_class_template_1 (tree type)
*** 11917,11923 ****
  			     /*flags=*/0);
  			  /* Instantiate members marked with attribute used. */
  			  if (r != error_mark_node && DECL_PRESERVE_P (r))
! 			    mark_used (r);
  			}
  		      else if (TREE_CODE (r) == FIELD_DECL)
  			{
--- 11927,11933 ----
  			     /*flags=*/0);
  			  /* Instantiate members marked with attribute used. */
  			  if (r != error_mark_node && DECL_PRESERVE_P (r))
! 			    used.safe_push (r);
  			}
  		      else if (TREE_CODE (r) == FIELD_DECL)
  			{
*************** instantiate_class_template_1 (tree type)
*** 12130,12135 ****
--- 12140,12152 ----
    if (TYPE_CONTAINS_VPTR_P (type) && CLASSTYPE_KEY_METHOD (type))
      vec_safe_push (keyed_classes, type);
  
+   /* Now that we've gone through all the members, instantiate those
+      marked with attribute used.  */
+   unsigned int i;
+   tree x;
+   FOR_EACH_VEC_ELT (used, i, x)
+     mark_used (x);
+ 
    return type;
  }
  
*************** use_pack_expansion_extra_args_p (tree pa
*** 12301,12309 ****
        return false;
      }
  
-   bool has_expansion_arg = false;
    for (int i = 0 ; i < arg_pack_len; ++i)
      {
        bool has_non_expansion_arg = false;
        for (tree parm_pack = parm_packs;
  	   parm_pack;
--- 12318,12326 ----
        return false;
      }
  
    for (int i = 0 ; i < arg_pack_len; ++i)
      {
+       bool has_expansion_arg = false;
        bool has_non_expansion_arg = false;
        for (tree parm_pack = parm_packs;
  	   parm_pack;
*************** use_pack_expansion_extra_args_p (tree pa
*** 12323,12329 ****
  	}
  
        if (has_expansion_arg && has_non_expansion_arg)
! 	return true;
      }
    return false;
  }
--- 12340,12349 ----
  	}
  
        if (has_expansion_arg && has_non_expansion_arg)
! 	{
! 	  gcc_checking_assert (false);
! 	  return true;
! 	}
      }
    return false;
  }
*************** tsubst_binary_right_fold (tree t, tree a
*** 12663,12669 ****
--- 12683,12693 ----
  class el_data
  {
  public:
+   /* Set of variables declared within the pattern.  */
    hash_set<tree> internal;
+   /* Set of AST nodes that have been visited by the traversal.  */
+   hash_set<tree> visited;
+   /* List of local_specializations used within the pattern.  */
    tree extra;
    tsubst_flags_t complain;
  
*************** extract_locals_r (tree *tp, int */*walk_
*** 12682,12688 ****
      tp = &TYPE_NAME (*tp);
  
    if (TREE_CODE (*tp) == DECL_EXPR)
!     data.internal.add (DECL_EXPR_DECL (*tp));
    else if (tree spec = retrieve_local_specialization (*tp))
      {
        if (data.internal.contains (*tp))
--- 12706,12741 ----
      tp = &TYPE_NAME (*tp);
  
    if (TREE_CODE (*tp) == DECL_EXPR)
!     {
!       tree decl = DECL_EXPR_DECL (*tp);
!       data.internal.add (decl);
!       if (VAR_P (decl)
! 	  && DECL_DECOMPOSITION_P (decl)
! 	  && TREE_TYPE (decl) != error_mark_node)
! 	{
! 	  gcc_assert (DECL_NAME (decl) == NULL_TREE);
! 	  for (tree decl2 = DECL_CHAIN (decl);
! 	       decl2
! 	       && VAR_P (decl2)
! 	       && DECL_DECOMPOSITION_P (decl2)
! 	       && DECL_NAME (decl2)
! 	       && TREE_TYPE (decl2) != error_mark_node;
! 	       decl2 = DECL_CHAIN (decl2))
! 	    {
! 	      gcc_assert (DECL_DECOMP_BASE (decl2) == decl);
! 	      data.internal.add (decl2);
! 	    }
! 	}
!     }
!   else if (TREE_CODE (*tp) == LAMBDA_EXPR)
!     {
!       /* Since we defer implicit capture, look in the parms and body.  */
!       tree fn = lambda_function (*tp);
!       cp_walk_tree (&TREE_TYPE (fn), &extract_locals_r, &data,
! 		    &data.visited);
!       cp_walk_tree (&DECL_SAVED_TREE (fn), &extract_locals_r, &data,
! 		    &data.visited);
!     }
    else if (tree spec = retrieve_local_specialization (*tp))
      {
        if (data.internal.contains (*tp))
*************** static tree
*** 12739,12745 ****
  extract_local_specs (tree pattern, tsubst_flags_t complain)
  {
    el_data data (complain);
!   cp_walk_tree_without_duplicates (&pattern, extract_locals_r, &data);
    return data.extra;
  }
  
--- 12792,12798 ----
  extract_local_specs (tree pattern, tsubst_flags_t complain)
  {
    el_data data (complain);
!   cp_walk_tree (&pattern, extract_locals_r, &data, &data.visited);
    return data.extra;
  }
  
*************** tsubst_pack_expansion (tree t, tree args
*** 13020,13031 ****
  	 pattern and return a PACK_EXPANSION_*. The caller will need to
  	 deal with that.  */
        if (TREE_CODE (t) == EXPR_PACK_EXPANSION)
! 	t = tsubst_expr (pattern, args, complain, in_decl,
  			 /*integral_constant_expression_p=*/false);
        else
! 	t = tsubst (pattern, args, complain, in_decl);
!       t = make_pack_expansion (t, complain);
!       return t;
      }
  
    gcc_assert (len >= 0);
--- 13073,13095 ----
  	 pattern and return a PACK_EXPANSION_*. The caller will need to
  	 deal with that.  */
        if (TREE_CODE (t) == EXPR_PACK_EXPANSION)
! 	result = tsubst_expr (pattern, args, complain, in_decl,
  			 /*integral_constant_expression_p=*/false);
        else
! 	result = tsubst (pattern, args, complain, in_decl);
!       result = make_pack_expansion (result, complain);
!       if (PACK_EXPANSION_AUTO_P (t))
! 	{
! 	  /* This is a fake auto... pack expansion created in add_capture with
! 	     _PACKS that don't appear in the pattern.  Copy one over.  */
! 	  packs = PACK_EXPANSION_PARAMETER_PACKS (t);
! 	  pack = retrieve_local_specialization (TREE_VALUE (packs));
! 	  gcc_checking_assert (DECL_PACK_P (pack));
! 	  PACK_EXPANSION_PARAMETER_PACKS (result)
! 	    = build_tree_list (NULL_TREE, pack);
! 	  PACK_EXPANSION_AUTO_P (result) = true;
! 	}
!       return result;
      }
  
    gcc_assert (len >= 0);
*************** tsubst_function_decl (tree t, tree args,
*** 13750,13794 ****
  	  if (tree spec = retrieve_specialization (gen_tmpl, argvec, hash))
  	    return spec;
  	}
- 
-       /* We can see more levels of arguments than parameters if
- 	 there was a specialization of a member template, like
- 	 this:
- 
- 	 template <class T> struct S { template <class U> void f(); }
- 	 template <> template <class U> void S<int>::f(U);
- 
- 	 Here, we'll be substituting into the specialization,
- 	 because that's where we can find the code we actually
- 	 want to generate, but we'll have enough arguments for
- 	 the most general template.
- 
- 	 We also deal with the peculiar case:
- 
- 	 template <class T> struct S {
- 	   template <class U> friend void f();
- 	 };
- 	 template <class U> void f() {}
- 	 template S<int>;
- 	 template void f<double>();
- 
- 	 Here, the ARGS for the instantiation of will be {int,
- 	 double}.  But, we only need as many ARGS as there are
- 	 levels of template parameters in CODE_PATTERN.  We are
- 	 careful not to get fooled into reducing the ARGS in
- 	 situations like:
- 
- 	 template <class T> struct S { template <class U> void f(U); }
- 	 template <class T> template <> void S<T>::f(int) {}
- 
- 	 which we can spot because the pattern will be a
- 	 specialization in this case.  */
-       int args_depth = TMPL_ARGS_DEPTH (args);
-       int parms_depth =
- 	TMPL_PARMS_DEPTH (DECL_TEMPLATE_PARMS (DECL_TI_TEMPLATE (t)));
- 
-       if (args_depth > parms_depth && !DECL_TEMPLATE_SPECIALIZATION (t))
- 	args = get_innermost_template_args (args, parms_depth);
      }
    else
      {
--- 13814,13819 ----
*************** enclosing_instantiation_of (tree otctx)
*** 14216,14221 ****
--- 14241,14259 ----
  		  || instantiated_lambda_fn_p (tctx));
         tctx = decl_function_context (tctx))
      ++lambda_count;
+ 
+   if (!tctx)
+     {
+       /* Match using DECL_SOURCE_LOCATION, which is unique for all lambdas.
+ 
+ 	 For GCC 11 the above condition limits this to the previously failing
+ 	 case where all enclosing functions are lambdas (95870).  FIXME.  */
+       for (tree ofn = fn; ofn; ofn = decl_function_context (ofn))
+ 	if (DECL_SOURCE_LOCATION (ofn) == DECL_SOURCE_LOCATION (otctx))
+ 	  return ofn;
+       gcc_unreachable ();
+     }
+ 
    for (; fn; fn = decl_function_context (fn))
      {
        tree ofn = fn;
*************** tsubst_decl (tree t, tree args, tsubst_f
*** 14776,14781 ****
--- 14814,14826 ----
  	  {
  	    DECL_ORIGINAL_TYPE (r) = NULL_TREE;
  	    set_underlying_type (r);
+ 
+ 	    /* common_handle_aligned_attribute doesn't apply the alignment
+ 	       to DECL_ORIGINAL_TYPE.  */
+ 	    if (TYPE_USER_ALIGN (TREE_TYPE (t)))
+ 	      TREE_TYPE (r) = build_aligned_type (TREE_TYPE (r),
+ 						  TYPE_ALIGN (TREE_TYPE (t)));
+ 
  	    if (TYPE_DECL_ALIAS_P (r))
  	      /* An alias template specialization can be dependent
  		 even if its underlying type is not.  */
*************** tsubst (tree t, tree args, tsubst_flags_
*** 15486,15491 ****
--- 15531,15538 ----
  		    else if (tree pl = CLASS_PLACEHOLDER_TEMPLATE (t))
  		      {
  			pl = tsubst_copy (pl, args, complain, in_decl);
+ 			if (TREE_CODE (pl) == TEMPLATE_TEMPLATE_PARM)
+ 			  pl = TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL (pl);
  			CLASS_PLACEHOLDER_TEMPLATE (r) = pl;
  		      }
  		  }
*************** tsubst_baselink (tree baselink, tree obj
*** 16093,16099 ****
  
    tree binfo_type = BINFO_TYPE (BASELINK_BINFO (baselink));
    binfo_type = tsubst (binfo_type, args, complain, in_decl);
!   bool dependent_p = binfo_type != BINFO_TYPE (BASELINK_BINFO (baselink));
  
    if (dependent_p)
      {
--- 16140,16147 ----
  
    tree binfo_type = BINFO_TYPE (BASELINK_BINFO (baselink));
    binfo_type = tsubst (binfo_type, args, complain, in_decl);
!   bool dependent_p = (binfo_type != BINFO_TYPE (BASELINK_BINFO (baselink))
! 		      || optype != BASELINK_OPTYPE (baselink));
  
    if (dependent_p)
      {
*************** tsubst_baselink (tree baselink, tree obj
*** 16119,16126 ****
  	fns = BASELINK_FUNCTIONS (baselink);
      }
    else
!     /* We're going to overwrite pieces below, make a duplicate.  */
!     baselink = copy_node (baselink);
  
    /* If lookup found a single function, mark it as used at this point.
       (If lookup found multiple functions the one selected later by
--- 16167,16185 ----
  	fns = BASELINK_FUNCTIONS (baselink);
      }
    else
!     {
!       /* We're going to overwrite pieces below, make a duplicate.  */
!       baselink = copy_node (baselink);
! 
!       if (qualifying_scope != BINFO_TYPE (BASELINK_ACCESS_BINFO (baselink)))
! 	{
! 	  /* The decl we found was from non-dependent scope, but we still need
! 	     to update the binfos for the instantiated qualifying_scope.  */
! 	  BASELINK_ACCESS_BINFO (baselink) = TYPE_BINFO (qualifying_scope);
! 	  BASELINK_BINFO (baselink) = lookup_base (qualifying_scope, binfo_type,
! 						   ba_unique, NULL, complain);
! 	}
!     }
  
    /* If lookup found a single function, mark it as used at this point.
       (If lookup found multiple functions the one selected later by
*************** tsubst_lambda_expr (tree t, tree args, t
*** 19223,19230 ****
  	 the purposes of template argument deduction. */
        complain = tf_warning_or_error;
  
!       tsubst_expr (DECL_SAVED_TREE (oldfn), args, complain, r,
! 		   /*constexpr*/false);
  
        finish_lambda_function (body);
  
--- 19282,19294 ----
  	 the purposes of template argument deduction. */
        complain = tf_warning_or_error;
  
!       tree saved = DECL_SAVED_TREE (oldfn);
!       if (TREE_CODE (saved) == BIND_EXPR && BIND_EXPR_BODY_BLOCK (saved))
! 	/* We already have a body block from start_lambda_function, we don't
! 	   need another to confuse NRV (91217).  */
! 	saved = BIND_EXPR_BODY (saved);
! 
!       tsubst_expr (saved, args, complain, r, /*constexpr*/false);
  
        finish_lambda_function (body);
  
*************** static bool uses_deducible_template_parm
*** 21670,21677 ****
  static bool
  deducible_expression (tree expr)
  {
!   /* Strip implicit conversions.  */
!   while (CONVERT_EXPR_P (expr) || TREE_CODE (expr) == VIEW_CONVERT_EXPR)
      expr = TREE_OPERAND (expr, 0);
    return (TREE_CODE (expr) == TEMPLATE_PARM_INDEX);
  }
--- 21734,21743 ----
  static bool
  deducible_expression (tree expr)
  {
!   /* Strip implicit conversions and implicit INDIRECT_REFs.  */
!   while (CONVERT_EXPR_P (expr)
! 	 || TREE_CODE (expr) == VIEW_CONVERT_EXPR
! 	 || REFERENCE_REF_P (expr))
      expr = TREE_OPERAND (expr, 0);
    return (TREE_CODE (expr) == TEMPLATE_PARM_INDEX);
  }
*************** mark_decl_instantiated (tree result, int
*** 23988,23994 ****
    DECL_COMDAT (result) = 0;
  
    if (extern_p)
!     DECL_NOT_REALLY_EXTERN (result) = 0;
    else
      {
        mark_definable (result);
--- 24054,24063 ----
    DECL_COMDAT (result) = 0;
  
    if (extern_p)
!     {
!       DECL_EXTERNAL (result) = 1;
!       DECL_NOT_REALLY_EXTERN (result) = 0;
!     }
    else
      {
        mark_definable (result);
*************** make_constrained_placeholder_type (tree
*** 27964,27970 ****
--- 28033,28041 ----
    tree expr = tmpl;
    if (TREE_CODE (con) == FUNCTION_DECL)
      expr = ovl_make (tmpl);
+   ++processing_template_decl;
    expr = build_concept_check (expr, type, args, tf_warning_or_error);
+   --processing_template_decl;
  
    PLACEHOLDER_TYPE_CONSTRAINTS (type) = expr;
  
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 28727,28733 ****
  	  unsigned len = TREE_VEC_LENGTH (ftparms);
  	  tree targs = make_tree_vec (len);
  	  int err = unify (ftparms, targs, ret, utype, UNIFY_ALLOW_NONE, false);
! 	  gcc_assert (!err);
  
  	  /* The number of parms for f' is the number of parms for A plus
  	     non-deduced parms of f.  */
--- 28798,28805 ----
  	  unsigned len = TREE_VEC_LENGTH (ftparms);
  	  tree targs = make_tree_vec (len);
  	  int err = unify (ftparms, targs, ret, utype, UNIFY_ALLOW_NONE, false);
! 	  if (err)
! 	    continue;
  
  	  /* The number of parms for f' is the number of parms for A plus
  	     non-deduced parms of f.  */
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 28760,28766 ****
  	     guideness, and explicit-specifier.  */
  	  tree g = tsubst_decl (DECL_TEMPLATE_RESULT (f), targs, complain);
  	  if (g == error_mark_node)
! 	    return error_mark_node;
  	  DECL_USE_TEMPLATE (g) = 0;
  	  fprime = build_template_decl (g, gtparms, false);
  	  DECL_TEMPLATE_RESULT (fprime) = g;
--- 28832,28838 ----
  	     guideness, and explicit-specifier.  */
  	  tree g = tsubst_decl (DECL_TEMPLATE_RESULT (f), targs, complain);
  	  if (g == error_mark_node)
! 	    continue;
  	  DECL_USE_TEMPLATE (g) = 0;
  	  fprime = build_template_decl (g, gtparms, false);
  	  DECL_TEMPLATE_RESULT (fprime) = g;
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 28774,28780 ****
  	  if (ci)
  	    ci = tsubst_constraint_info (ci, targs, complain, in_decl);
  	  if (ci == error_mark_node)
! 	    return error_mark_node;
  
  	  /* Add a constraint that the return type matches the instantiation of
  	     A with the same template arguments.  */
--- 28846,28852 ----
  	  if (ci)
  	    ci = tsubst_constraint_info (ci, targs, complain, in_decl);
  	  if (ci == error_mark_node)
! 	    continue;
  
  	  /* Add a constraint that the return type matches the instantiation of
  	     A with the same template arguments.  */
*************** alias_ctad_tweaks (tree tmpl, tree uguid
*** 28788,28794 ****
  	    }
  
  	  if (ci)
! 	    set_constraints (fprime, ci);
  	}
        else
  	{
--- 28860,28869 ----
  	    }
  
  	  if (ci)
! 	    {
! 	      remove_constraints (fprime);
! 	      set_constraints (fprime, ci);
! 	    }
  	}
        else
  	{
diff -Nrcpad gcc-10.3.0/gcc/cp/search.c gcc-10.4.0/gcc/cp/search.c
*** gcc-10.3.0/gcc/cp/search.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/search.c	Tue Jun 28 08:54:28 2022
*************** lookup_field_fuzzy_info::fuzzy_lookup_fi
*** 1249,1254 ****
--- 1249,1261 ----
        if (is_lambda_ignored_entity (field))
  	continue;
  
+       /* Ignore special identifiers with space at the end like cdtor or
+ 	 conversion op identifiers.  */
+       if (TREE_CODE (DECL_NAME (field)) == IDENTIFIER_NODE)
+ 	if (unsigned int len = IDENTIFIER_LENGTH (DECL_NAME (field)))
+ 	  if (IDENTIFIER_POINTER (DECL_NAME (field))[len - 1] == ' ')
+ 	    continue;
+ 
        m_candidates.safe_push (DECL_NAME (field));
      }
  }
diff -Nrcpad gcc-10.3.0/gcc/cp/semantics.c gcc-10.4.0/gcc/cp/semantics.c
*** gcc-10.3.0/gcc/cp/semantics.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/semantics.c	Tue Jun 28 08:54:28 2022
*************** do_pushlevel (scope_kind sk)
*** 476,482 ****
  
  /* Queue a cleanup.  CLEANUP is an expression/statement to be executed
     when the current scope is exited.  EH_ONLY is true when this is not
!    meant to apply to normal control flow transfer.  */
  
  void
  push_cleanup (tree decl, tree cleanup, bool eh_only)
--- 476,483 ----
  
  /* Queue a cleanup.  CLEANUP is an expression/statement to be executed
     when the current scope is exited.  EH_ONLY is true when this is not
!    meant to apply to normal control flow transfer.  DECL is the VAR_DECL
!    being cleaned up, if any, or null for temporaries or subobjects.  */
  
  void
  push_cleanup (tree decl, tree cleanup, bool eh_only)
*************** finish_compound_literal (tree type, tree
*** 2945,2957 ****
      return error_mark_node;
    compound_literal = reshape_init (type, compound_literal, complain);
    if (SCALAR_TYPE_P (type)
!       && !BRACE_ENCLOSED_INITIALIZER_P (compound_literal))
!     {
!       tree t = instantiate_non_dependent_expr_sfinae (compound_literal,
! 						      complain);
!       if (!check_narrowing (type, t, complain))
! 	return error_mark_node;
!     }
    if (TREE_CODE (type) == ARRAY_TYPE
        && TYPE_DOMAIN (type) == NULL_TREE)
      {
--- 2946,2954 ----
      return error_mark_node;
    compound_literal = reshape_init (type, compound_literal, complain);
    if (SCALAR_TYPE_P (type)
!       && !BRACE_ENCLOSED_INITIALIZER_P (compound_literal)
!       && !check_narrowing (type, compound_literal, complain))
!     return error_mark_node;
    if (TREE_CODE (type) == ARRAY_TYPE
        && TYPE_DOMAIN (type) == NULL_TREE)
      {
*************** expand_or_defer_fn (tree fn)
*** 4497,4502 ****
--- 4494,4510 ----
        emit_associated_thunks (fn);
  
        function_depth--;
+ 
+       if (DECL_IMMEDIATE_FUNCTION_P (fn))
+ 	{
+ 	  if (cgraph_node *node = cgraph_node::get (fn))
+ 	    {
+ 	      node->body_removed = true;
+ 	      node->analyzed = false;
+ 	      node->definition = false;
+ 	      node->force_output = false;
+ 	    }
+ 	}
      }
  }
  
*************** finish_omp_reduction_clause (tree c, boo
*** 5810,5816 ****
        if (!processing_template_decl)
  	{
  	  t = require_complete_type (t);
! 	  if (t == error_mark_node)
  	    return true;
  	  tree size = size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (oatype),
  				  TYPE_SIZE_UNIT (type));
--- 5818,5825 ----
        if (!processing_template_decl)
  	{
  	  t = require_complete_type (t);
! 	  if (t == error_mark_node
! 	      || !complete_type_or_else (oatype, NULL_TREE))
  	    return true;
  	  tree size = size_binop (EXACT_DIV_EXPR, TYPE_SIZE_UNIT (oatype),
  				  TYPE_SIZE_UNIT (type));
*************** finish_omp_reduction_clause (tree c, boo
*** 5840,5845 ****
--- 5849,5856 ----
        case PLUS_EXPR:
        case MULT_EXPR:
        case MINUS_EXPR:
+       case TRUTH_ANDIF_EXPR:
+       case TRUTH_ORIF_EXPR:
  	predefined = true;
  	break;
        case MIN_EXPR:
*************** finish_omp_reduction_clause (tree c, boo
*** 5855,5866 ****
  	  break;
  	predefined = true;
  	break;
-       case TRUTH_ANDIF_EXPR:
-       case TRUTH_ORIF_EXPR:
- 	if (FLOAT_TYPE_P (type))
- 	  break;
- 	predefined = true;
- 	break;
        default:
  	break;
        }
--- 5866,5871 ----
diff -Nrcpad gcc-10.3.0/gcc/cp/tree.c gcc-10.4.0/gcc/cp/tree.c
*** gcc-10.3.0/gcc/cp/tree.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/tree.c	Tue Jun 28 08:54:28 2022
*************** move (tree expr)
*** 1250,1255 ****
--- 1250,1257 ----
  {
    tree type = TREE_TYPE (expr);
    gcc_assert (!TYPE_REF_P (type));
+   if (xvalue_p (expr))
+     return expr;
    type = cp_build_reference_type (type, /*rval*/true);
    return build_static_cast (input_location, type, expr,
  			    tf_warning_or_error);
*************** apply_identity_attributes (tree result,
*** 1450,1458 ****
  	      p = &TREE_CHAIN (*p);
  	    }
  	}
!       else if (first_ident)
  	{
! 	  for (tree a2 = first_ident; a2; a2 = TREE_CHAIN (a2))
  	    {
  	      *p = tree_cons (TREE_PURPOSE (a2), TREE_VALUE (a2), NULL_TREE);
  	      p = &TREE_CHAIN (*p);
--- 1452,1460 ----
  	      p = &TREE_CHAIN (*p);
  	    }
  	}
!       else if (first_ident && first_ident != error_mark_node)
  	{
! 	  for (tree a2 = first_ident; a2 != a; a2 = TREE_CHAIN (a2))
  	    {
  	      *p = tree_cons (TREE_PURPOSE (a2), TREE_VALUE (a2), NULL_TREE);
  	      p = &TREE_CHAIN (*p);
diff -Nrcpad gcc-10.3.0/gcc/cp/typeck.c gcc-10.4.0/gcc/cp/typeck.c
*** gcc-10.3.0/gcc/cp/typeck.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/typeck.c	Tue Jun 28 08:54:28 2022
*************** cp_build_binary_op (const op_location_t
*** 4958,4963 ****
--- 4958,4964 ----
  	  doing_shift = true;
  	  if (TREE_CODE (const_op0) == INTEGER_CST
  	      && tree_int_cst_sgn (const_op0) < 0
+ 	      && !TYPE_OVERFLOW_WRAPS (type0)
  	      && (complain & tf_warning)
  	      && c_inhibit_evaluation_warnings == 0)
  	    warning_at (location, OPT_Wshift_negative_value,
*************** cxx_mark_addressable (tree exp, bool arr
*** 6939,6947 ****
  	    && TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE
  	    && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (x, 0))))
  	  return true;
  	/* FALLTHRU */
        case ADDR_EXPR:
-       case COMPONENT_REF:
        case ARRAY_REF:
        case REALPART_EXPR:
        case IMAGPART_EXPR:
--- 6940,6953 ----
  	    && TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE
  	    && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (x, 0))))
  	  return true;
+ 	x = TREE_OPERAND (x, 0);
+ 	break;
+ 
+       case COMPONENT_REF:
+ 	if (bitfield_p (x))
+ 	  error ("attempt to take address of bit-field");
  	/* FALLTHRU */
        case ADDR_EXPR:
        case ARRAY_REF:
        case REALPART_EXPR:
        case IMAGPART_EXPR:
*************** check_return_expr (tree retval, bool *no
*** 10037,10042 ****
--- 10043,10051 ----
      dependent:
        /* We should not have changed the return value.  */
        gcc_assert (retval == saved_retval);
+       /* We don't know if this is an lvalue or rvalue use, but
+ 	 either way we can mark it as read.  */
+       mark_exp_read (retval);
        return retval;
      }
  
diff -Nrcpad gcc-10.3.0/gcc/cp/typeck2.c gcc-10.4.0/gcc/cp/typeck2.c
*** gcc-10.3.0/gcc/cp/typeck2.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cp/typeck2.c	Tue Jun 28 08:54:28 2022
*************** split_nonconstant_init_1 (tree dest, tre
*** 661,667 ****
  		sub = build3 (COMPONENT_REF, inner_type, dest, field_index,
  			      NULL_TREE);
  
! 	      if (!split_nonconstant_init_1 (sub, value, true))
  		complete_p = false;
  	      else
  		{
--- 661,680 ----
  		sub = build3 (COMPONENT_REF, inner_type, dest, field_index,
  			      NULL_TREE);
  
! 	      if (!split_nonconstant_init_1 (sub, value, true)
! 		      /* For flexible array member with initializer we
! 			 can't remove the initializer, because only the
! 			 initializer determines how many elements the
! 			 flexible array member has.  */
! 		  || (!array_type_p
! 		      && TREE_CODE (inner_type) == ARRAY_TYPE
! 		      && TYPE_DOMAIN (inner_type) == NULL
! 		      && TREE_CODE (TREE_TYPE (value)) == ARRAY_TYPE
! 		      && COMPLETE_TYPE_P (TREE_TYPE (value))
! 		      && !integer_zerop (TYPE_SIZE (TREE_TYPE (value)))
! 		      && idx == CONSTRUCTOR_NELTS (init) - 1
! 		      && TYPE_HAS_TRIVIAL_DESTRUCTOR
! 				(strip_array_types (inner_type))))
  		complete_p = false;
  	      else
  		{
*************** massage_init_elt (tree type, tree init,
*** 1442,1450 ****
    if (flags & LOOKUP_AGGREGATE_PAREN_INIT)
      new_flags |= LOOKUP_AGGREGATE_PAREN_INIT;
    init = digest_init_r (type, init, nested ? 2 : 1, new_flags, complain);
-   /* Strip a simple TARGET_EXPR when we know this is an initializer.  */
-   if (SIMPLE_TARGET_EXPR_P (init))
-     init = TARGET_EXPR_INITIAL (init);
    /* When we defer constant folding within a statement, we may want to
       defer this folding as well.  */
    tree t = fold_non_dependent_init (init, complain);
--- 1455,1460 ----
*************** process_init_constructor_array (tree typ
*** 1533,1538 ****
--- 1543,1556 ----
  	      strip_array_types (TREE_TYPE (ce->value)))));
  
        picflags |= picflag_from_initializer (ce->value);
+       /* Propagate CONSTRUCTOR_PLACEHOLDER_BOUNDARY to outer
+ 	 CONSTRUCTOR.  */
+       if (TREE_CODE (ce->value) == CONSTRUCTOR
+ 	  && CONSTRUCTOR_PLACEHOLDER_BOUNDARY (ce->value))
+ 	{
+ 	  CONSTRUCTOR_PLACEHOLDER_BOUNDARY (init) = 1;
+ 	  CONSTRUCTOR_PLACEHOLDER_BOUNDARY (ce->value) = 0;
+ 	}
      }
  
    /* No more initializers. If the array is unbounded, we are done. Otherwise,
*************** process_init_constructor_array (tree typ
*** 1574,1579 ****
--- 1592,1605 ----
  	if (next)
  	  {
  	    picflags |= picflag_from_initializer (next);
+ 	    /* Propagate CONSTRUCTOR_PLACEHOLDER_BOUNDARY to outer
+ 	       CONSTRUCTOR.  */
+ 	    if (TREE_CODE (next) == CONSTRUCTOR
+ 		&& CONSTRUCTOR_PLACEHOLDER_BOUNDARY (next))
+ 	      {
+ 		CONSTRUCTOR_PLACEHOLDER_BOUNDARY (init) = 1;
+ 		CONSTRUCTOR_PLACEHOLDER_BOUNDARY (next) = 0;
+ 	      }
  	    if (len > i+1
  		&& (initializer_constant_valid_p (next, TREE_TYPE (next))
  		    == null_pointer_node))
*************** process_init_constructor_record (tree ty
*** 1784,1789 ****
--- 1810,1822 ----
        if (type != TREE_TYPE (field))
  	next = cp_convert_and_check (TREE_TYPE (field), next, complain);
        picflags |= picflag_from_initializer (next);
+       /* Propagate CONSTRUCTOR_PLACEHOLDER_BOUNDARY to outer CONSTRUCTOR.  */
+       if (TREE_CODE (next) == CONSTRUCTOR
+ 	  && CONSTRUCTOR_PLACEHOLDER_BOUNDARY (next))
+ 	{
+ 	  CONSTRUCTOR_PLACEHOLDER_BOUNDARY (init) = 1;
+ 	  CONSTRUCTOR_PLACEHOLDER_BOUNDARY (next) = 0;
+ 	}
        CONSTRUCTOR_APPEND_ELT (v, field, next);
      }
  
*************** process_init_constructor_union (tree typ
*** 1937,1942 ****
--- 1970,1983 ----
      ce->value = massage_init_elt (TREE_TYPE (ce->index), ce->value, nested,
  				  flags, complain);
  
+   /* Propagate CONSTRUCTOR_PLACEHOLDER_BOUNDARY to outer CONSTRUCTOR.  */
+   if (ce->value
+       && TREE_CODE (ce->value) == CONSTRUCTOR
+       && CONSTRUCTOR_PLACEHOLDER_BOUNDARY (ce->value))
+     {
+       CONSTRUCTOR_PLACEHOLDER_BOUNDARY (init) = 1;
+       CONSTRUCTOR_PLACEHOLDER_BOUNDARY (ce->value) = 0;
+     }
    return picflag_from_initializer (ce->value);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/cprop.c gcc-10.4.0/gcc/cprop.c
*** gcc-10.3.0/gcc/cprop.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cprop.c	Tue Jun 28 08:54:28 2022
*************** static int
*** 1007,1022 ****
  constprop_register (rtx from, rtx src, rtx_insn *insn)
  {
    rtx sset;
  
    /* Check for reg or cc0 setting instructions followed by
       conditional branch instructions first.  */
    if ((sset = single_set (insn)) != NULL
!       && NEXT_INSN (insn)
!       && any_condjump_p (NEXT_INSN (insn)) && onlyjump_p (NEXT_INSN (insn)))
      {
        rtx dest = SET_DEST (sset);
        if ((REG_P (dest) || CC0_P (dest))
! 	  && cprop_jump (BLOCK_FOR_INSN (insn), insn, NEXT_INSN (insn),
  			 from, src))
  	return 1;
      }
--- 1007,1024 ----
  constprop_register (rtx from, rtx src, rtx_insn *insn)
  {
    rtx sset;
+   rtx_insn *next_insn;
  
    /* Check for reg or cc0 setting instructions followed by
       conditional branch instructions first.  */
    if ((sset = single_set (insn)) != NULL
!       && (next_insn = next_nondebug_insn (insn)) != NULL
!       && any_condjump_p (next_insn)
!       && onlyjump_p (next_insn))
      {
        rtx dest = SET_DEST (sset);
        if ((REG_P (dest) || CC0_P (dest))
! 	  && cprop_jump (BLOCK_FOR_INSN (insn), insn, next_insn,
  			 from, src))
  	return 1;
      }
diff -Nrcpad gcc-10.3.0/gcc/cse.c gcc-10.4.0/gcc/cse.c
*** gcc-10.3.0/gcc/cse.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cse.c	Tue Jun 28 08:54:28 2022
*************** exp_equiv_p (const_rtx x, const_rtx y, i
*** 2637,2642 ****
--- 2637,2647 ----
      CASE_CONST_UNIQUE:
        return x == y;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case LABEL_REF:
        return label_ref_label (x) == label_ref_label (y);
  
diff -Nrcpad gcc-10.3.0/gcc/cselib.c gcc-10.4.0/gcc/cselib.c
*** gcc-10.3.0/gcc/cselib.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/cselib.c	Tue Jun 28 08:54:28 2022
*************** rtx_equal_for_cselib_1 (rtx x, rtx y, ma
*** 1048,1053 ****
--- 1048,1058 ----
      case DEBUG_EXPR:
        return 0;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case DEBUG_IMPLICIT_PTR:
        return DEBUG_IMPLICIT_PTR_DECL (x)
  	     == DEBUG_IMPLICIT_PTR_DECL (y);
diff -Nrcpad gcc-10.3.0/gcc/d/ChangeLog gcc-10.4.0/gcc/d/ChangeLog
*** gcc-10.3.0/gcc/d/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/d/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,189 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* typeinfo.cc (make_internal_typeinfo): Set TYPE_ARTIFICIAL.
+ 
+ 2021-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* decl.cc (get_symbol_decl): Align methods to MINIMUM_METHOD_BOUNDARY.
+ 
+ 2021-11-18  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-11-18  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* decl.cc (d_finish_decl): Use HOST_WIDE_INT for type size
+ 	temporaries.
+ 
+ 2021-10-13  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-10-05  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* d-spec.cc (lang_specific_driver): Push the -static-libstdc++
+ 	option back onto the command line for targets without support
+ 	for -Bstatic/dynamic.
+ 
+ 2021-10-04  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-10-04  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/102574
+ 	* d-spec.cc (lang_specific_driver): Link libstdc++ statically if
+ 	-static-libstdc++ was given on command-line.
+ 
+ 2021-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/96435
+ 	* d-convert.cc (convert_for_rvalue): New function.
+ 	* d-tree.h (convert_for_rvalue): Declare.
+ 	* expr.cc (ExprVisitor::visit (CastExp *)): Use convert_for_rvalue.
+ 	(build_return_dtor): Likewise.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101640
+ 	* expr.cc (binary_op): Use build2 instead of fold_build2.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101490
+ 	* d-codegen.cc (build_array_index): Handle void arrays same as byte.
+ 	* d-convert.cc (convert_expr): Handle converting to zero-sized arrays.
+ 	* dmd/dcast.c (castTo): Handle casting to zero-sized arrays.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101441
+ 	* dmd/expression.c (FuncInitExp::resolveLoc): Set type as `string'.
+ 	(PrettyFuncInitExp::resolveLoc): Likewise.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101127
+ 	* d-builtins.cc (d_builtin_function_ext_scope): New function.
+ 	* d-lang.cc (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): Define.
+ 	* d-tree.h (d_builtin_function_ext_scope): Declare.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101619
+ 	* dmd/expression.c (DotTemplateExp::checkType): New function.
+ 	(DotTemplateExp::checkValue): New function.
+ 	* dmd/expression.h (class DotTemplateExp): Declare checkType and
+ 	checkValue.
+ 
+ 2021-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100999
+ 	* dmd/cond.c (lowerArrayAggregate): Run CTFE interpret on foreach
+ 	input range.
+ 	(createTupleType): Don't generate typeinfo when disabled.
+ 	(lowerNonArrayAggregate): Suppress errors when running type semantic.
+ 	(staticForeachPrepare): Don't run CTFE interpret from here.
+ 	* dmd/dinterpret.c (ctfeInterpret): Add more shortcut cases.
+ 	* dmd/expression.c (resolvePropertiesX): Remove early error.
+ 	(Expression::checkPostblit): Don't generate typeinfo when type is
+ 	missing from library.
+ 	* dmd/expressionsem.c (ExpressionSemanticVisitor): Set type of
+ 	DotTemplateExp as void.
+ 	* dmd/statementsem.c (StatementSemanticVisitor::declareVariable):
+ 	Don't override index type.
+ 	(StatementSemanticVisitor::makeTupleForeachBody): Check index type is
+ 	integral and index range fits type size.
+ 	(StatementSemanticVisitor::visit (ForeachStatement*)): Adjust index
+ 	range before testing.
+ 
+ 2021-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100967
+ 	* d-frontend.cc (getTypeInfoType): Move TypeInfo checks to
+ 	check_typeinfo_type and call new function.
+ 	* d-tree.h (check_typeinfo_type): Declare.
+ 	* typeinfo.cc: Include dmd/scope.h.
+ 	(create_frontend_tinfo_types): Generate front-end types even if Object
+ 	is missing.
+ 	(build_typeinfo): Move TypeInfo checks to check_typeinfo_type and call
+ 	new function.
+ 	(check_typeinfo_type): New function.
+ 
+ 2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100964
+ 	* dmd/expression.c (Expression::checkPostblit): Don't generate
+ 	TypeInfo when RTTI is disabled.
+ 
+ 2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100935
+ 	* dmd/mtype.c (Type::getProperty): Prefer explicit alignment over
+ 	natural alignment for alignof property.
+ 
+ 2021-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100882
+ 	* d-codegen.cc (build_assign): Construct initializations inside
+ 	TARGET_EXPR_INITIAL.
+ 	(compound_expr): Remove intermediate expressions that have no
+ 	side-effects.
+ 	(return_expr): Construct returns inside TARGET_EXPR_INITIAL.
+ 	* expr.cc (ExprVisitor::visit (CallExp *)): Remove useless assignment
+ 	to TARGET_EXPR_SLOT.
+ 
+ 2021-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/98457
+ 	* d-diagnostic.cc (expand_d_format): Handle escaped backticks.
+ 	(escape_d_format): New funtion.
+ 	(verror): Call escape_d_format on prefixing strings.
+ 	(vdeprecation): Likewise.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/d/d-builtins.cc gcc-10.4.0/gcc/d/d-builtins.cc
*** gcc-10.3.0/gcc/d/d-builtins.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-builtins.cc	Tue Jun 28 08:54:28 2022
*************** d_builtin_function (tree decl)
*** 1211,1215 ****
--- 1211,1230 ----
    return decl;
  }
  
+ /* Same as d_builtin_function, but used to delay putting in back-end builtin
+    functions until the ISA that defines the builtin has been declared.
+    However in D, there is no global namespace.  All builtins get pushed into the
+    `gcc.builtins' module, which is constructed during the semantic analysis
+    pass, which has already finished by the time target attributes are evaluated.
+    So builtins are not pushed because they would be ultimately ignored.
+    The purpose of having this function then is to improve compile-time
+    reflection support to allow user-code to determine whether a given back end
+    function is enabled by the ISA.  */
+ 
+ tree
+ d_builtin_function_ext_scope (tree decl)
+ {
+   return decl;
+ }
  
  #include "gt-d-d-builtins.h"
diff -Nrcpad gcc-10.3.0/gcc/d/d-codegen.cc gcc-10.4.0/gcc/d/d-codegen.cc
*** gcc-10.3.0/gcc/d/d-codegen.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-codegen.cc	Tue Jun 28 08:54:28 2022
*************** component_ref (tree object, tree field)
*** 1269,1274 ****
--- 1269,1275 ----
  tree
  build_assign (tree_code code, tree lhs, tree rhs)
  {
+   tree result;
    tree init = stabilize_expr (&lhs);
    init = compound_expr (init, stabilize_expr (&rhs));
  
*************** build_assign (tree_code code, tree lhs,
*** 1287,1308 ****
    if (TREE_CODE (rhs) == TARGET_EXPR)
      {
        /* If CODE is not INIT_EXPR, can't initialize LHS directly,
! 	 since that would cause the LHS to be constructed twice.
! 	 So we force the TARGET_EXPR to be expanded without a target.  */
        if (code != INIT_EXPR)
  	{
  	  init = compound_expr (init, rhs);
! 	  rhs = TARGET_EXPR_SLOT (rhs);
  	}
        else
  	{
  	  d_mark_addressable (lhs);
! 	  rhs = TARGET_EXPR_INITIAL (rhs);
  	}
      }
  
-   tree result = fold_build2_loc (input_location, code,
- 				 TREE_TYPE (lhs), lhs, rhs);
    return compound_expr (init, result);
  }
  
--- 1288,1314 ----
    if (TREE_CODE (rhs) == TARGET_EXPR)
      {
        /* If CODE is not INIT_EXPR, can't initialize LHS directly,
! 	 since that would cause the LHS to be constructed twice.  */
        if (code != INIT_EXPR)
  	{
  	  init = compound_expr (init, rhs);
! 	  result = build_assign (code, lhs, TARGET_EXPR_SLOT (rhs));
  	}
        else
  	{
  	  d_mark_addressable (lhs);
! 	  TARGET_EXPR_INITIAL (rhs) = build_assign (code, lhs,
! 						    TARGET_EXPR_INITIAL (rhs));
! 	  result = rhs;
  	}
      }
+   else
+     {
+       /* Simple assignment.  */
+       result = fold_build2_loc (input_location, code,
+ 				TREE_TYPE (lhs), lhs, rhs);
+     }
  
    return compound_expr (init, result);
  }
  
*************** compound_expr (tree arg0, tree arg1)
*** 1424,1429 ****
--- 1430,1440 ----
    if (arg0 == NULL_TREE || !TREE_SIDE_EFFECTS (arg0))
      return arg1;
  
+   /* Remove intermediate expressions that have no side-effects.  */
+   while (TREE_CODE (arg0) == COMPOUND_EXPR
+ 	 && !TREE_SIDE_EFFECTS (TREE_OPERAND (arg0, 1)))
+     arg0 = TREE_OPERAND (arg0, 0);
+ 
    if (TREE_CODE (arg1) == TARGET_EXPR)
      {
        /* If the rhs is a TARGET_EXPR, then build the compound expression
*************** compound_expr (tree arg0, tree arg1)
*** 1444,1449 ****
--- 1455,1473 ----
  tree
  return_expr (tree ret)
  {
+   /* Same as build_assign, the DECL_RESULT assignment replaces the temporary
+      in TARGET_EXPR_SLOT.  */
+   if (ret != NULL_TREE && TREE_CODE (ret) == TARGET_EXPR)
+     {
+       tree exp = TARGET_EXPR_INITIAL (ret);
+       tree init = stabilize_expr (&exp);
+ 
+       exp = fold_build1_loc (input_location, RETURN_EXPR, void_type_node, exp);
+       TARGET_EXPR_INITIAL (ret) = compound_expr (init, exp);
+ 
+       return ret;
+     }
+ 
    return fold_build1_loc (input_location, RETURN_EXPR,
  			  void_type_node, ret);
  }
*************** build_array_index (tree ptr, tree index)
*** 1547,1567 ****
    /* Array element size.  */
    tree size_exp = size_in_bytes (target_type);
  
!   if (integer_zerop (size_exp))
!     {
!       /* Test for array of void.  */
!       if (TYPE_MODE (target_type) == TYPE_MODE (void_type_node))
! 	index = fold_convert (type, index);
!       else
! 	{
! 	  /* Should catch this earlier.  */
! 	  error ("invalid use of incomplete type %qD", TYPE_NAME (target_type));
! 	  ptr_type = error_mark_node;
! 	}
!     }
!   else if (integer_onep (size_exp))
      {
!       /* Array of bytes -- No need to multiply.  */
        index = fold_convert (type, index);
      }
    else
--- 1571,1579 ----
    /* Array element size.  */
    tree size_exp = size_in_bytes (target_type);
  
!   if (integer_zerop (size_exp) || integer_onep (size_exp))
      {
!       /* Array of void or bytes -- No need to multiply.  */
        index = fold_convert (type, index);
      }
    else
diff -Nrcpad gcc-10.3.0/gcc/d/d-convert.cc gcc-10.4.0/gcc/d/d-convert.cc
*** gcc-10.3.0/gcc/d/d-convert.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-convert.cc	Tue Jun 28 08:54:28 2022
*************** convert_expr (tree exp, Type *etype, Typ
*** 473,485 ****
  
  	  tree ptrtype = build_ctype (tbtype->nextOf ()->pointerTo ());
  
! 	  if ((dim * esize) % tsize != 0)
  	    {
! 	      error ("cannot cast %qs to %qs since sizes do not line up",
! 		     etype->toChars (), totype->toChars ());
! 	      return error_mark_node;
  	    }
- 	  dim = (dim * esize) / tsize;
  
  	  /* Assumes casting to dynamic array of same type or void.  */
  	  return d_array_value (build_ctype (totype), size_int (dim),
--- 473,490 ----
  
  	  tree ptrtype = build_ctype (tbtype->nextOf ()->pointerTo ());
  
! 	  if (esize != tsize)
  	    {
! 	      /* Array element sizes do not match, so we must adjust the
! 		 dimensions.  */
! 	      if (tsize == 0 || (dim * esize) % tsize != 0)
! 		{
! 		  error ("cannot cast %qs to %qs since sizes do not line up",
! 			 etype->toChars (), totype->toChars ());
! 		  return error_mark_node;
! 		}
! 	      dim = (dim * esize) / tsize;
  	    }
  
  	  /* Assumes casting to dynamic array of same type or void.  */
  	  return d_array_value (build_ctype (totype), size_int (dim),
*************** convert_expr (tree exp, Type *etype, Typ
*** 595,600 ****
--- 600,641 ----
    return result ? result : convert (build_ctype (totype), exp);
  }
  
+ /* Return a TREE represenwation of EXPR, whose type has been converted from
+  * ETYPE to TOTYPE, and is being used in an rvalue context.  */
+ 
+ tree
+ convert_for_rvalue (tree expr, Type *etype, Type *totype)
+ {
+   tree result = NULL_TREE;
+ 
+   Type *ebtype = etype->toBasetype ();
+   Type *tbtype = totype->toBasetype ();
+ 
+   switch (ebtype->ty)
+     {
+     case Tbool:
+       /* If casting from bool, the result is either 0 or 1, any other value
+ 	 violates @safe code, so enforce that it is never invalid.  */
+       if (CONSTANT_CLASS_P (expr))
+ 	result = d_truthvalue_conversion (expr);
+       else
+ 	{
+ 	  /* Reinterpret the boolean as an integer and test the first bit.
+ 	     The generated code should end up being equivalent to:
+ 		*cast(ubyte *)&expr & 1;  */
+ 	  machine_mode bool_mode = TYPE_MODE (TREE_TYPE (expr));
+ 	  tree mtype = lang_hooks.types.type_for_mode (bool_mode, 1);
+ 	  result = fold_build2 (BIT_AND_EXPR, mtype,
+ 				build_vconvert (mtype, expr),
+ 				build_one_cst (mtype));
+ 	}
+ 
+       result = convert (build_ctype (tbtype), result);
+       break;
+     }
+ 
+   return result ? result : convert_expr (expr, etype, totype);
+ }
  
  /* Apply semantics of assignment to a value of type TOTYPE to EXPR
     (e.g., pointer = array -> pointer = &array[0])
diff -Nrcpad gcc-10.3.0/gcc/d/d-diagnostic.cc gcc-10.4.0/gcc/d/d-diagnostic.cc
*** gcc-10.3.0/gcc/d/d-diagnostic.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-diagnostic.cc	Tue Jun 28 08:54:28 2022
*************** expand_d_format (const char *format)
*** 48,54 ****
  
    for (const char *p = format; *p;)
      {
!       while (*p != '\0' && *p != '%' && *p != '`')
  	{
  	  buf.writeByte (*p);
  	  p++;
--- 48,54 ----
  
    for (const char *p = format; *p;)
      {
!       while (*p != '\0' && *p != '\\' && *p != '%' && *p != '`')
  	{
  	  buf.writeByte (*p);
  	  p++;
*************** expand_d_format (const char *format)
*** 57,62 ****
--- 57,77 ----
        if (*p == '\0')
  	break;
  
+       if (*p == '\\')
+ 	{
+ 	  if (p[1] == '`')
+ 	    {
+ 	      /* Escaped backtick, don't expand it as a quoted string.  */
+ 	      buf.writeByte ('`');
+ 	      p++;;
+ 	    }
+ 	  else
+ 	    buf.writeByte (*p);
+ 
+ 	  p++;
+ 	  continue;
+ 	}
+ 
        if (*p == '`')
  	{
  	  /* Text enclosed by `...` are translated as a quoted string.  */
*************** expand_d_format (const char *format)
*** 113,118 ****
--- 128,170 ----
    return buf.extractString ();
  }
  
+ /* Rewrite the format string FORMAT to deal with any characters that require
+    escaping before expand_d_format expands it.  */
+ 
+ static char *
+ escape_d_format (const char *format)
+ {
+   obstack buf;
+ 
+   gcc_obstack_init (&buf);
+ 
+   for (const char *p = format; *p; p++)
+     {
+       switch (*p)
+ 	{
+ 	case '%':
+ 	  /* Escape `%' characters so that pp_format does not confuse them
+ 	     for actual format specifiers.  */
+ 	  obstack_1grow (&buf, '%');
+ 	  break;
+ 
+ 	case '`':
+ 	  /* Escape '`' characters so that expand_d_format does not confuse them
+ 	     for a quoted string.  */
+ 	  obstack_1grow (&buf, '\\');
+ 	  break;
+ 
+ 	default:
+ 	  break;
+ 	}
+ 
+       obstack_1grow (&buf, *p);
+     }
+ 
+   obstack_1grow (&buf, '\0');
+   return (char *) obstack_finish (&buf);
+ }
+ 
  /* Helper routine for all error routines.  Reports a diagnostic specified by
     KIND at the explicit location LOC.  The message FORMAT comes from the dmd
     front-end, which does not get translated by the gcc diagnostic routines.  */
*************** verror (const Loc& loc, const char *form
*** 177,185 ****
  
        /* Build string and emit.  */
        if (prefix2 != NULL)
! 	xformat = xasprintf ("%s %s %s", prefix1, prefix2, format);
        else if (prefix1 != NULL)
! 	xformat = xasprintf ("%s %s", prefix1, format);
        else
  	xformat = xasprintf ("%s", format);
  
--- 229,238 ----
  
        /* Build string and emit.  */
        if (prefix2 != NULL)
! 	xformat = xasprintf ("%s %s %s", escape_d_format (prefix1),
! 			     escape_d_format (prefix2), format);
        else if (prefix1 != NULL)
! 	xformat = xasprintf ("%s %s", escape_d_format (prefix1), format);
        else
  	xformat = xasprintf ("%s", format);
  
*************** vdeprecation (const Loc& loc, const char
*** 287,295 ****
  
        /* Build string and emit.  */
        if (prefix2 != NULL)
! 	xformat = xasprintf ("%s %s %s", prefix1, prefix2, format);
        else if (prefix1 != NULL)
! 	xformat = xasprintf ("%s %s", prefix1, format);
        else
  	xformat = xasprintf ("%s", format);
  
--- 340,349 ----
  
        /* Build string and emit.  */
        if (prefix2 != NULL)
! 	xformat = xasprintf ("%s %s %s", escape_d_format (prefix1),
! 			     escape_d_format (prefix2), format);
        else if (prefix1 != NULL)
! 	xformat = xasprintf ("%s %s", escape_d_format (prefix1), format);
        else
  	xformat = xasprintf ("%s", format);
  
diff -Nrcpad gcc-10.3.0/gcc/d/d-frontend.cc gcc-10.4.0/gcc/d/d-frontend.cc
*** gcc-10.3.0/gcc/d/d-frontend.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-frontend.cc	Tue Jun 28 08:54:28 2022
*************** eval_builtin (Loc loc, FuncDeclaration *
*** 614,652 ****
  Type *
  getTypeInfoType (Loc loc, Type *type, Scope *sc)
  {
-   if (!global.params.useTypeInfo)
-     {
-       /* Even when compiling without RTTI we should still be able to evaluate
- 	 TypeInfo at compile-time, just not at run-time.  */
-       if (!sc || !(sc->flags & SCOPEctfe))
- 	{
- 	  static int warned = 0;
- 
- 	  if (!warned)
- 	    {
- 	      error_at (make_location_t (loc),
- 			"%<object.TypeInfo%> cannot be used with %<-fno-rtti%>");
- 	      warned = 1;
- 	    }
- 	}
-     }
- 
-   if (Type::dtypeinfo == NULL
-       || (Type::dtypeinfo->storage_class & STCtemp))
-     {
-       /* If TypeInfo has not been declared, warn about each location once.  */
-       static Loc warnloc;
- 
-       if (!loc.equals (warnloc))
- 	{
- 	  error_at (make_location_t (loc),
- 		    "%<object.TypeInfo%> could not be found, "
- 		    "but is implicitly used");
- 	  warnloc = loc;
- 	}
-     }
- 
    gcc_assert (type->ty != Terror);
    create_typeinfo (type, sc ? sc->_module->importedFrom : NULL);
    return type->vtinfo->type;
  }
--- 614,621 ----
  Type *
  getTypeInfoType (Loc loc, Type *type, Scope *sc)
  {
    gcc_assert (type->ty != Terror);
+   check_typeinfo_type (loc, sc);
    create_typeinfo (type, sc ? sc->_module->importedFrom : NULL);
    return type->vtinfo->type;
  }
diff -Nrcpad gcc-10.3.0/gcc/d/d-lang.cc gcc-10.4.0/gcc/d/d-lang.cc
*** gcc-10.3.0/gcc/d/d-lang.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-lang.cc	Tue Jun 28 08:54:28 2022
*************** d_build_eh_runtime_type (tree type)
*** 1825,1830 ****
--- 1825,1831 ----
  #undef LANG_HOOKS_GET_ALIAS_SET
  #undef LANG_HOOKS_TYPES_COMPATIBLE_P
  #undef LANG_HOOKS_BUILTIN_FUNCTION
+ #undef LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE
  #undef LANG_HOOKS_REGISTER_BUILTIN_TYPE
  #undef LANG_HOOKS_FINISH_INCOMPLETE_DECL
  #undef LANG_HOOKS_GIMPLIFY_EXPR
*************** d_build_eh_runtime_type (tree type)
*** 1855,1860 ****
--- 1856,1862 ----
  #define LANG_HOOKS_GET_ALIAS_SET	    d_get_alias_set
  #define LANG_HOOKS_TYPES_COMPATIBLE_P	    d_types_compatible_p
  #define LANG_HOOKS_BUILTIN_FUNCTION	    d_builtin_function
+ #define LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE d_builtin_function_ext_scope
  #define LANG_HOOKS_REGISTER_BUILTIN_TYPE    d_register_builtin_type
  #define LANG_HOOKS_FINISH_INCOMPLETE_DECL   d_finish_incomplete_decl
  #define LANG_HOOKS_GIMPLIFY_EXPR	    d_gimplify_expr
diff -Nrcpad gcc-10.3.0/gcc/d/d-spec.cc gcc-10.4.0/gcc/d/d-spec.cc
*** gcc-10.3.0/gcc/d/d-spec.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-spec.cc	Tue Jun 28 08:54:28 2022
*************** lang_specific_driver (cl_decoded_option
*** 83,88 ****
--- 83,91 ----
    /* "-lstdc++" if it appears on the command line.  */
    const cl_decoded_option *saw_libcxx = 0;
  
+   /* True if we saw `-static-libstdc++'.  */
+   bool saw_static_libcxx = false;
+ 
    /* Whether we need the C++ STD library.  */
    bool need_stdcxx = false;
  
*************** lang_specific_driver (cl_decoded_option
*** 248,253 ****
--- 251,261 ----
  	  shared_libgcc = false;
  	  break;
  
+ 	case OPT_static_libstdc__:
+ 	  saw_static_libcxx = true;
+ 	  args[i] |= SKIPOPT;
+ 	  break;
+ 
  	case OPT_static_libphobos:
  	  if (phobos_library != PHOBOS_NOLINK)
  	    phobos_library = PHOBOS_STATIC;
*************** lang_specific_driver (cl_decoded_option
*** 452,467 ****
  #endif
      }
  
!   if (saw_libcxx)
!     new_decoded_options[j++] = *saw_libcxx;
!   else if (need_stdcxx)
      {
!       generate_option (OPT_l,
! 		       (saw_profile_flag
! 			? LIBSTDCXX_PROFILE
! 			: LIBSTDCXX),
! 		       1, CL_DRIVER, &new_decoded_options[j++]);
!       added_libraries++;
      }
  
    if (shared_libgcc && !static_link)
--- 460,498 ----
  #endif
      }
  
!   if (saw_libcxx || need_stdcxx)
      {
! #ifdef HAVE_LD_STATIC_DYNAMIC
!       if (saw_static_libcxx && !static_link)
! 	{
! 	  generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER,
! 			   &new_decoded_options[j++]);
! 	}
! #else
!       /* Push the -static-libstdc++ option back onto the command so that
! 	 a target without LD_STATIC_DYNAMIC can use outfile substitution.  */
!       if (saw_static_libcxx && !static_link)
! 	generate_option (OPT_static_libstdc__, NULL, 1, CL_DRIVER,
! 			 &new_decoded_options[j++]);
! #endif
!       if (saw_libcxx)
! 	new_decoded_options[j++] = *saw_libcxx;
!       else if (need_stdcxx)
! 	{
! 	  generate_option (OPT_l,
! 			   (saw_profile_flag
! 			    ? LIBSTDCXX_PROFILE
! 			    : LIBSTDCXX),
! 			   1, CL_DRIVER, &new_decoded_options[j++]);
! 	  added_libraries++;
! 	}
! #ifdef HAVE_LD_STATIC_DYNAMIC
!       if (saw_static_libcxx && !static_link)
! 	{
! 	  generate_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1, CL_DRIVER,
! 			   &new_decoded_options[j++]);
! 	}
! #endif
      }
  
    if (shared_libgcc && !static_link)
diff -Nrcpad gcc-10.3.0/gcc/d/d-tree.h gcc-10.4.0/gcc/d/d-tree.h
*** gcc-10.3.0/gcc/d/d-tree.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/d-tree.h	Tue Jun 28 08:54:28 2022
*************** extern const attribute_spec d_langhook_a
*** 491,496 ****
--- 491,497 ----
  extern const attribute_spec d_langhook_common_attribute_table[];
  
  extern tree d_builtin_function (tree);
+ extern tree d_builtin_function_ext_scope (tree);
  extern void d_init_builtins (void);
  extern void d_register_builtin_type (tree, const char *);
  extern void d_build_builtins_module (Module *);
*************** extern bool decl_with_nonnull_addr_p (co
*** 581,586 ****
--- 582,588 ----
  extern tree d_truthvalue_conversion (tree);
  extern tree d_convert (tree, tree);
  extern tree convert_expr (tree, Type *, Type *);
+ extern tree convert_for_rvalue (tree, Type *, Type *);
  extern tree convert_for_assignment (tree, Type *, Type *);
  extern tree convert_for_argument (tree, Parameter *);
  extern tree convert_for_condition (tree, Type *);
*************** extern tree layout_typeinfo (TypeInfoDec
*** 655,660 ****
--- 657,663 ----
  extern tree layout_classinfo (ClassDeclaration *);
  extern tree get_typeinfo_decl (TypeInfoDeclaration *);
  extern tree get_classinfo_decl (ClassDeclaration *);
+ extern void check_typeinfo_type (const Loc &, Scope *);
  extern tree build_typeinfo (const Loc &, Type *);
  extern void create_typeinfo (Type *, Module *);
  extern void create_tinfo_types (Module *);
diff -Nrcpad gcc-10.3.0/gcc/d/decl.cc gcc-10.4.0/gcc/d/decl.cc
*** gcc-10.3.0/gcc/d/decl.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/decl.cc	Tue Jun 28 08:54:28 2022
*************** get_symbol_decl (Declaration *decl)
*** 1253,1258 ****
--- 1253,1261 ----
  	      DECL_VINDEX (decl->csym) = size_int (fd->vtblIndex);
  	      DECL_VIRTUAL_P (decl->csym) = 1;
  	    }
+ 
+ 	  /* Align method to the minimum boundary for target.  */
+ 	  SET_DECL_ALIGN (decl->csym, MINIMUM_METHOD_BOUNDARY);
  	}
        else if (fd->isMain () || fd->isCMain ())
  	{
*************** d_finish_decl (tree decl)
*** 1585,1592 ****
    if (flag_checking && DECL_INITIAL (decl))
      {
        /* Initializer must never be bigger than symbol size.  */
!       dinteger_t tsize = int_size_in_bytes (TREE_TYPE (decl));
!       dinteger_t dtsize = int_size_in_bytes (TREE_TYPE (DECL_INITIAL (decl)));
  
        if (tsize < dtsize)
  	{
--- 1588,1596 ----
    if (flag_checking && DECL_INITIAL (decl))
      {
        /* Initializer must never be bigger than symbol size.  */
!       HOST_WIDE_INT tsize = int_size_in_bytes (TREE_TYPE (decl));
!       HOST_WIDE_INT dtsize =
! 	int_size_in_bytes (TREE_TYPE (DECL_INITIAL (decl)));
  
        if (tsize < dtsize)
  	{
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/cond.c gcc-10.4.0/gcc/d/dmd/cond.c
*** gcc-10.3.0/gcc/d/dmd/cond.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/cond.c	Tue Jun 28 08:54:28 2022
*************** static void lowerArrayAggregate(StaticFo
*** 114,119 ****
--- 114,120 ----
          sfe->aggrfe->aggr = new TupleExp(aggr->loc, es);
          sfe->aggrfe->aggr = semantic(sfe->aggrfe->aggr, sc);
          sfe->aggrfe->aggr = sfe->aggrfe->aggr->optimize(WANTvalue);
+         sfe->aggrfe->aggr = sfe->aggrfe->aggr->ctfeInterpret();
      }
      else
      {
*************** static TypeStruct *createTupleType(Loc l
*** 200,206 ****
      Type *ty = new TypeTypeof(loc, new TupleExp(loc, e));
      sdecl->members->push(new VarDeclaration(loc, ty, fid, NULL));
      TypeStruct *r = (TypeStruct *)sdecl->type;
!     r->vtinfo = TypeInfoStructDeclaration::create(r); // prevent typeinfo from going to object file
      return r;
  }
  
--- 201,208 ----
      Type *ty = new TypeTypeof(loc, new TupleExp(loc, e));
      sdecl->members->push(new VarDeclaration(loc, ty, fid, NULL));
      TypeStruct *r = (TypeStruct *)sdecl->type;
!     if (global.params.useTypeInfo && Type::dtypeinfo)
!         r->vtinfo = TypeInfoStructDeclaration::create(r); // prevent typeinfo from going to object file
      return r;
  }
  
*************** static void lowerNonArrayAggregate(Stati
*** 314,328 ****
      Identifier *idres = Identifier::generateId("__res");
      VarDeclaration *vard = new VarDeclaration(aloc, aty, idres, NULL);
      Statements *s2 = new Statements();
!     s2->push(new ExpStatement(aloc, vard));
!     Expression *catass = new CatAssignExp(aloc, new IdentifierExp(aloc, idres), res[1]);
!     s2->push(createForeach(sfe, aloc, pparams[1], new ExpStatement(aloc, catass)));
!     s2->push(new ReturnStatement(aloc, new IdentifierExp(aloc, idres)));
  
      Expression *aggr;
      Type *indexty;
  
!     if (sfe->rangefe && (indexty = ety->semantic(aloc, sc))->isintegral())
      {
          sfe->rangefe->lwr->type = indexty;
          sfe->rangefe->upr->type = indexty;
--- 316,340 ----
      Identifier *idres = Identifier::generateId("__res");
      VarDeclaration *vard = new VarDeclaration(aloc, aty, idres, NULL);
      Statements *s2 = new Statements();
! 
!     // Run 'typeof' gagged to avoid duplicate errors and if it fails just create
!     // an empty foreach to expose them.
!     unsigned olderrors = global.startGagging();
!     ety = ety->semantic(aloc, sc);
!     if (global.endGagging(olderrors))
!         s2->push(createForeach(sfe, aloc, pparams[1], NULL));
!     else
!     {
!         s2->push(new ExpStatement(aloc, vard));
!         Expression *catass = new CatAssignExp(aloc, new IdentifierExp(aloc, idres), res[1]);
!         s2->push(createForeach(sfe, aloc, pparams[1], new ExpStatement(aloc, catass)));
!         s2->push(new ReturnStatement(aloc, new IdentifierExp(aloc, idres)));
!     }
  
      Expression *aggr;
      Type *indexty;
  
!     if (sfe->rangefe && (indexty = ety)->isintegral())
      {
          sfe->rangefe->lwr->type = indexty;
          sfe->rangefe->upr->type = indexty;
*************** void staticForeachPrepare(StaticForeach
*** 386,396 ****
          sfe->aggrfe->aggr = semantic(sfe->aggrfe->aggr, sc);
          sc = sc->endCTFE();
          sfe->aggrfe->aggr = sfe->aggrfe->aggr->optimize(WANTvalue);
-         Type *tab = sfe->aggrfe->aggr->type->toBasetype();
-         if (tab->ty != Ttuple)
-         {
-             sfe->aggrfe->aggr = sfe->aggrfe->aggr->ctfeInterpret();
-         }
      }
  
      if (sfe->aggrfe && sfe->aggrfe->aggr->type->toBasetype()->ty == Terror)
--- 398,403 ----
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/dcast.c gcc-10.4.0/gcc/d/dmd/dcast.c
*** gcc-10.3.0/gcc/d/dmd/dcast.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/dcast.c	Tue Jun 28 08:54:28 2022
*************** Expression *castTo(Expression *e, Scope
*** 1494,1506 ****
                      // cast(U[])sa; // ==> cast(U[])sa[];
                      d_uns64 fsize = t1b->nextOf()->size();
                      d_uns64 tsize = tob->nextOf()->size();
!                     if ((((TypeSArray *)t1b)->dim->toInteger() * fsize) % tsize != 0)
                      {
!                         // copied from sarray_toDarray() in e2ir.c
!                         e->error("cannot cast expression %s of type %s to %s since sizes don't line up",
!                             e->toChars(), e->type->toChars(), t->toChars());
!                         result = new ErrorExp();
!                         return;
                      }
                      goto Lok;
                  }
--- 1494,1509 ----
                      // cast(U[])sa; // ==> cast(U[])sa[];
                      d_uns64 fsize = t1b->nextOf()->size();
                      d_uns64 tsize = tob->nextOf()->size();
!                     if (fsize != tsize)
                      {
!                         dinteger_t dim = ((TypeSArray *)t1b)->dim->toInteger();
!                         if (tsize == 0 || (dim * fsize) % tsize != 0)
!                         {
!                             e->error("cannot cast expression `%s` of type `%s` to `%s` since sizes don't line up",
!                                      e->toChars(), e->type->toChars(), t->toChars());
!                             result = new ErrorExp();
!                             return;
!                         }
                      }
                      goto Lok;
                  }
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/dinterpret.c gcc-10.4.0/gcc/d/dmd/dinterpret.c
*** gcc-10.3.0/gcc/d/dmd/dinterpret.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/dinterpret.c	Tue Jun 28 08:54:28 2022
*************** Expression *ctfeInterpret(Expression *e)
*** 645,651 ****
--- 645,660 ----
      case TOKfloat64:
      case TOKcomplex80:
      case TOKnull:
+     case TOKvoid:
      case TOKstring:
+     case TOKthis:
+     case TOKsuper:
+     case TOKtype:
+     case TOKtypeid:
+     case TOKtemplate:   // non-eponymous template/instance
+     case TOKscope:      // ditto
+     case TOKdottd:      // ditto, e.e1 doesn't matter here
+     case TOKdot:        // ditto
          if (e->type->ty == Terror)
              return new ErrorExp();
          /* fall through */
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/expression.c gcc-10.4.0/gcc/d/dmd/expression.c
*** gcc-10.3.0/gcc/d/dmd/expression.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/expression.c	Tue Jun 28 08:54:28 2022
*************** Expression *resolvePropertiesX(Scope *sc
*** 459,469 ****
              if (checkUnsafeAccess(sc, e1, true, true))
                  return new ErrorExp();
          }
-         else if (e1->op == TOKdot)
-         {
-             e1->error("expression has no value");
-             return new ErrorExp();
-         }
          else if (e1->op == TOKcall)
          {
              CallExp *ce = (CallExp *)e1;
--- 459,464 ----
*************** bool Expression::checkPostblit(Scope *sc
*** 2655,2662 ****
      t = t->baseElemOf();
      if (t->ty == Tstruct)
      {
!         // Bugzilla 11395: Require TypeInfo generation for array concatenation
!         semanticTypeInfo(sc, t);
  
          StructDeclaration *sd = ((TypeStruct *)t)->sym;
          if (sd->postblit)
--- 2650,2660 ----
      t = t->baseElemOf();
      if (t->ty == Tstruct)
      {
!         if (global.params.useTypeInfo && Type::dtypeinfo)
!         {
!             // Bugzilla 11395: Require TypeInfo generation for array concatenation
!             semanticTypeInfo(sc, t);
!         }
  
          StructDeclaration *sd = ((TypeStruct *)t)->sym;
          if (sd->postblit)
*************** DotTemplateExp::DotTemplateExp(Loc loc,
*** 5250,5255 ****
--- 5248,5265 ----
      this->td = td;
  }
  
+ bool DotTemplateExp::checkType()
+ {
+     error("%s %s has no type", td->kind(), toChars());
+     return true;
+ }
+ 
+ bool DotTemplateExp::checkValue()
+ {
+     error("%s %s has no value", td->kind(), toChars());
+     return true;
+ }
+ 
  /************************************************************/
  
  DotVarExp::DotVarExp(Loc loc, Expression *e, Declaration *var, bool hasOverloads)
*************** Expression *FuncInitExp::resolveLoc(Loc
*** 6729,6735 ****
          s = "";
      Expression *e = new StringExp(loc, const_cast<char *>(s));
      e = semantic(e, sc);
!     e = e->castTo(sc, type);
      return e;
  }
  
--- 6739,6745 ----
          s = "";
      Expression *e = new StringExp(loc, const_cast<char *>(s));
      e = semantic(e, sc);
!     e->type = Type::tstring;
      return e;
  }
  
*************** Expression *PrettyFuncInitExp::resolveLo
*** 6763,6769 ****
  
      Expression *e = new StringExp(loc, const_cast<char *>(s));
      e = semantic(e, sc);
!     e = e->castTo(sc, type);
      return e;
  }
  
--- 6773,6779 ----
  
      Expression *e = new StringExp(loc, const_cast<char *>(s));
      e = semantic(e, sc);
!     e->type = Type::tstring;
      return e;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/expression.h gcc-10.4.0/gcc/d/dmd/expression.h
*** gcc-10.3.0/gcc/d/dmd/expression.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/expression.h	Tue Jun 28 08:54:28 2022
*************** public:
*** 807,812 ****
--- 807,814 ----
      TemplateDeclaration *td;
  
      DotTemplateExp(Loc loc, Expression *e, TemplateDeclaration *td);
+     bool checkType();
+     bool checkValue();
      void accept(Visitor *v) { v->visit(this); }
  };
  
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/expressionsem.c gcc-10.4.0/gcc/d/dmd/expressionsem.c
*** gcc-10.3.0/gcc/d/dmd/expressionsem.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/expressionsem.c	Tue Jun 28 08:54:28 2022
*************** public:
*** 2506,2516 ****
--- 2506,2523 ----
  
      void visit(DotTemplateExp *e)
      {
+         if (e->type)
+         {
+             result = e;
+             return;
+         }
          if (Expression *ex = unaSemantic(e, sc))
          {
              result = ex;
              return;
          }
+         // 'void' like TemplateExp
+         e->type = Type::tvoid;
          result = e;
      }
  
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/mtype.c gcc-10.4.0/gcc/d/dmd/mtype.c
*** gcc-10.3.0/gcc/d/dmd/mtype.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/mtype.c	Tue Jun 28 08:54:28 2022
*************** Expression *Type::getProperty(Loc loc, I
*** 2060,2066 ****
      }
      else if (ident == Id::__xalignof)
      {
!         e = new IntegerExp(loc, alignsize(), Type::tsize_t);
      }
      else if (ident == Id::_init)
      {
--- 2060,2069 ----
      }
      else if (ident == Id::__xalignof)
      {
!         unsigned explicitAlignment = alignment();
!         unsigned naturalAlignment = alignsize();
!         unsigned actualAlignment = (explicitAlignment == STRUCTALIGN_DEFAULT ? naturalAlignment : explicitAlignment);
!         e = new IntegerExp(loc, actualAlignment, Type::tsize_t);
      }
      else if (ident == Id::_init)
      {
diff -Nrcpad gcc-10.3.0/gcc/d/dmd/statementsem.c gcc-10.4.0/gcc/d/dmd/statementsem.c
*** gcc-10.3.0/gcc/d/dmd/statementsem.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/dmd/statementsem.c	Tue Jun 28 08:54:28 2022
*************** public:
*** 568,576 ****
              else
              {
                  e = resolveProperties(sc, e);
-                 type = e->type;
-                 if (paramtype)
-                     type = paramtype;
                  Initializer *ie = new ExpInitializer(Loc(), e);
                  VarDeclaration *v = new VarDeclaration(loc, type, ident, ie);
                  if (storageClass & STCref)
--- 568,573 ----
*************** public:
*** 651,672 ****
                  }
              }
              p->type = p->type->semantic(loc, sc);
!             TY keyty = p->type->ty;
!             if (keyty != Tint32 && keyty != Tuns32)
              {
!                 if (global.params.isLP64)
!                 {
!                     if (keyty != Tint64 && keyty != Tuns64)
!                     {
!                         fs->error("foreach: key type must be int or uint, long or ulong, not %s", p->type->toChars());
!                         return false;
!                     }
!                 }
!                 else
!                 {
!                     fs->error("foreach: key type must be int or uint, not %s", p->type->toChars());
!                     return false;
!                 }
              }
              Initializer *ie = new ExpInitializer(Loc(), new IntegerExp(k));
              VarDeclaration *var = new VarDeclaration(loc, p->type, p->ident, ie);
--- 648,670 ----
                  }
              }
              p->type = p->type->semantic(loc, sc);
! 
!             if (!p->type->isintegral())
              {
!                 fs->error("foreach: key cannot be of non-integral type `%s`",
!                           p->type->toChars());
!                 return false;
!             }
! 
!             unsigned length = te ? te->exps->dim : tuple->arguments->dim;
!             IntRange dimrange = IntRange(SignExtendedNumber(length)).cast(Type::tsize_t);
!             // https://issues.dlang.org/show_bug.cgi?id=12504
!             dimrange.imax = SignExtendedNumber(dimrange.imax.value-1);
!             if (!IntRange::fromType(p->type).contains(dimrange))
!             {
!                 fs->error("index type `%s` cannot cover index range 0..%llu",
! 			  p->type->toChars(), (ulonglong)length);
!                 return false;
              }
              Initializer *ie = new ExpInitializer(Loc(), new IntegerExp(k));
              VarDeclaration *var = new VarDeclaration(loc, p->type, p->ident, ie);
*************** public:
*** 1079,1084 ****
--- 1077,1084 ----
                              {
                                  TypeSArray *ta =  (TypeSArray *)tab;
                                  IntRange dimrange = getIntRange(ta->dim);
+                                 // https://issues.dlang.org/show_bug.cgi?id=12504
+                                 dimrange.imax = SignExtendedNumber(dimrange.imax.value-1);
                                  if (!IntRange::fromType(var->type).contains(dimrange))
                                  {
                                      fs->error("index type '%s' cannot cover index range 0..%llu", p->type->toChars(), ta->dim->toInteger());
diff -Nrcpad gcc-10.3.0/gcc/d/expr.cc gcc-10.4.0/gcc/d/expr.cc
*** gcc-10.3.0/gcc/d/expr.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/expr.cc	Tue Jun 28 08:54:28 2022
*************** class ExprVisitor : public Visitor
*** 162,168 ****
  	    eptype = type;
  	  }
  
! 	ret = fold_build2 (code, eptype, arg0, arg1);
        }
  
      return d_convert (type, ret);
--- 162,168 ----
  	    eptype = type;
  	  }
  
! 	ret = build2 (code, eptype, arg0, arg1);
        }
  
      return d_convert (type, ret);
*************** public:
*** 1468,1474 ****
      if (tbtype->ty == Tvoid)
        this->result_ = build_nop (build_ctype (tbtype), result);
      else
!       this->result_ = convert_expr (result, ebtype, tbtype);
    }
  
    /* Build a delete expression.  */
--- 1468,1474 ----
      if (tbtype->ty == Tvoid)
        this->result_ = build_nop (build_ctype (tbtype), result);
      else
!       this->result_ = convert_for_rvalue (result, ebtype, tbtype);
    }
  
    /* Build a delete expression.  */
*************** public:
*** 1870,1884 ****
        exp = d_convert (build_ctype (e->type), exp);
  
      /* If this call was found to be a constructor for a temporary with a
!        cleanup, then move the call inside the TARGET_EXPR.  The original
!        initializer is turned into an assignment, to keep its side effect.  */
      if (cleanup != NULL_TREE)
        {
  	tree init = TARGET_EXPR_INITIAL (cleanup);
- 	tree slot = TARGET_EXPR_SLOT (cleanup);
- 	d_mark_addressable (slot);
- 	init = build_assign (INIT_EXPR, slot, init);
- 
  	TARGET_EXPR_INITIAL (cleanup) = compound_expr (init, exp);
  	exp = cleanup;
        }
--- 1870,1879 ----
        exp = d_convert (build_ctype (e->type), exp);
  
      /* If this call was found to be a constructor for a temporary with a
!        cleanup, then move the call inside the TARGET_EXPR.  */
      if (cleanup != NULL_TREE)
        {
  	tree init = TARGET_EXPR_INITIAL (cleanup);
  	TARGET_EXPR_INITIAL (cleanup) = compound_expr (init, exp);
  	exp = cleanup;
        }
*************** build_return_dtor (Expression *e, Type *
*** 3144,3154 ****
    tree result = build_expr (e);
  
    /* Convert for initializing the DECL_RESULT.  */
-   result = convert_expr (result, e->type, type);
- 
-   /* If we are returning a reference, take the address.  */
    if (tf->isref)
!     result = build_address (result);
  
    /* The decl to store the return expression.  */
    tree decl = DECL_RESULT (cfun->decl);
--- 3139,3152 ----
    tree result = build_expr (e);
  
    /* Convert for initializing the DECL_RESULT.  */
    if (tf->isref)
!     {
!       /* If we are returning a reference, take the address.  */
!       result = convert_expr (result, e->type, type);
!       result = build_address (result);
!     }
!   else
!     result = convert_for_rvalue (result, e->type, type);
  
    /* The decl to store the return expression.  */
    tree decl = DECL_RESULT (cfun->decl);
diff -Nrcpad gcc-10.3.0/gcc/d/typeinfo.cc gcc-10.4.0/gcc/d/typeinfo.cc
*** gcc-10.3.0/gcc/d/typeinfo.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/d/typeinfo.cc	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 27,32 ****
--- 27,33 ----
  #include "dmd/identifier.h"
  #include "dmd/module.h"
  #include "dmd/mtype.h"
+ #include "dmd/scope.h"
  #include "dmd/template.h"
  #include "dmd/target.h"
  
*************** make_internal_typeinfo (tinfo_kind tk, I
*** 178,183 ****
--- 179,185 ----
  
    /* Create the TypeInfo type.  */
    tree type = make_node (RECORD_TYPE);
+   TYPE_ARTIFICIAL (type) = 1;
    finish_builtin_struct (type, ident->toChars (), fields, NULL_TREE);
  
    tinfo_types[tk] = type;
*************** create_tinfo_types (Module *mod)
*** 244,251 ****
  static void
  create_frontend_tinfo_types (void)
  {
!   /* If there's no Object class defined, then neither can TypeInfo be.  */
!   if (object_module == NULL || ClassDeclaration::object == NULL)
      return;
  
    /* Create all frontend TypeInfo classes declarations.  We rely on all
--- 246,253 ----
  static void
  create_frontend_tinfo_types (void)
  {
!   /* If there's no object module, then neither can there be TypeInfo.  */
!   if (object_module == NULL)
      return;
  
    /* Create all frontend TypeInfo classes declarations.  We rely on all
*************** get_classinfo_decl (ClassDeclaration *de
*** 1370,1385 ****
    return decl->csym;
  }
  
! /* Returns typeinfo reference for TYPE.  */
  
! tree
! build_typeinfo (const Loc &loc, Type *type)
  {
    if (!global.params.useTypeInfo)
      {
        static int warned = 0;
  
!       if (!warned)
  	{
  	  error_at (make_location_t (loc),
  		    "%<object.TypeInfo%> cannot be used with %<-fno-rtti%>");
--- 1372,1390 ----
    return decl->csym;
  }
  
! /* Performs sanity checks on the `object.TypeInfo' type, raising an error if
!    RTTI is disabled, or the type is missing.  */
  
! void
! check_typeinfo_type (const Loc &loc, Scope *sc)
  {
    if (!global.params.useTypeInfo)
      {
        static int warned = 0;
  
!       /* Even when compiling without RTTI we should still be able to evaluate
! 	 TypeInfo at compile-time, just not at run-time.  */
!       if (!warned && (!sc || !(sc->flags & SCOPEctfe)))
  	{
  	  error_at (make_location_t (loc),
  		    "%<object.TypeInfo%> cannot be used with %<-fno-rtti%>");
*************** build_typeinfo (const Loc &loc, Type *ty
*** 1387,1393 ****
--- 1392,1420 ----
  	}
      }
  
+   if (Type::dtypeinfo == NULL
+       || (Type::dtypeinfo->storage_class & STCtemp))
+     {
+       /* If TypeInfo has not been declared, warn about each location once.  */
+       static Loc warnloc;
+ 
+       if (!warnloc.equals (loc))
+ 	{
+ 	  error_at (make_location_t (loc),
+ 		    "%<object.TypeInfo%> could not be found, "
+ 		    "but is implicitly used");
+ 	  warnloc = loc;
+ 	}
+     }
+ }
+ 
+ /* Returns typeinfo reference for TYPE.  */
+ 
+ tree
+ build_typeinfo (const Loc &loc, Type *type)
+ {
    gcc_assert (type->ty != Terror);
+   check_typeinfo_type (loc, NULL);
    create_typeinfo (type, NULL);
    return build_address (get_typeinfo_decl (type->vtinfo));
  }
diff -Nrcpad gcc-10.3.0/gcc/doc/cpp.1 gcc-10.4.0/gcc/doc/cpp.1
*** gcc-10.3.0/gcc/doc/cpp.1	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/cpp.1	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "CPP 1"
! .TH CPP 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** time of the source or package and it sho
*** 916,923 ****
  process.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIgcc\fR\|(1), and the Info entries for \fIcpp\fR and \fIgcc\fR.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1987\-2020 Free Software Foundation, Inc.
--- 920,927 ----
  process.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBgcc\fR\|(1), and the Info entries for \fIcpp\fR and \fIgcc\fR.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1987\-2020 Free Software Foundation, Inc.
*************** Permission is granted to copy, distribut
*** 926,932 ****
  under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation.  A copy of
  the license is included in the
! man page \fIgfdl\fR\|(7).
  This manual contains no Invariant Sections.  The Front-Cover Texts are
  (a) (see below), and the Back-Cover Texts are (b) (see below).
  .PP
--- 930,936 ----
  under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.3 or
  any later version published by the Free Software Foundation.  A copy of
  the license is included in the
! man page \fBgfdl\fR\|(7).
  This manual contains no Invariant Sections.  The Front-Cover Texts are
  (a) (see below), and the Back-Cover Texts are (b) (see below).
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/cpp.info gcc-10.4.0/gcc/doc/cpp.info
*** gcc-10.3.0/gcc/doc/cpp.info	Thu Apr  8 12:06:41 2021
--- gcc-10.4.0/gcc/doc/cpp.info	Tue Jun 28 09:09:20 2022
***************
*** 1,4 ****
! This is cpp.info, produced by makeinfo version 6.5 from cpp.texi.
  
  Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
--- 1,4 ----
! This is cpp.info, produced by makeinfo version 6.8 from cpp.texi.
  
  Copyright (C) 1987-2020 Free Software Foundation, Inc.
  
*************** double underscores.
*** 2093,2103 ****
       mechanism based on 'setjmp' and 'longjmp' for exception handling.
  
  '__GXX_EXPERIMENTAL_CXX0X__'
!      This macro is defined when compiling a C++ source file with the
!      option '-std=c++0x' or '-std=gnu++0x'.  It indicates that some
!      features likely to be included in C++0x are available.  Note that
!      these features are experimental, and may change or be removed in
!      future versions of GCC.
  
  '__GXX_WEAK__'
       This macro is defined when compiling a C++ source file.  It has the
--- 2093,2105 ----
       mechanism based on 'setjmp' and 'longjmp' for exception handling.
  
  '__GXX_EXPERIMENTAL_CXX0X__'
!      This macro is defined when compiling a C++ source file with C++11
!      features enabled, i.e., for all C++ language dialects except
!      '-std=c++98' and '-std=gnu++98'.  This macro is obsolete, but can
!      be used to detect experimental C++0x features in very old versions
!      of GCC. Since GCC 4.7.0 the '__cplusplus' macro is defined
!      correctly, so most code should test '__cplusplus >= 201103L'
!      instead of using this macro.
  
  '__GXX_WEAK__'
       This macro is defined when compiling a C++ source file.  It has the
*************** without any initial '-' or '--'.
*** 5243,5328 ****
  [index]
  * Menu:
  
! * A:                                     Invocation.          (line 333)
! * C:                                     Invocation.          (line 342)
! * CC:                                    Invocation.          (line 354)
  * CPATH:                                 Environment Variables.
                                                                (line  15)
  * CPLUS_INCLUDE_PATH:                    Environment Variables.
                                                                (line  17)
  * C_INCLUDE_PATH:                        Environment Variables.
                                                                (line  16)
! * D:                                     Invocation.          (line  44)
! * d:                                     Invocation.          (line 403)
! * dD:                                    Invocation.          (line 422)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                               (line  45)
! * dI:                                    Invocation.          (line 432)
! * dM:                                    Invocation.          (line 411)
! * dN:                                    Invocation.          (line 428)
! * dU:                                    Invocation.          (line 436)
! * fdebug-cpp:                            Invocation.          (line 443)
! * fdirectives-only:                      Invocation.          (line 228)
! * fdollars-in-identifiers:               Invocation.          (line 249)
! * fexec-charset:                         Invocation.          (line 296)
! * fextended-identifiers:                 Invocation.          (line 252)
! * finput-charset:                        Invocation.          (line 309)
! * fmacro-prefix-map:                     Invocation.          (line 287)
! * fmax-include-depth:                    Invocation.          (line 261)
! * fno-canonical-system-headers:          Invocation.          (line 257)
! * fno-working-directory:                 Invocation.          (line 319)
! * fpreprocessed:                         Invocation.          (line 215)
! * ftabstop:                              Invocation.          (line 264)
! * ftrack-macro-expansion:                Invocation.          (line 270)
! * fwide-exec-charset:                    Invocation.          (line 301)
! * fworking-directory:                    Invocation.          (line 319)
! * H:                                     Invocation.          (line 396)
! * I:                                     Invocation.          (line 454)
! * I-:                                    Invocation.          (line 508)
! * idirafter:                             Invocation.          (line 454)
! * imacros:                               Invocation.          (line  82)
! * imultilib:                             Invocation.          (line 542)
! * include:                               Invocation.          (line  71)
! * iprefix:                               Invocation.          (line 524)
! * iquote:                                Invocation.          (line 454)
! * isysroot:                              Invocation.          (line 536)
! * isystem:                               Invocation.          (line 454)
! * iwithprefix:                           Invocation.          (line 530)
! * iwithprefixbefore:                     Invocation.          (line 530)
! * M:                                     Invocation.          (line 103)
! * MD:                                    Invocation.          (line 195)
! * MF:                                    Invocation.          (line 137)
! * MG:                                    Invocation.          (line 148)
! * MM:                                    Invocation.          (line 128)
! * MMD:                                   Invocation.          (line 211)
! * MP:                                    Invocation.          (line 158)
! * MQ:                                    Invocation.          (line 185)
! * MT:                                    Invocation.          (line 170)
! * nostdinc:                              Invocation.          (line 546)
! * nostdinc++:                            Invocation.          (line 552)
  * OBJC_INCLUDE_PATH:                     Environment Variables.
                                                                (line  18)
! * P:                                     Invocation.          (line 366)
! * pthread:                               Invocation.          (line  96)
! * remap:                                 Invocation.          (line 392)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                               (line  67)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                               (line  61)
! * traditional:                           Invocation.          (line 374)
! * traditional-cpp:                       Invocation.          (line 374)
! * trigraphs:                             Invocation.          (line 383)
! * U:                                     Invocation.          (line  67)
! * undef:                                 Invocation.          (line  91)
! * Wcomment:                              Invocation.          (line 558)
! * Wcomments:                             Invocation.          (line 558)
! * Wendif-labels:                         Invocation.          (line 602)
! * Wexpansion-to-defined:                 Invocation.          (line 577)
! * Wno-endif-labels:                      Invocation.          (line 602)
! * Wno-undef:                             Invocation.          (line 573)
! * Wtrigraphs:                            Invocation.          (line 563)
! * Wundef:                                Invocation.          (line 573)
! * Wunused-macros:                        Invocation.          (line 583)
  
  
  File: cpp.info,  Node: Concept Index,  Prev: Option Index,  Up: Top
--- 5245,5330 ----
  [index]
  * Menu:
  
! * A:                                     Invocation.          (line 332)
! * C:                                     Invocation.          (line 341)
! * CC:                                    Invocation.          (line 353)
  * CPATH:                                 Environment Variables.
                                                                (line  15)
  * CPLUS_INCLUDE_PATH:                    Environment Variables.
                                                                (line  17)
  * C_INCLUDE_PATH:                        Environment Variables.
                                                                (line  16)
! * D:                                     Invocation.          (line  43)
! * d:                                     Invocation.          (line 402)
! * dD:                                    Invocation.          (line 421)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                               (line  44)
! * dI:                                    Invocation.          (line 431)
! * dM:                                    Invocation.          (line 410)
! * dN:                                    Invocation.          (line 427)
! * dU:                                    Invocation.          (line 435)
! * fdebug-cpp:                            Invocation.          (line 442)
! * fdirectives-only:                      Invocation.          (line 227)
! * fdollars-in-identifiers:               Invocation.          (line 248)
! * fexec-charset:                         Invocation.          (line 295)
! * fextended-identifiers:                 Invocation.          (line 251)
! * finput-charset:                        Invocation.          (line 308)
! * fmacro-prefix-map:                     Invocation.          (line 286)
! * fmax-include-depth:                    Invocation.          (line 260)
! * fno-canonical-system-headers:          Invocation.          (line 256)
! * fno-working-directory:                 Invocation.          (line 318)
! * fpreprocessed:                         Invocation.          (line 214)
! * ftabstop:                              Invocation.          (line 263)
! * ftrack-macro-expansion:                Invocation.          (line 269)
! * fwide-exec-charset:                    Invocation.          (line 300)
! * fworking-directory:                    Invocation.          (line 318)
! * H:                                     Invocation.          (line 395)
! * I:                                     Invocation.          (line 453)
! * I-:                                    Invocation.          (line 507)
! * idirafter:                             Invocation.          (line 453)
! * imacros:                               Invocation.          (line  81)
! * imultilib:                             Invocation.          (line 541)
! * include:                               Invocation.          (line  70)
! * iprefix:                               Invocation.          (line 523)
! * iquote:                                Invocation.          (line 453)
! * isysroot:                              Invocation.          (line 535)
! * isystem:                               Invocation.          (line 453)
! * iwithprefix:                           Invocation.          (line 529)
! * iwithprefixbefore:                     Invocation.          (line 529)
! * M:                                     Invocation.          (line 102)
! * MD:                                    Invocation.          (line 194)
! * MF:                                    Invocation.          (line 136)
! * MG:                                    Invocation.          (line 147)
! * MM:                                    Invocation.          (line 127)
! * MMD:                                   Invocation.          (line 210)
! * MP:                                    Invocation.          (line 157)
! * MQ:                                    Invocation.          (line 184)
! * MT:                                    Invocation.          (line 169)
! * nostdinc:                              Invocation.          (line 545)
! * nostdinc++:                            Invocation.          (line 551)
  * OBJC_INCLUDE_PATH:                     Environment Variables.
                                                                (line  18)
! * P:                                     Invocation.          (line 365)
! * pthread:                               Invocation.          (line  95)
! * remap:                                 Invocation.          (line 391)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                               (line  66)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                               (line  60)
! * traditional:                           Invocation.          (line 373)
! * traditional-cpp:                       Invocation.          (line 373)
! * trigraphs:                             Invocation.          (line 382)
! * U:                                     Invocation.          (line  66)
! * undef:                                 Invocation.          (line  90)
! * Wcomment:                              Invocation.          (line 557)
! * Wcomments:                             Invocation.          (line 557)
! * Wendif-labels:                         Invocation.          (line 601)
! * Wexpansion-to-defined:                 Invocation.          (line 576)
! * Wno-endif-labels:                      Invocation.          (line 601)
! * Wno-undef:                             Invocation.          (line 572)
! * Wtrigraphs:                            Invocation.          (line 562)
! * Wundef:                                Invocation.          (line 572)
! * Wunused-macros:                        Invocation.          (line 582)
  
  
  File: cpp.info,  Node: Concept Index,  Prev: Option Index,  Up: Top
*************** Concept Index
*** 5347,5358 ****
  * assertions, canceling:                 Obsolete Features.   (line  59)
  * backslash-newline:                     Initial processing.  (line  61)
  * block comments:                        Initial processing.  (line  77)
! * C language, traditional:               Invocation.          (line 372)
  * C++ named operators:                   C++ Named Operators. (line   6)
  * character constants:                   Tokenization.        (line  81)
! * character set, execution:              Invocation.          (line 296)
! * character set, input:                  Invocation.          (line 309)
! * character set, wide execution:         Invocation.          (line 301)
  * command line:                          Invocation.          (line   6)
  * commenting out code:                   Deleted Code.        (line   6)
  * comments:                              Initial processing.  (line  77)
--- 5349,5360 ----
  * assertions, canceling:                 Obsolete Features.   (line  59)
  * backslash-newline:                     Initial processing.  (line  61)
  * block comments:                        Initial processing.  (line  77)
! * C language, traditional:               Invocation.          (line 371)
  * C++ named operators:                   C++ Named Operators. (line   6)
  * character constants:                   Tokenization.        (line  81)
! * character set, execution:              Invocation.          (line 295)
! * character set, input:                  Invocation.          (line 308)
! * character set, wide execution:         Invocation.          (line 300)
  * command line:                          Invocation.          (line   6)
  * commenting out code:                   Deleted Code.        (line   6)
  * comments:                              Initial processing.  (line  77)
*************** Concept Index
*** 5366,5375 ****
  * controlling macro:                     Once-Only Headers.   (line  35)
  * defined:                               Defined.             (line   6)
  * dependencies for make as output:       Environment Variables.
!                                                               (line  46)
  * dependencies for make as output <1>:   Environment Variables.
!                                                               (line  62)
! * dependencies, make:                    Invocation.          (line 103)
  * diagnostic:                            Diagnostics.         (line   6)
  * digraphs:                              Tokenization.        (line 100)
  * directive line:                        The preprocessing language.
--- 5368,5377 ----
  * controlling macro:                     Once-Only Headers.   (line  35)
  * defined:                               Defined.             (line   6)
  * dependencies for make as output:       Environment Variables.
!                                                               (line  45)
  * dependencies for make as output <1>:   Environment Variables.
!                                                               (line  61)
! * dependencies, make:                    Invocation.          (line 102)
  * diagnostic:                            Diagnostics.         (line   6)
  * digraphs:                              Tokenization.        (line 100)
  * directive line:                        The preprocessing language.
*************** Concept Index
*** 5408,5414 ****
  * macros in include:                     Computed Includes.   (line   6)
  * macros with arguments:                 Macro Arguments.     (line   6)
  * macros with variable arguments:        Variadic Macros.     (line   6)
! * make:                                  Invocation.          (line 103)
  * manifest constants:                    Object-like Macros.  (line   6)
  * named operators:                       C++ Named Operators. (line   6)
  * newlines in macro arguments:           Newlines in Arguments.
--- 5410,5416 ----
  * macros in include:                     Computed Includes.   (line   6)
  * macros with arguments:                 Macro Arguments.     (line   6)
  * macros with variable arguments:        Variadic Macros.     (line   6)
! * make:                                  Invocation.          (line 102)
  * manifest constants:                    Object-like Macros.  (line   6)
  * named operators:                       C++ Named Operators. (line   6)
  * newlines in macro arguments:           Newlines in Arguments.
*************** Concept Index
*** 5416,5422 ****
  * null directive:                        Other Directives.    (line  15)
  * numbers:                               Tokenization.        (line  58)
  * object-like macro:                     Object-like Macros.  (line   6)
! * options:                               Invocation.          (line  43)
  * options, grouping:                     Invocation.          (line  38)
  * other tokens:                          Tokenization.        (line 114)
  * output format:                         Preprocessor Output. (line  12)
--- 5418,5424 ----
  * null directive:                        Other Directives.    (line  15)
  * numbers:                               Tokenization.        (line  58)
  * object-like macro:                     Object-like Macros.  (line   6)
! * options:                               Invocation.          (line  42)
  * options, grouping:                     Invocation.          (line  38)
  * other tokens:                          Tokenization.        (line 114)
  * output format:                         Preprocessor Output. (line  12)
*************** Concept Index
*** 5463,5469 ****
  * token concatenation:                   Concatenation.       (line   6)
  * token pasting:                         Concatenation.       (line   6)
  * tokens:                                Tokenization.        (line   6)
! * traditional C language:                Invocation.          (line 372)
  * trigraphs:                             Initial processing.  (line  32)
  * undefining macros:                     Undefining and Redefining Macros.
                                                                (line   6)
--- 5465,5471 ----
  * token concatenation:                   Concatenation.       (line   6)
  * token pasting:                         Concatenation.       (line   6)
  * tokens:                                Tokenization.        (line   6)
! * traditional C language:                Invocation.          (line 371)
  * trigraphs:                             Initial processing.  (line  32)
  * undefining macros:                     Undefining and Redefining Macros.
                                                                (line   6)
*************** Node: Variadic Macros59129
*** 5505,5558 ****
  Node: Predefined Macros64081
  Node: Standard Predefined Macros64669
  Node: Common Predefined Macros71001
! Node: System-specific Predefined Macros92104
! Node: C++ Named Operators94127
! Node: Undefining and Redefining Macros95091
! Node: Directives Within Macro Arguments97189
! Node: Macro Pitfalls98130
! Node: Misnesting98663
! Node: Operator Precedence Problems99775
! Node: Swallowing the Semicolon101641
! Node: Duplication of Side Effects103664
! Node: Self-Referential Macros105847
! Node: Argument Prescan108256
! Node: Newlines in Arguments112007
! Node: Conditionals112958
! Node: Conditional Uses114654
! Node: Conditional Syntax116012
! Node: Ifdef116412
! Node: If119569
! Node: Defined121873
! Node: Else123266
! Node: Elif123836
! Node: __has_attribute125149
! Node: __has_cpp_attribute126683
! Node: __has_builtin127569
! Node: __has_include128704
! Node: Deleted Code130291
! Node: Diagnostics131538
! Node: Line Control133087
! Node: Pragmas135365
! Node: Other Directives139762
! Node: Preprocessor Output140812
! Node: Traditional Mode143965
! Node: Traditional lexical analysis145102
! Node: Traditional macros147605
! Node: Traditional miscellany151402
! Node: Traditional warnings152398
! Node: Implementation Details154595
! Node: Implementation-defined behavior155158
! Ref: Identifier characters155908
! Node: Implementation limits158956
! Node: Obsolete Features161629
! Node: Invocation164473
! Ref: dashMF170508
! Ref: fdollars-in-identifiers175087
! Ref: Wtrigraphs189213
! Node: Environment Variables191268
! Node: GNU Free Documentation License194961
! Node: Index of Directives220106
! Node: Option Index222259
! Node: Concept Index228288
  
  End Tag Table
--- 5507,5565 ----
  Node: Predefined Macros64081
  Node: Standard Predefined Macros64669
  Node: Common Predefined Macros71001
! Node: System-specific Predefined Macros92241
! Node: C++ Named Operators94264
! Node: Undefining and Redefining Macros95228
! Node: Directives Within Macro Arguments97326
! Node: Macro Pitfalls98267
! Node: Misnesting98800
! Node: Operator Precedence Problems99912
! Node: Swallowing the Semicolon101778
! Node: Duplication of Side Effects103801
! Node: Self-Referential Macros105984
! Node: Argument Prescan108393
! Node: Newlines in Arguments112144
! Node: Conditionals113095
! Node: Conditional Uses114791
! Node: Conditional Syntax116149
! Node: Ifdef116549
! Node: If119706
! Node: Defined122010
! Node: Else123403
! Node: Elif123973
! Node: __has_attribute125286
! Node: __has_cpp_attribute126820
! Node: __has_builtin127706
! Node: __has_include128841
! Node: Deleted Code130428
! Node: Diagnostics131675
! Node: Line Control133224
! Node: Pragmas135502
! Node: Other Directives139899
! Node: Preprocessor Output140949
! Node: Traditional Mode144102
! Node: Traditional lexical analysis145239
! Node: Traditional macros147742
! Node: Traditional miscellany151539
! Node: Traditional warnings152535
! Node: Implementation Details154732
! Node: Implementation-defined behavior155295
! Ref: Identifier characters156045
! Node: Implementation limits159093
! Node: Obsolete Features161766
! Node: Invocation164610
! Ref: dashMF170645
! Ref: fdollars-in-identifiers175224
! Ref: Wtrigraphs189350
! Node: Environment Variables191405
! Node: GNU Free Documentation License195098
! Node: Index of Directives220243
! Node: Option Index222396
! Node: Concept Index228425
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/gcc/doc/cpp.texi gcc-10.4.0/gcc/doc/cpp.texi
*** gcc-10.3.0/gcc/doc/cpp.texi	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/cpp.texi	Tue Jun 28 08:54:28 2022
*************** mechanism based on @code{setjmp} and @co
*** 2311,2321 ****
  handling.
  
  @item __GXX_EXPERIMENTAL_CXX0X__
! This macro is defined when compiling a C++ source file with the option
! @option{-std=c++0x} or @option{-std=gnu++0x}. It indicates that some
! features likely to be included in C++0x are available. Note that these
! features are experimental, and may change or be removed in future
! versions of GCC.
  
  @item __GXX_WEAK__
  This macro is defined when compiling a C++ source file.  It has the
--- 2311,2323 ----
  handling.
  
  @item __GXX_EXPERIMENTAL_CXX0X__
! This macro is defined when compiling a C++ source file with C++11 features
! enabled, i.e., for all C++ language dialects except @option{-std=c++98}
! and @option{-std=gnu++98}. This macro is obsolete, but can be used to
! detect experimental C++0x features in very old versions of GCC. Since
! GCC 4.7.0 the @code{__cplusplus} macro is defined correctly, so most
! code should test @code{__cplusplus >= 201103L} instead of using this
! macro.
  
  @item __GXX_WEAK__
  This macro is defined when compiling a C++ source file.  It has the
diff -Nrcpad gcc-10.3.0/gcc/doc/cppinternals.info gcc-10.4.0/gcc/doc/cppinternals.info
*** gcc-10.3.0/gcc/doc/cppinternals.info	Thu Apr  8 12:06:41 2021
--- gcc-10.4.0/gcc/doc/cppinternals.info	Tue Jun 28 09:09:19 2022
***************
*** 1,4 ****
! This is cppinternals.info, produced by makeinfo version 6.5 from
  cppinternals.texi.
  
  INFO-DIR-SECTION Software development
--- 1,4 ----
! This is cppinternals.info, produced by makeinfo version 6.8 from
  cppinternals.texi.
  
  INFO-DIR-SECTION Software development
*************** will be removed, so I'll not discuss it
*** 137,143 ****
     The job of '_cpp_lex_direct' is simply to lex a token.  It is not
  responsible for issues like directive handling, returning lookahead
  tokens directly, multiple-include optimization, or conditional block
! skipping.  It necessarily has a minor ro^le to play in memory management
  of lexed lines.  I discuss these issues in a separate section (*note
  Lexing a line::).
  
--- 137,143 ----
     The job of '_cpp_lex_direct' is simply to lex a token.  It is not
  responsible for issues like directive handling, returning lookahead
  tokens directly, multiple-include optimization, or conditional block
! skipping.  It necessarily has a minor rôle to play in memory management
  of lexed lines.  I discuss these issues in a separate section (*note
  Lexing a line::).
  
*************** Node: Files44873
*** 1039,1041 ****
--- 1039,1046 ----
  Node: Concept Index48339
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/gcc/doc/extend.texi gcc-10.4.0/gcc/doc/extend.texi
*** gcc-10.3.0/gcc/doc/extend.texi	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/extend.texi	Tue Jun 28 08:54:28 2022
*************** calls.
*** 3228,3242 ****
  This tells the compiler that a function is @code{malloc}-like, i.e.,
  that the pointer @var{P} returned by the function cannot alias any
  other pointer valid when the function returns, and moreover no
! pointers to valid objects occur in any storage addressed by @var{P}.
  
! Using this attribute can improve optimization.  Compiler predicts
! that a function with the attribute returns non-null in most cases.
! Functions like
! @code{malloc} and @code{calloc} have this property because they return
! a pointer to uninitialized or zeroed-out storage.  However, functions
! like @code{realloc} do not have this property, as they can return a
! pointer to storage containing pointers.
  
  @item no_icf
  @cindex @code{no_icf} function attribute
--- 3228,3245 ----
  This tells the compiler that a function is @code{malloc}-like, i.e.,
  that the pointer @var{P} returned by the function cannot alias any
  other pointer valid when the function returns, and moreover no
! pointers to valid objects occur in any storage addressed by @var{P}. In
! addition, GCC predicts that a function with the attribute returns
! non-null in most cases.
  
! Using the attribute is designed to improve optimization
! by relying on the aliasing property it implies.  Functions like @code{malloc}
! and @code{calloc} have this property because they return a pointer to
! uninitialized or zeroed-out, newly obtained storage.  However, functions
! like @code{realloc} do not have this property, as they may return pointers
! to storage containing pointers to existing objects.  Additionally, since
! all such functions are assumed to return null only infrequently, callers
! can be optimized based on that assumption.
  
  @item no_icf
  @cindex @code{no_icf} function attribute
*************** void __builtin_mma_xxmtacc (__vector_qua
*** 20953,20966 ****
  void __builtin_mma_xxmfacc (__vector_quad *);
  void __builtin_mma_xxsetaccz (__vector_quad *);
  
! void __builtin_mma_assemble_acc (__vector_quad *, vec_t, vec_t, vec_t, vec_t);
  void __builtin_mma_disassemble_acc (void *, __vector_quad *);
  
! void __builtin_vsx_assemble_pair (__vector_pair *, vec_t, vec_t);
  void __builtin_vsx_disassemble_pair (void *, __vector_pair *);
  
  vec_t __builtin_vsx_xvcvspbf16 (vec_t);
  vec_t __builtin_vsx_xvcvbf16spn (vec_t);
  @end smallexample
  
  @node RISC-V Built-in Functions
--- 20956,20972 ----
  void __builtin_mma_xxmfacc (__vector_quad *);
  void __builtin_mma_xxsetaccz (__vector_quad *);
  
! void __builtin_mma_build_acc (__vector_quad *, vec_t, vec_t, vec_t, vec_t);
  void __builtin_mma_disassemble_acc (void *, __vector_quad *);
  
! void __builtin_vsx_build_pair (__vector_pair *, vec_t, vec_t);
  void __builtin_vsx_disassemble_pair (void *, __vector_pair *);
  
  vec_t __builtin_vsx_xvcvspbf16 (vec_t);
  vec_t __builtin_vsx_xvcvbf16spn (vec_t);
+ 
+ __vector_pair __builtin_vsx_lxvp (size_t, __vector_pair *);
+ void __builtin_vsx_stxvp (__vector_pair, size_t, __vector_pair *);
  @end smallexample
  
  @node RISC-V Built-in Functions
diff -Nrcpad gcc-10.3.0/gcc/doc/fsf-funding.7 gcc-10.4.0/gcc/doc/fsf-funding.7
*** gcc-10.3.0/gcc/doc/fsf-funding.7	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/fsf-funding.7	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "FSF-FUNDING 7"
! .TH FSF-FUNDING 7 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** proper thing to do\*(R" when distributin
*** 181,187 ****
  assure a steady flow of resources into making more free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7).
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1994 Free Software Foundation, Inc.
--- 185,191 ----
  assure a steady flow of resources into making more free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7).
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1994 Free Software Foundation, Inc.
diff -Nrcpad gcc-10.3.0/gcc/doc/g++.1 gcc-10.4.0/gcc/doc/g++.1
*** gcc-10.3.0/gcc/doc/g++.1	Thu Apr  8 12:06:42 2021
--- gcc-10.4.0/gcc/doc/g++.1	Tue Jun 28 09:09:20 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** in the following sections.
*** 775,780 ****
--- 779,785 ----
  \&\-mverbose\-cost\-dump 
  \&\-mpure\-code 
  \&\-mcmse 
+ \&\-mfix\-cmse\-cve\-2021\-35465 
  \&\-mfdpic\fR
  .Sp
  \&\fI\s-1AVR\s0 Options\fR
*************** This is useful if you need to make sure
*** 3669,3676 ****
  be compiled with older versions of \s-1GCC.\s0
  .IP "\fB\-freplace\-objc\-classes\fR" 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fB\f(BIld\fB\|(1)\fR not to statically link in
! the resulting object file, and allow \fB\f(BIdyld\fB\|(1)\fR to load it in at
  run time instead.  This is used in conjunction with the Fix-and-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
--- 3674,3681 ----
  be compiled with older versions of \s-1GCC.\s0
  .IP "\fB\-freplace\-objc\-classes\fR" 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fB\fBld\fB\|(1)\fR not to statically link in
! the resulting object file, and allow \fB\fBdyld\fB\|(1)\fR to load it in at
  run time instead.  This is used in conjunction with the Fix-and-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
*************** name is still supported, but the newer n
*** 4657,4663 ****
  \&\-Wredundant\-move\fR (only for \*(C+)  
  \&\fB\-Wtype\-limits  
  \&\-Wuninitialized  
! \&\-Wshift\-negative\-value\fR (in \*(C+03 and in C99 and newer)  
  \&\fB\-Wunused\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR) 
  \&\fB\-Wunused\-but\-set\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR)
  .Sp
--- 4662,4668 ----
  \&\-Wredundant\-move\fR (only for \*(C+)  
  \&\fB\-Wtype\-limits  
  \&\-Wuninitialized  
! \&\-Wshift\-negative\-value\fR (in \*(C+11 to \*(C+17 and in C99 and newer)  
  \&\fB\-Wunused\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR) 
  \&\fB\-Wunused\-but\-set\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR)
  .Sp
*************** of the type.  This warning is enabled by
*** 5550,5556 ****
  .IP "\fB\-Wshift\-negative\-value\fR" 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 and \*(C+11 modes (and newer).
  .IP "\fB\-Wno\-shift\-overflow\fR" 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
--- 5555,5561 ----
  .IP "\fB\-Wshift\-negative\-value\fR" 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 (and newer) and \*(C+11 to \*(C+17 modes.
  .IP "\fB\-Wno\-shift\-overflow\fR" 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
*************** example of how this can happen:
*** 5821,5827 ****
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
  always initialized, but \s-1GCC\s0 doesn't know this. To suppress the
! warning, you need to provide a default case with \fIassert\fR\|(0) or
  similar code.
  .Sp
  This option also warns when a non-volatile automatic variable might be
--- 5826,5832 ----
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
  always initialized, but \s-1GCC\s0 doesn't know this. To suppress the
! warning, you need to provide a default case with \fBassert\fR\|(0) or
  similar code.
  .Sp
  This option also warns when a non-volatile automatic variable might be
*************** The option cannot be combined with \fB\-
*** 12639,12645 ****
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  Current suboptions are:
  .RS 4
  .IP "\fB\-fsanitize=shift\fR" 4
  .IX Item "-fsanitize=shift"
--- 12644,12651 ----
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See <\fBhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html\fR> for more details.   The run-time behavior can be influenced using the
! \&\fB\s-1UBSAN_OPTIONS\s0\fR environment variable.  Current suboptions are:
  .RS 4
  .IP "\fB\-fsanitize=shift\fR" 4
  .IX Item "-fsanitize=shift"
*************** You can also use the \f(CW\*(C`nocf_chec
*** 12883,12889 ****
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (\s-1CET\s0).
  .IP "\fB\-fstack\-protector\fR" 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
--- 12889,12896 ----
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (\s-1CET\s0) which works for
! i686 processor or newer.
  .IP "\fB\-fstack\-protector\fR" 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
*************** performance of the code.  Permissible va
*** 16316,16323 ****
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
  \&\fBcortex\-a76\fR, \fBcortex\-a76ae\fR, \fBcortex\-a77\fR,
  \&\fBcortex\-a65\fR, \fBcortex\-a65ae\fR, \fBcortex\-a34\fR,
! \&\fBares\fR, \fBexynos\-m1\fR, \fBemag\fR, \fBfalkor\fR, \fBneoverse\-e1\fR,
! \&\fBneoverse\-n1\fR, \fBneoverse\-n2\fR, \fBneoverse\-v1\fR, \fBqdf24xx\fR,
  \&\fBsaphira\fR, \fBphecda\fR, \fBxgene1\fR, \fBvulcan\fR, \fBocteontx\fR,
  \&\fBocteontx81\fR,  \fBocteontx83\fR,
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
--- 16323,16331 ----
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
  \&\fBcortex\-a76\fR, \fBcortex\-a76ae\fR, \fBcortex\-a77\fR,
  \&\fBcortex\-a65\fR, \fBcortex\-a65ae\fR, \fBcortex\-a34\fR,
! \&\fBares\fR, \fBexynos\-m1\fR, \fBemag\fR, \fBfalkor\fR,
! \&\fBneoverse\-e1\fR, \fBneoverse\-n1\fR, \fBneoverse\-n2\fR,
! \&\fBneoverse\-v1\fR, \fBneoverse\-512tvb\fR, \fBqdf24xx\fR,
  \&\fBsaphira\fR, \fBphecda\fR, \fBxgene1\fR, \fBvulcan\fR, \fBocteontx\fR,
  \&\fBocteontx81\fR,  \fBocteontx83\fR,
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
*************** The values \fBcortex\-a57.cortex\-a53\fR
*** 16337,16342 ****
--- 16345,16359 ----
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR specify that \s-1GCC\s0
  should tune for a big.LITTLE system.
  .Sp
+ The value \fBneoverse\-512tvb\fR specifies that \s-1GCC\s0 should tune
+ for Neoverse cores that (a) implement \s-1SVE\s0 and (b) have a total vector
+ bandwidth of 512 bits per cycle.  In other words, the option tells \s-1GCC\s0 to
+ tune for Neoverse cores that can execute 4 128\-bit Advanced \s-1SIMD\s0 arithmetic
+ instructions a cycle and that can execute an equivalent number of \s-1SVE\s0
+ arithmetic instructions per cycle (2 for 256\-bit \s-1SVE, 4\s0 for 128\-bit \s-1SVE\s0).
+ This is more general than tuning for a specific core like Neoverse V1
+ but is more specific than the default tuning described below.
+ .Sp
  Additionally on native AArch64 GNU/Linux systems the value
  \&\fBnative\fR tunes performance to the host system.  This option has no effect
  if the compiler is unable to recognize the processor of the host system.
*************** the target processor for which to tune f
*** 16364,16369 ****
--- 16381,16396 ----
  by \fB\-mtune\fR).  Where this option is used in conjunction
  with \fB\-march\fR or \fB\-mtune\fR, those options take precedence
  over the appropriate part of this option.
+ .Sp
+ \&\fB\-mcpu=neoverse\-512tvb\fR is special in that it does not refer
+ to a specific core, but instead refers to all Neoverse cores that
+ (a) implement \s-1SVE\s0 and (b) have a total vector bandwidth of 512 bits
+ a cycle.  Unless overridden by \fB\-march\fR,
+ \&\fB\-mcpu=neoverse\-512tvb\fR generates code that can run on a
+ Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
+ these properties.  Unless overridden by \fB\-mtune\fR,
+ \&\fB\-mcpu=neoverse\-512tvb\fR tunes code in the same way as for
+ \&\fB\-mtune=neoverse\-512tvb\fR.
  .IP "\fB\-moverride=\fR\fIstring\fR" 4
  .IX Item "-moverride=string"
  Override tuning decisions made by the back-end in response to a
*************** is only available when generating non-pi
*** 18507,18512 ****
--- 18534,18546 ----
  Generate secure code as per the \*(L"ARMv8\-M Security Extensions: Requirements on
  Development Tools Engineering Specification\*(R", which can be found on
  <\fBhttps://developer.arm.com/documentation/ecm0359818/latest/\fR>.
+ .IP "\fB\-mfix\-cmse\-cve\-2021\-35465\fR" 4
+ .IX Item "-mfix-cmse-cve-2021-35465"
+ Mitigate against a potential security issue with the \f(CW\*(C`VLLDM\*(C'\fR instruction
+ in some M\-profile devices when using \s-1CMSE\s0 (\s-1CVE\-2021\-365465\s0).  This option is
+ enabled by default when the option \fB\-mcpu=\fR is used with
+ \&\f(CW\*(C`cortex\-m33\*(C'\fR, \f(CW\*(C`cortex\-m35p\*(C'\fR or \f(CW\*(C`cortex\-m55\*(C'\fR.  The option
+ \&\fB\-mno\-fix\-cmse\-cve\-2021\-35465\fR can be used to disable the mitigation.
  .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
  .PD 0
*************** are provided for backwards compatibility
*** 19912,19918 ****
  .IP "\fB\-all_load\fR" 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fIld\fR\|(1) for more information.
  .IP "\fB\-arch_errors_fatal\fR" 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
--- 19946,19952 ----
  .IP "\fB\-all_load\fR" 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fBld\fR\|(1) for more information.
  .IP "\fB\-arch_errors_fatal\fR" 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
*************** bind all undefined references when the f
*** 19924,19934 ****
  .IP "\fB\-bundle\fR" 4
  .IX Item "-bundle"
  Produce a Mach-o bundle format file.
! See man \fIld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fIld\fR\|(1) for more information.
  .IP "\fB\-dynamiclib\fR" 4
  .IX Item "-dynamiclib"
  When passed this option, \s-1GCC\s0 produces a dynamic library instead of
--- 19958,19968 ----
  .IP "\fB\-bundle\fR" 4
  .IX Item "-bundle"
  Produce a Mach-o bundle format file.
! See man \fBld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fBld\fR\|(1) for more information.
  .IP "\fB\-dynamiclib\fR" 4
  .IX Item "-dynamiclib"
  When passed this option, \s-1GCC\s0 produces a dynamic library instead of
*************** Supported values for \fIcpu_type\fR are
*** 24669,24675 ****
  \&\fBe6500\fR, \fBec603e\fR, \fBG3\fR, \fBG4\fR, \fBG5\fR,
  \&\fBtitan\fR, \fBpower3\fR, \fBpower4\fR, \fBpower5\fR, \fBpower5+\fR,
  \&\fBpower6\fR, \fBpower6x\fR, \fBpower7\fR, \fBpower8\fR,
! \&\fBpower9\fR, \fBfuture\fR, \fBpowerpc\fR, \fBpowerpc64\fR,
  \&\fBpowerpc64le\fR, \fBrs64\fR, and \fBnative\fR.
  .Sp
  \&\fB\-mcpu=powerpc\fR, \fB\-mcpu=powerpc64\fR, and
--- 24703,24709 ----
  \&\fBe6500\fR, \fBec603e\fR, \fBG3\fR, \fBG4\fR, \fBG5\fR,
  \&\fBtitan\fR, \fBpower3\fR, \fBpower4\fR, \fBpower5\fR, \fBpower5+\fR,
  \&\fBpower6\fR, \fBpower6x\fR, \fBpower7\fR, \fBpower8\fR,
! \&\fBpower9\fR, \fBpower10\fR, \fBpowerpc\fR, \fBpowerpc64\fR,
  \&\fBpowerpc64le\fR, \fBrs64\fR, and \fBnative\fR.
  .Sp
  \&\fB\-mcpu=powerpc\fR, \fB\-mcpu=powerpc64\fR, and
*************** Enable/disable the \fI_\|_float128\fR ke
*** 24855,24864 ****
  and use either software emulation for \s-1IEEE\s0 128\-bit floating point or
  hardware instructions.
  .Sp
! The \s-1VSX\s0 instruction set (\fB\-mvsx\fR, \fB\-mcpu=power7\fR,
! \&\fB\-mcpu=power8\fR), or \fB\-mcpu=power9\fR must be enabled to
! use the \s-1IEEE\s0 128\-bit floating point support.  The \s-1IEEE\s0 128\-bit
! floating point support only works on PowerPC Linux systems.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
  systems using the \s-1VSX\s0 instruction set, and disabled on other systems.
--- 24889,24897 ----
  and use either software emulation for \s-1IEEE\s0 128\-bit floating point or
  hardware instructions.
  .Sp
! The \s-1VSX\s0 instruction set (\fB\-mvsx\fR) must be enabled to use the \s-1IEEE\s0
! 128\-bit floating point support.  The \s-1IEEE\s0 128\-bit floating point is only
! supported on Linux.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
  systems using the \s-1VSX\s0 instruction set, and disabled on other systems.
*************** the offset with a symbol reference to a
*** 25695,25704 ****
  .IP "\fB\-mno\-pcrel\fR" 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc-relative addressing when the option
! \&\fB\-mcpu=future\fR is used.  The \fB\-mpcrel\fR option requires
! that the medium code model (\fB\-mcmodel=medium\fR) and prefixed
! addressing (\fB\-mprefixed\fR) options are enabled.
  .IP "\fB\-mprefixed\fR" 4
  .IX Item "-mprefixed"
  .PD 0
--- 25728,25736 ----
  .IP "\fB\-mno\-pcrel\fR" 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc-relative addressing.  The \fB\-mpcrel\fR
! option requires that the medium code model (\fB\-mcmodel=medium\fR)
! and prefixed addressing (\fB\-mprefixed\fR) options are enabled.
  .IP "\fB\-mprefixed\fR" 4
  .IX Item "-mprefixed"
  .PD 0
*************** addressing (\fB\-mprefixed\fR) options a
*** 25706,25720 ****
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
! store instructions when the option \fB\-mcpu=future\fR is used.
  .IP "\fB\-mmma\fR" 4
  .IX Item "-mmma"
  .PD 0
  .IP "\fB\-mno\-mma\fR" 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the \s-1MMA\s0 instructions when the option
! \&\fB\-mcpu=future\fR is used.
  .PP
  \fI\s-1RX\s0 Options\fR
  .IX Subsection "RX Options"
--- 25738,25754 ----
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
! store instructions.  The \fB\-mprefixed\fR option requires that
! the option \fB\-mcpu=power10\fR (or later) is enabled.
  .IP "\fB\-mmma\fR" 4
  .IX Item "-mmma"
  .PD 0
  .IP "\fB\-mno\-mma\fR" 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the \s-1MMA\s0 instructions.  The \fB\-mma\fR
! option requires that the option \fB\-mcpu=power10\fR (or later)
! is enabled.
  .PP
  \fI\s-1RX\s0 Options\fR
  .IX Subsection "RX Options"
*************** so \fB\-mno\-lra\fR needs to be passed t
*** 26798,26807 ****
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
  \&\fBv7\fR, \fBcypress\fR, \fBv8\fR, \fBsupersparc\fR, \fBhypersparc\fR,
! \&\fBleon\fR, \fBleon3\fR, \fBleon3v7\fR, \fBsparclite\fR, \fBf930\fR,
! \&\fBf934\fR, \fBsparclite86x\fR, \fBsparclet\fR, \fBtsc701\fR, \fBv9\fR,
! \&\fBultrasparc\fR, \fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR,
! \&\fBniagara3\fR, \fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
--- 26832,26842 ----
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
  \&\fBv7\fR, \fBcypress\fR, \fBv8\fR, \fBsupersparc\fR, \fBhypersparc\fR,
! \&\fBleon\fR, \fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBsparclite\fR,
! \&\fBf930\fR, \fBf934\fR, \fBsparclite86x\fR, \fBsparclet\fR, \fBtsc701\fR,
! \&\fBv9\fR, \fBultrasparc\fR, \fBultrasparc3\fR, \fBniagara\fR,
! \&\fBniagara2\fR, \fBniagara3\fR, \fBniagara4\fR, \fBniagara7\fR and
! \&\fBm8\fR.
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
*************** implementations.
*** 26820,26826 ****
  cypress, leon3v7
  .IP "v8" 4
  .IX Item "v8"
! supersparc, hypersparc, leon, leon3
  .IP "sparclite" 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
--- 26855,26861 ----
  cypress, leon3v7
  .IP "v8" 4
  .IX Item "v8"
! supersparc, hypersparc, leon, leon3, leon5
  .IP "sparclite" 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
*************** The same values for \fB\-mcpu=\fR\fIcpu_
*** 26888,26894 ****
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
  that select a particular \s-1CPU\s0 implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
! \&\fBleon3\fR, \fBleon3v7\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
--- 26923,26929 ----
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
  that select a particular \s-1CPU\s0 implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
! \&\fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
*************** to subtle defects.  Supplying them in ca
*** 29581,29588 ****
  is innocuous.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
  .SH "AUTHOR"
--- 29616,29623 ----
  is innocuous.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1), \fBdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
  .SH "AUTHOR"
*************** any later version published by the Free
*** 29600,29606 ****
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 29635,29641 ----
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/gcc.1 gcc-10.4.0/gcc/doc/gcc.1
*** gcc-10.3.0/gcc/doc/gcc.1	Thu Apr  8 12:06:42 2021
--- gcc-10.4.0/gcc/doc/gcc.1	Tue Jun 28 09:09:20 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GCC 1"
! .TH GCC 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** in the following sections.
*** 775,780 ****
--- 779,785 ----
  \&\-mverbose\-cost\-dump 
  \&\-mpure\-code 
  \&\-mcmse 
+ \&\-mfix\-cmse\-cve\-2021\-35465 
  \&\-mfdpic\fR
  .Sp
  \&\fI\s-1AVR\s0 Options\fR
*************** This is useful if you need to make sure
*** 3669,3676 ****
  be compiled with older versions of \s-1GCC.\s0
  .IP "\fB\-freplace\-objc\-classes\fR" 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fB\f(BIld\fB\|(1)\fR not to statically link in
! the resulting object file, and allow \fB\f(BIdyld\fB\|(1)\fR to load it in at
  run time instead.  This is used in conjunction with the Fix-and-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
--- 3674,3681 ----
  be compiled with older versions of \s-1GCC.\s0
  .IP "\fB\-freplace\-objc\-classes\fR" 4
  .IX Item "-freplace-objc-classes"
! Emit a special marker instructing \fB\fBld\fB\|(1)\fR not to statically link in
! the resulting object file, and allow \fB\fBdyld\fB\|(1)\fR to load it in at
  run time instead.  This is used in conjunction with the Fix-and-Continue
  debugging mode, where the object file in question may be recompiled and
  dynamically reloaded in the course of program execution, without the need
*************** name is still supported, but the newer n
*** 4657,4663 ****
  \&\-Wredundant\-move\fR (only for \*(C+)  
  \&\fB\-Wtype\-limits  
  \&\-Wuninitialized  
! \&\-Wshift\-negative\-value\fR (in \*(C+03 and in C99 and newer)  
  \&\fB\-Wunused\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR) 
  \&\fB\-Wunused\-but\-set\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR)
  .Sp
--- 4662,4668 ----
  \&\-Wredundant\-move\fR (only for \*(C+)  
  \&\fB\-Wtype\-limits  
  \&\-Wuninitialized  
! \&\-Wshift\-negative\-value\fR (in \*(C+11 to \*(C+17 and in C99 and newer)  
  \&\fB\-Wunused\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR) 
  \&\fB\-Wunused\-but\-set\-parameter\fR (only with\fB \fR\fB\-Wunused\fR\fB \fRor\fB \fR\fB\-Wall\fR)
  .Sp
*************** of the type.  This warning is enabled by
*** 5550,5556 ****
  .IP "\fB\-Wshift\-negative\-value\fR" 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 and \*(C+11 modes (and newer).
  .IP "\fB\-Wno\-shift\-overflow\fR" 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
--- 5555,5561 ----
  .IP "\fB\-Wshift\-negative\-value\fR" 4
  .IX Item "-Wshift-negative-value"
  Warn if left shifting a negative value.  This warning is enabled by
! \&\fB\-Wextra\fR in C99 (and newer) and \*(C+11 to \*(C+17 modes.
  .IP "\fB\-Wno\-shift\-overflow\fR" 4
  .IX Item "-Wno-shift-overflow"
  .PD 0
*************** example of how this can happen:
*** 5821,5827 ****
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
  always initialized, but \s-1GCC\s0 doesn't know this. To suppress the
! warning, you need to provide a default case with \fIassert\fR\|(0) or
  similar code.
  .Sp
  This option also warns when a non-volatile automatic variable might be
--- 5826,5832 ----
  .Sp
  If the value of \f(CW\*(C`y\*(C'\fR is always 1, 2 or 3, then \f(CW\*(C`x\*(C'\fR is
  always initialized, but \s-1GCC\s0 doesn't know this. To suppress the
! warning, you need to provide a default case with \fBassert\fR\|(0) or
  similar code.
  .Sp
  This option also warns when a non-volatile automatic variable might be
*************** The option cannot be combined with \fB\-
*** 12639,12645 ****
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  Current suboptions are:
  .RS 4
  .IP "\fB\-fsanitize=shift\fR" 4
  .IX Item "-fsanitize=shift"
--- 12644,12651 ----
  .IX Item "-fsanitize=undefined"
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See <\fBhttps://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html\fR> for more details.   The run-time behavior can be influenced using the
! \&\fB\s-1UBSAN_OPTIONS\s0\fR environment variable.  Current suboptions are:
  .RS 4
  .IP "\fB\-fsanitize=shift\fR" 4
  .IX Item "-fsanitize=shift"
*************** You can also use the \f(CW\*(C`nocf_chec
*** 12883,12889 ****
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (\s-1CET\s0).
  .IP "\fB\-fstack\-protector\fR" 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
--- 12889,12896 ----
  which functions and calls should be skipped from instrumentation.
  .Sp
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (\s-1CET\s0) which works for
! i686 processor or newer.
  .IP "\fB\-fstack\-protector\fR" 4
  .IX Item "-fstack-protector"
  Emit extra code to check for buffer overflows, such as stack smashing
*************** performance of the code.  Permissible va
*** 16316,16323 ****
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
  \&\fBcortex\-a76\fR, \fBcortex\-a76ae\fR, \fBcortex\-a77\fR,
  \&\fBcortex\-a65\fR, \fBcortex\-a65ae\fR, \fBcortex\-a34\fR,
! \&\fBares\fR, \fBexynos\-m1\fR, \fBemag\fR, \fBfalkor\fR, \fBneoverse\-e1\fR,
! \&\fBneoverse\-n1\fR, \fBneoverse\-n2\fR, \fBneoverse\-v1\fR, \fBqdf24xx\fR,
  \&\fBsaphira\fR, \fBphecda\fR, \fBxgene1\fR, \fBvulcan\fR, \fBocteontx\fR,
  \&\fBocteontx81\fR,  \fBocteontx83\fR,
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
--- 16323,16331 ----
  \&\fBcortex\-a57\fR, \fBcortex\-a72\fR, \fBcortex\-a73\fR, \fBcortex\-a75\fR,
  \&\fBcortex\-a76\fR, \fBcortex\-a76ae\fR, \fBcortex\-a77\fR,
  \&\fBcortex\-a65\fR, \fBcortex\-a65ae\fR, \fBcortex\-a34\fR,
! \&\fBares\fR, \fBexynos\-m1\fR, \fBemag\fR, \fBfalkor\fR,
! \&\fBneoverse\-e1\fR, \fBneoverse\-n1\fR, \fBneoverse\-n2\fR,
! \&\fBneoverse\-v1\fR, \fBneoverse\-512tvb\fR, \fBqdf24xx\fR,
  \&\fBsaphira\fR, \fBphecda\fR, \fBxgene1\fR, \fBvulcan\fR, \fBocteontx\fR,
  \&\fBocteontx81\fR,  \fBocteontx83\fR,
  \&\fBocteontx2\fR, \fBocteontx2t98\fR, \fBocteontx2t96\fR
*************** The values \fBcortex\-a57.cortex\-a53\fR
*** 16337,16342 ****
--- 16345,16359 ----
  \&\fBcortex\-a75.cortex\-a55\fR, \fBcortex\-a76.cortex\-a55\fR specify that \s-1GCC\s0
  should tune for a big.LITTLE system.
  .Sp
+ The value \fBneoverse\-512tvb\fR specifies that \s-1GCC\s0 should tune
+ for Neoverse cores that (a) implement \s-1SVE\s0 and (b) have a total vector
+ bandwidth of 512 bits per cycle.  In other words, the option tells \s-1GCC\s0 to
+ tune for Neoverse cores that can execute 4 128\-bit Advanced \s-1SIMD\s0 arithmetic
+ instructions a cycle and that can execute an equivalent number of \s-1SVE\s0
+ arithmetic instructions per cycle (2 for 256\-bit \s-1SVE, 4\s0 for 128\-bit \s-1SVE\s0).
+ This is more general than tuning for a specific core like Neoverse V1
+ but is more specific than the default tuning described below.
+ .Sp
  Additionally on native AArch64 GNU/Linux systems the value
  \&\fBnative\fR tunes performance to the host system.  This option has no effect
  if the compiler is unable to recognize the processor of the host system.
*************** the target processor for which to tune f
*** 16364,16369 ****
--- 16381,16396 ----
  by \fB\-mtune\fR).  Where this option is used in conjunction
  with \fB\-march\fR or \fB\-mtune\fR, those options take precedence
  over the appropriate part of this option.
+ .Sp
+ \&\fB\-mcpu=neoverse\-512tvb\fR is special in that it does not refer
+ to a specific core, but instead refers to all Neoverse cores that
+ (a) implement \s-1SVE\s0 and (b) have a total vector bandwidth of 512 bits
+ a cycle.  Unless overridden by \fB\-march\fR,
+ \&\fB\-mcpu=neoverse\-512tvb\fR generates code that can run on a
+ Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
+ these properties.  Unless overridden by \fB\-mtune\fR,
+ \&\fB\-mcpu=neoverse\-512tvb\fR tunes code in the same way as for
+ \&\fB\-mtune=neoverse\-512tvb\fR.
  .IP "\fB\-moverride=\fR\fIstring\fR" 4
  .IX Item "-moverride=string"
  Override tuning decisions made by the back-end in response to a
*************** is only available when generating non-pi
*** 18507,18512 ****
--- 18534,18546 ----
  Generate secure code as per the \*(L"ARMv8\-M Security Extensions: Requirements on
  Development Tools Engineering Specification\*(R", which can be found on
  <\fBhttps://developer.arm.com/documentation/ecm0359818/latest/\fR>.
+ .IP "\fB\-mfix\-cmse\-cve\-2021\-35465\fR" 4
+ .IX Item "-mfix-cmse-cve-2021-35465"
+ Mitigate against a potential security issue with the \f(CW\*(C`VLLDM\*(C'\fR instruction
+ in some M\-profile devices when using \s-1CMSE\s0 (\s-1CVE\-2021\-365465\s0).  This option is
+ enabled by default when the option \fB\-mcpu=\fR is used with
+ \&\f(CW\*(C`cortex\-m33\*(C'\fR, \f(CW\*(C`cortex\-m35p\*(C'\fR or \f(CW\*(C`cortex\-m55\*(C'\fR.  The option
+ \&\fB\-mno\-fix\-cmse\-cve\-2021\-35465\fR can be used to disable the mitigation.
  .IP "\fB\-mfdpic\fR" 4
  .IX Item "-mfdpic"
  .PD 0
*************** are provided for backwards compatibility
*** 19912,19918 ****
  .IP "\fB\-all_load\fR" 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fIld\fR\|(1) for more information.
  .IP "\fB\-arch_errors_fatal\fR" 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
--- 19946,19952 ----
  .IP "\fB\-all_load\fR" 4
  .IX Item "-all_load"
  Loads all members of static archive libraries.
! See man \fBld\fR\|(1) for more information.
  .IP "\fB\-arch_errors_fatal\fR" 4
  .IX Item "-arch_errors_fatal"
  Cause the errors having to do with files that have the wrong architecture
*************** bind all undefined references when the f
*** 19924,19934 ****
  .IP "\fB\-bundle\fR" 4
  .IX Item "-bundle"
  Produce a Mach-o bundle format file.
! See man \fIld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fIld\fR\|(1) for more information.
  .IP "\fB\-dynamiclib\fR" 4
  .IX Item "-dynamiclib"
  When passed this option, \s-1GCC\s0 produces a dynamic library instead of
--- 19958,19968 ----
  .IP "\fB\-bundle\fR" 4
  .IX Item "-bundle"
  Produce a Mach-o bundle format file.
! See man \fBld\fR\|(1) for more information.
  .IP "\fB\-bundle_loader\fR \fIexecutable\fR" 4
  .IX Item "-bundle_loader executable"
  This option specifies the \fIexecutable\fR that will load the build
! output file being linked.  See man \fBld\fR\|(1) for more information.
  .IP "\fB\-dynamiclib\fR" 4
  .IX Item "-dynamiclib"
  When passed this option, \s-1GCC\s0 produces a dynamic library instead of
*************** Supported values for \fIcpu_type\fR are
*** 24669,24675 ****
  \&\fBe6500\fR, \fBec603e\fR, \fBG3\fR, \fBG4\fR, \fBG5\fR,
  \&\fBtitan\fR, \fBpower3\fR, \fBpower4\fR, \fBpower5\fR, \fBpower5+\fR,
  \&\fBpower6\fR, \fBpower6x\fR, \fBpower7\fR, \fBpower8\fR,
! \&\fBpower9\fR, \fBfuture\fR, \fBpowerpc\fR, \fBpowerpc64\fR,
  \&\fBpowerpc64le\fR, \fBrs64\fR, and \fBnative\fR.
  .Sp
  \&\fB\-mcpu=powerpc\fR, \fB\-mcpu=powerpc64\fR, and
--- 24703,24709 ----
  \&\fBe6500\fR, \fBec603e\fR, \fBG3\fR, \fBG4\fR, \fBG5\fR,
  \&\fBtitan\fR, \fBpower3\fR, \fBpower4\fR, \fBpower5\fR, \fBpower5+\fR,
  \&\fBpower6\fR, \fBpower6x\fR, \fBpower7\fR, \fBpower8\fR,
! \&\fBpower9\fR, \fBpower10\fR, \fBpowerpc\fR, \fBpowerpc64\fR,
  \&\fBpowerpc64le\fR, \fBrs64\fR, and \fBnative\fR.
  .Sp
  \&\fB\-mcpu=powerpc\fR, \fB\-mcpu=powerpc64\fR, and
*************** Enable/disable the \fI_\|_float128\fR ke
*** 24855,24864 ****
  and use either software emulation for \s-1IEEE\s0 128\-bit floating point or
  hardware instructions.
  .Sp
! The \s-1VSX\s0 instruction set (\fB\-mvsx\fR, \fB\-mcpu=power7\fR,
! \&\fB\-mcpu=power8\fR), or \fB\-mcpu=power9\fR must be enabled to
! use the \s-1IEEE\s0 128\-bit floating point support.  The \s-1IEEE\s0 128\-bit
! floating point support only works on PowerPC Linux systems.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
  systems using the \s-1VSX\s0 instruction set, and disabled on other systems.
--- 24889,24897 ----
  and use either software emulation for \s-1IEEE\s0 128\-bit floating point or
  hardware instructions.
  .Sp
! The \s-1VSX\s0 instruction set (\fB\-mvsx\fR) must be enabled to use the \s-1IEEE\s0
! 128\-bit floating point support.  The \s-1IEEE\s0 128\-bit floating point is only
! supported on Linux.
  .Sp
  The default for \fB\-mfloat128\fR is enabled on PowerPC Linux
  systems using the \s-1VSX\s0 instruction set, and disabled on other systems.
*************** the offset with a symbol reference to a
*** 25695,25704 ****
  .IP "\fB\-mno\-pcrel\fR" 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc-relative addressing when the option
! \&\fB\-mcpu=future\fR is used.  The \fB\-mpcrel\fR option requires
! that the medium code model (\fB\-mcmodel=medium\fR) and prefixed
! addressing (\fB\-mprefixed\fR) options are enabled.
  .IP "\fB\-mprefixed\fR" 4
  .IX Item "-mprefixed"
  .PD 0
--- 25728,25736 ----
  .IP "\fB\-mno\-pcrel\fR" 4
  .IX Item "-mno-pcrel"
  .PD
! Generate (do not generate) pc-relative addressing.  The \fB\-mpcrel\fR
! option requires that the medium code model (\fB\-mcmodel=medium\fR)
! and prefixed addressing (\fB\-mprefixed\fR) options are enabled.
  .IP "\fB\-mprefixed\fR" 4
  .IX Item "-mprefixed"
  .PD 0
*************** addressing (\fB\-mprefixed\fR) options a
*** 25706,25720 ****
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
! store instructions when the option \fB\-mcpu=future\fR is used.
  .IP "\fB\-mmma\fR" 4
  .IX Item "-mmma"
  .PD 0
  .IP "\fB\-mno\-mma\fR" 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the \s-1MMA\s0 instructions when the option
! \&\fB\-mcpu=future\fR is used.
  .PP
  \fI\s-1RX\s0 Options\fR
  .IX Subsection "RX Options"
--- 25738,25754 ----
  .IX Item "-mno-prefixed"
  .PD
  Generate (do not generate) addressing modes using prefixed load and
! store instructions.  The \fB\-mprefixed\fR option requires that
! the option \fB\-mcpu=power10\fR (or later) is enabled.
  .IP "\fB\-mmma\fR" 4
  .IX Item "-mmma"
  .PD 0
  .IP "\fB\-mno\-mma\fR" 4
  .IX Item "-mno-mma"
  .PD
! Generate (do not generate) the \s-1MMA\s0 instructions.  The \fB\-mma\fR
! option requires that the option \fB\-mcpu=power10\fR (or later)
! is enabled.
  .PP
  \fI\s-1RX\s0 Options\fR
  .IX Subsection "RX Options"
*************** so \fB\-mno\-lra\fR needs to be passed t
*** 26798,26807 ****
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
  \&\fBv7\fR, \fBcypress\fR, \fBv8\fR, \fBsupersparc\fR, \fBhypersparc\fR,
! \&\fBleon\fR, \fBleon3\fR, \fBleon3v7\fR, \fBsparclite\fR, \fBf930\fR,
! \&\fBf934\fR, \fBsparclite86x\fR, \fBsparclet\fR, \fBtsc701\fR, \fBv9\fR,
! \&\fBultrasparc\fR, \fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR,
! \&\fBniagara3\fR, \fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
--- 26832,26842 ----
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type \fIcpu_type\fR.  Supported values for \fIcpu_type\fR are
  \&\fBv7\fR, \fBcypress\fR, \fBv8\fR, \fBsupersparc\fR, \fBhypersparc\fR,
! \&\fBleon\fR, \fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBsparclite\fR,
! \&\fBf930\fR, \fBf934\fR, \fBsparclite86x\fR, \fBsparclet\fR, \fBtsc701\fR,
! \&\fBv9\fR, \fBultrasparc\fR, \fBultrasparc3\fR, \fBniagara\fR,
! \&\fBniagara2\fR, \fBniagara3\fR, \fBniagara4\fR, \fBniagara7\fR and
! \&\fBm8\fR.
  .Sp
  Native Solaris and GNU/Linux toolchains also support the value \fBnative\fR,
  which selects the best architecture option for the host processor.
*************** implementations.
*** 26820,26826 ****
  cypress, leon3v7
  .IP "v8" 4
  .IX Item "v8"
! supersparc, hypersparc, leon, leon3
  .IP "sparclite" 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
--- 26855,26861 ----
  cypress, leon3v7
  .IP "v8" 4
  .IX Item "v8"
! supersparc, hypersparc, leon, leon3, leon5
  .IP "sparclite" 4
  .IX Item "sparclite"
  f930, f934, sparclite86x
*************** The same values for \fB\-mcpu=\fR\fIcpu_
*** 26888,26894 ****
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
  that select a particular \s-1CPU\s0 implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
! \&\fBleon3\fR, \fBleon3v7\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
--- 26923,26929 ----
  \&\fB\-mtune=\fR\fIcpu_type\fR, but the only useful values are those
  that select a particular \s-1CPU\s0 implementation.  Those are
  \&\fBcypress\fR, \fBsupersparc\fR, \fBhypersparc\fR, \fBleon\fR,
! \&\fBleon3\fR, \fBleon3v7\fR, \fBleon5\fR, \fBf930\fR, \fBf934\fR,
  \&\fBsparclite86x\fR, \fBtsc701\fR, \fBultrasparc\fR,
  \&\fBultrasparc3\fR, \fBniagara\fR, \fBniagara2\fR, \fBniagara3\fR,
  \&\fBniagara4\fR, \fBniagara7\fR and \fBm8\fR.  With native Solaris
*************** to subtle defects.  Supplying them in ca
*** 29581,29588 ****
  is innocuous.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
  .SH "AUTHOR"
--- 29616,29623 ----
  is innocuous.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1), \fBdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
  .SH "AUTHOR"
*************** any later version published by the Free
*** 29600,29606 ****
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 29635,29641 ----
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/gcc.info gcc-10.4.0/gcc/doc/gcc.info
*** gcc-10.3.0/gcc/doc/gcc.info	Thu Apr  8 12:06:45 2021
--- gcc-10.4.0/gcc/doc/gcc.info	Tue Jun 28 09:09:28 2022
***************
*** 1,4 ****
! This is gcc.info, produced by makeinfo version 6.5 from gcc.texi.
  
  Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
--- 1,4 ----
! This is gcc.info, produced by makeinfo version 6.8 from gcc.texi.
  
  Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
*************** Copies published by the Free Software Fo
*** 53,66 ****
  development.
  
  
! File: gcc.info,  Node: Top,  Next: G++ and GCC
  
  Introduction
  ************
  
  This manual documents how to use the GNU compilers, as well as their
  features and incompatibilities, and how to report bugs.  It corresponds
! to the compilers (GCC) version 10.3.0.  The internals of the GNU
  compilers, including how to port them to new targets and some
  information about how to write front ends for new languages, are
  documented in a separate manual.  *Note Introduction: (gccint)Top.
--- 53,66 ----
  development.
  
  
! File: gcc.info,  Node: Top,  Next: G++ and GCC,  Up: (dir)
  
  Introduction
  ************
  
  This manual documents how to use the GNU compilers, as well as their
  features and incompatibilities, and how to report bugs.  It corresponds
! to the compilers (GCC) version 10.4.0.  The internals of the GNU
  compilers, including how to port them to new targets and some
  information about how to write front ends for new languages, are
  documented in a separate manual.  *Note Introduction: (gccint)Top.
*************** _Machine-Dependent Options_
*** 1099,1104 ****
--- 1099,1105 ----
            -mverbose-cost-dump
            -mpure-code
            -mcmse
+           -mfix-cmse-cve-2021-35465
            -mfdpic
  
       _AVR Options_
*************** unless optimization is enabled.
*** 4750,4756 ****
            -Wredundant-move (only for C++)
            -Wtype-limits
            -Wuninitialized
!           -Wshift-negative-value (in C++03 and in C99 and newer)
            -Wunused-parameter (only with -Wunused or -Wall)
            -Wunused-but-set-parameter (only with -Wunused or -Wall)
  
--- 4751,4757 ----
            -Wredundant-move (only for C++)
            -Wtype-limits
            -Wuninitialized
!           -Wshift-negative-value (in C++11 to C++17 and in C99 and newer)
            -Wunused-parameter (only with -Wunused or -Wall)
            -Wunused-but-set-parameter (only with -Wunused or -Wall)
  
*************** unless optimization is enabled.
*** 5554,5560 ****
  
  '-Wshift-negative-value'
       Warn if left shifting a negative value.  This warning is enabled by
!      '-Wextra' in C99 and C++11 modes (and newer).
  
  '-Wno-shift-overflow'
  '-Wshift-overflow=N'
--- 5555,5561 ----
  
  '-Wshift-negative-value'
       Warn if left shifting a negative value.  This warning is enabled by
!      '-Wextra' in C99 (and newer) and C++11 to C++17 modes.
  
  '-Wno-shift-overflow'
  '-Wshift-overflow=N'
*************** program analysis purposes.
*** 12510,12516 ****
  '-fsanitize=undefined'
       Enable UndefinedBehaviorSanitizer, a fast undefined behavior
       detector.  Various computations are instrumented to detect
!      undefined behavior at runtime.  Current suboptions are:
  
       '-fsanitize=shift'
            This option enables checking that the result of a shift
--- 12511,12520 ----
  '-fsanitize=undefined'
       Enable UndefinedBehaviorSanitizer, a fast undefined behavior
       detector.  Various computations are instrumented to detect
!      undefined behavior at runtime.  See
!      <https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html> for
!      more details.  The run-time behavior can be influenced using the
!      'UBSAN_OPTIONS' environment variable.  Current suboptions are:
  
       '-fsanitize=shift'
            This option enables checking that the result of a shift
*************** program analysis purposes.
*** 12765,12771 ****
       Function Attributes::).
  
       Currently the x86 GNU/Linux target provides an implementation based
!      on Intel Control-flow Enforcement Technology (CET).
  
  '-fstack-protector'
       Emit extra code to check for buffer overflows, such as stack
--- 12769,12776 ----
       Function Attributes::).
  
       Currently the x86 GNU/Linux target provides an implementation based
!      on Intel Control-flow Enforcement Technology (CET) which works for
!      i686 processor or newer.
  
  '-fstack-protector'
       Emit extra code to check for buffer overflows, such as stack
*************** These options are defined for AArch64 im
*** 16041,16052 ****
       'cortex-a76', 'cortex-a76ae', 'cortex-a77', 'cortex-a65',
       'cortex-a65ae', 'cortex-a34', 'ares', 'exynos-m1', 'emag',
       'falkor', 'neoverse-e1', 'neoverse-n1', 'neoverse-n2',
!      'neoverse-v1', 'qdf24xx', 'saphira', 'phecda', 'xgene1', 'vulcan',
!      'octeontx', 'octeontx81', 'octeontx83', 'octeontx2',
!      'octeontx2t98', 'octeontx2t96' 'octeontx2t93', 'octeontx2f95',
!      'octeontx2f95n', 'octeontx2f95mm', 'a64fx', 'thunderx',
!      'thunderxt88', 'thunderxt88p1', 'thunderxt81', 'tsv110',
!      'thunderxt83', 'thunderx2t99', 'thunderx3t110', 'zeus',
       'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
       'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
       'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55' 'native'.
--- 16046,16057 ----
       'cortex-a76', 'cortex-a76ae', 'cortex-a77', 'cortex-a65',
       'cortex-a65ae', 'cortex-a34', 'ares', 'exynos-m1', 'emag',
       'falkor', 'neoverse-e1', 'neoverse-n1', 'neoverse-n2',
!      'neoverse-v1', 'neoverse-512tvb', 'qdf24xx', 'saphira', 'phecda',
!      'xgene1', 'vulcan', 'octeontx', 'octeontx81', 'octeontx83',
!      'octeontx2', 'octeontx2t98', 'octeontx2t96' 'octeontx2t93',
!      'octeontx2f95', 'octeontx2f95n', 'octeontx2f95mm', 'a64fx',
!      'thunderx', 'thunderxt88', 'thunderxt88p1', 'thunderxt81',
!      'tsv110', 'thunderxt83', 'thunderx2t99', 'thunderx3t110', 'zeus',
       'cortex-a57.cortex-a53', 'cortex-a72.cortex-a53',
       'cortex-a73.cortex-a35', 'cortex-a73.cortex-a53',
       'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55' 'native'.
*************** These options are defined for AArch64 im
*** 16056,16061 ****
--- 16061,16076 ----
       'cortex-a75.cortex-a55', 'cortex-a76.cortex-a55' specify that GCC
       should tune for a big.LITTLE system.
  
+      The value 'neoverse-512tvb' specifies that GCC should tune for
+      Neoverse cores that (a) implement SVE and (b) have a total vector
+      bandwidth of 512 bits per cycle.  In other words, the option tells
+      GCC to tune for Neoverse cores that can execute 4 128-bit Advanced
+      SIMD arithmetic instructions a cycle and that can execute an
+      equivalent number of SVE arithmetic instructions per cycle (2 for
+      256-bit SVE, 4 for 128-bit SVE). This is more general than tuning
+      for a specific core like Neoverse V1 but is more specific than the
+      default tuning described below.
+ 
       Additionally on native AArch64 GNU/Linux systems the value 'native'
       tunes performance to the host system.  This option has no effect if
       the compiler is unable to recognize the processor of the host
*************** These options are defined for AArch64 im
*** 16083,16088 ****
--- 16098,16112 ----
       or '-mtune', those options take precedence over the appropriate
       part of this option.
  
+      '-mcpu=neoverse-512tvb' is special in that it does not refer to a
+      specific core, but instead refers to all Neoverse cores that (a)
+      implement SVE and (b) have a total vector bandwidth of 512 bits a
+      cycle.  Unless overridden by '-march', '-mcpu=neoverse-512tvb'
+      generates code that can run on a Neoverse V1 core, since Neoverse
+      V1 is the first Neoverse core with these properties.  Unless
+      overridden by '-mtune', '-mcpu=neoverse-512tvb' tunes code in the
+      same way as for '-mtune=neoverse-512tvb'.
+ 
  '-moverride=STRING'
       Override tuning decisions made by the back-end in response to a
       '-mtune=' switch.  The syntax, semantics, and accepted values for
*************** These '-m' options are defined for the A
*** 18036,18041 ****
--- 18060,18073 ----
       can be found on
       <https://developer.arm.com/documentation/ecm0359818/latest/>.
  
+ '-mfix-cmse-cve-2021-35465'
+      Mitigate against a potential security issue with the 'VLLDM'
+      instruction in some M-profile devices when using CMSE
+      (CVE-2021-365465).  This option is enabled by default when the
+      option '-mcpu=' is used with 'cortex-m33', 'cortex-m35p' or
+      'cortex-m55'.  The option '-mno-fix-cmse-cve-2021-35465' can be
+      used to disable the mitigation.
+ 
  '-mfdpic'
  '-mno-fdpic'
       Select the FDPIC ABI, which uses 64-bit function descriptors to
*************** These options are defined for AVR implem
*** 18089,18094 ****
--- 18121,18127 ----
  
       'avr3'
            "Classic" devices with 16 KiB up to 64 KiB of program memory.
+ 
            MCU = 'at76c711', 'at43usb355'.
  
       'avr31'
*************** These '-m' options are defined for the I
*** 23538,23544 ****
       '823', '860', '970', '8540', 'a2', 'e300c2', 'e300c3', 'e500mc',
       'e500mc64', 'e5500', 'e6500', 'ec603e', 'G3', 'G4', 'G5', 'titan',
       'power3', 'power4', 'power5', 'power5+', 'power6', 'power6x',
!      'power7', 'power8', 'power9', 'future', 'powerpc', 'powerpc64',
       'powerpc64le', 'rs64', and 'native'.
  
       '-mcpu=powerpc', '-mcpu=powerpc64', and '-mcpu=powerpc64le' specify
--- 23571,23577 ----
       '823', '860', '970', '8540', 'a2', 'e300c2', 'e300c3', 'e500mc',
       'e500mc64', 'e5500', 'e6500', 'ec603e', 'G3', 'G4', 'G5', 'titan',
       'power3', 'power4', 'power5', 'power5+', 'power6', 'power6x',
!      'power7', 'power8', 'power9', 'power10', 'powerpc', 'powerpc64',
       'powerpc64le', 'rs64', and 'native'.
  
       '-mcpu=powerpc', '-mcpu=powerpc64', and '-mcpu=powerpc64le' specify
*************** These '-m' options are defined for the I
*** 23686,23695 ****
       point and use either software emulation for IEEE 128-bit floating
       point or hardware instructions.
  
!      The VSX instruction set ('-mvsx', '-mcpu=power7', '-mcpu=power8'),
!      or '-mcpu=power9' must be enabled to use the IEEE 128-bit floating
!      point support.  The IEEE 128-bit floating point support only works
!      on PowerPC Linux systems.
  
       The default for '-mfloat128' is enabled on PowerPC Linux systems
       using the VSX instruction set, and disabled on other systems.
--- 23719,23727 ----
       point and use either software emulation for IEEE 128-bit floating
       point or hardware instructions.
  
!      The VSX instruction set ('-mvsx') must be enabled to use the IEEE
!      128-bit floating point support.  The IEEE 128-bit floating point is
!      only supported on Linux.
  
       The default for '-mfloat128' is enabled on PowerPC Linux systems
       using the VSX instruction set, and disabled on other systems.
*************** These '-m' options are defined for the I
*** 24400,24419 ****
  
  '-mpcrel'
  '-mno-pcrel'
!      Generate (do not generate) pc-relative addressing when the option
!      '-mcpu=future' is used.  The '-mpcrel' option requires that the
!      medium code model ('-mcmodel=medium') and prefixed addressing
!      ('-mprefixed') options are enabled.
  
  '-mprefixed'
  '-mno-prefixed'
       Generate (do not generate) addressing modes using prefixed load and
!      store instructions when the option '-mcpu=future' is used.
  
  '-mmma'
  '-mno-mma'
!      Generate (do not generate) the MMA instructions when the option
!      '-mcpu=future' is used.
  
  
  File: gcc.info,  Node: RX Options,  Next: S/390 and zSeries Options,  Prev: RS/6000 and PowerPC Options,  Up: Submodel Options
--- 24432,24451 ----
  
  '-mpcrel'
  '-mno-pcrel'
!      Generate (do not generate) pc-relative addressing.  The '-mpcrel'
!      option requires that the medium code model ('-mcmodel=medium') and
!      prefixed addressing ('-mprefixed') options are enabled.
  
  '-mprefixed'
  '-mno-prefixed'
       Generate (do not generate) addressing modes using prefixed load and
!      store instructions.  The '-mprefixed' option requires that the
!      option '-mcpu=power10' (or later) is enabled.
  
  '-mmma'
  '-mno-mma'
!      Generate (do not generate) the MMA instructions.  The '-mma' option
!      requires that the option '-mcpu=power10' (or later) is enabled.
  
  
  File: gcc.info,  Node: RX Options,  Next: S/390 and zSeries Options,  Prev: RS/6000 and PowerPC Options,  Up: Submodel Options
*************** These '-m' options are supported on the
*** 25403,25409 ****
       Set the instruction set, register set, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
       CPU_TYPE are 'v7', 'cypress', 'v8', 'supersparc', 'hypersparc',
!      'leon', 'leon3', 'leon3v7', 'sparclite', 'f930', 'f934',
       'sparclite86x', 'sparclet', 'tsc701', 'v9', 'ultrasparc',
       'ultrasparc3', 'niagara', 'niagara2', 'niagara3', 'niagara4',
       'niagara7' and 'm8'.
--- 25435,25441 ----
       Set the instruction set, register set, and instruction scheduling
       parameters for machine type CPU_TYPE.  Supported values for
       CPU_TYPE are 'v7', 'cypress', 'v8', 'supersparc', 'hypersparc',
!      'leon', 'leon3', 'leon3v7', 'leon5', 'sparclite', 'f930', 'f934',
       'sparclite86x', 'sparclet', 'tsc701', 'v9', 'ultrasparc',
       'ultrasparc3', 'niagara', 'niagara2', 'niagara3', 'niagara4',
       'niagara7' and 'm8'.
*************** These '-m' options are supported on the
*** 25424,25430 ****
            cypress, leon3v7
  
       v8
!           supersparc, hypersparc, leon, leon3
  
       sparclite
            f930, f934, sparclite86x
--- 25456,25462 ----
            cypress, leon3v7
  
       v8
!           supersparc, hypersparc, leon, leon3, leon5
  
       sparclite
            f930, f934, sparclite86x
*************** These '-m' options are supported on the
*** 25491,25501 ****
       The same values for '-mcpu=CPU_TYPE' can be used for
       '-mtune=CPU_TYPE', but the only useful values are those that select
       a particular CPU implementation.  Those are 'cypress',
!      'supersparc', 'hypersparc', 'leon', 'leon3', 'leon3v7', 'f930',
!      'f934', 'sparclite86x', 'tsc701', 'ultrasparc', 'ultrasparc3',
!      'niagara', 'niagara2', 'niagara3', 'niagara4', 'niagara7' and 'm8'.
!      With native Solaris and GNU/Linux toolchains, 'native' can also be
!      used.
  
  '-mv8plus'
  '-mno-v8plus'
--- 25523,25533 ----
       The same values for '-mcpu=CPU_TYPE' can be used for
       '-mtune=CPU_TYPE', but the only useful values are those that select
       a particular CPU implementation.  Those are 'cypress',
!      'supersparc', 'hypersparc', 'leon', 'leon3', 'leon3v7', 'leon5',
!      'f930', 'f934', 'sparclite86x', 'tsc701', 'ultrasparc',
!      'ultrasparc3', 'niagara', 'niagara2', 'niagara3', 'niagara4',
!      'niagara7' and 'm8'.  With native Solaris and GNU/Linux toolchains,
!      'native' can also be used.
  
  '-mv8plus'
  '-mno-v8plus'
*************** or combine them with constant text in a
*** 27998,28005 ****
       Accumulate an option for '%X'.
  
  '%X'
!      Output the accumulated linker options specified by '-Wl' or a '%x'
!      spec string.
  
  '%Y'
       Output the accumulated assembler options specified by '-Wa'.
--- 28030,28037 ----
       Accumulate an option for '%X'.
  
  '%X'
!      Output the accumulated linker options specified by a '%x' spec
!      string.
  
  '%Y'
       Output the accumulated assembler options specified by '-Wa'.
*************** The following attributes are supported o
*** 32030,32043 ****
       This tells the compiler that a function is 'malloc'-like, i.e.,
       that the pointer P returned by the function cannot alias any other
       pointer valid when the function returns, and moreover no pointers
!      to valid objects occur in any storage addressed by P.
  
!      Using this attribute can improve optimization.  Compiler predicts
!      that a function with the attribute returns non-null in most cases.
!      Functions like 'malloc' and 'calloc' have this property because
!      they return a pointer to uninitialized or zeroed-out storage.
!      However, functions like 'realloc' do not have this property, as
!      they can return a pointer to storage containing pointers.
  
  'no_icf'
       This function attribute prevents a functions from being merged with
--- 32062,32080 ----
       This tells the compiler that a function is 'malloc'-like, i.e.,
       that the pointer P returned by the function cannot alias any other
       pointer valid when the function returns, and moreover no pointers
!      to valid objects occur in any storage addressed by P.  In addition,
!      GCC predicts that a function with the attribute returns non-null in
!      most cases.
  
!      Using the attribute is designed to improve optimization by relying
!      on the aliasing property it implies.  Functions like 'malloc' and
!      'calloc' have this property because they return a pointer to
!      uninitialized or zeroed-out, newly obtained storage.  However,
!      functions like 'realloc' do not have this property, as they may
!      return pointers to storage containing pointers to existing objects.
!      Additionally, since all such functions are assumed to return null
!      only infrequently, callers can be optimized based on that
!      assumption.
  
  'no_icf'
       This function attribute prevents a functions from being merged with
*************** they are constants and that their values
*** 50428,50442 ****
       void __builtin_mma_xxmfacc (__vector_quad *);
       void __builtin_mma_xxsetaccz (__vector_quad *);
  
!      void __builtin_mma_assemble_acc (__vector_quad *, vec_t, vec_t, vec_t, vec_t);
       void __builtin_mma_disassemble_acc (void *, __vector_quad *);
  
!      void __builtin_vsx_assemble_pair (__vector_pair *, vec_t, vec_t);
       void __builtin_vsx_disassemble_pair (void *, __vector_pair *);
  
       vec_t __builtin_vsx_xvcvspbf16 (vec_t);
       vec_t __builtin_vsx_xvcvbf16spn (vec_t);
  
  
  File: gcc.info,  Node: RISC-V Built-in Functions,  Next: RX Built-in Functions,  Prev: PowerPC Matrix-Multiply Assist Built-in Functions,  Up: Target Builtins
  
--- 50465,50482 ----
       void __builtin_mma_xxmfacc (__vector_quad *);
       void __builtin_mma_xxsetaccz (__vector_quad *);
  
!      void __builtin_mma_build_acc (__vector_quad *, vec_t, vec_t, vec_t, vec_t);
       void __builtin_mma_disassemble_acc (void *, __vector_quad *);
  
!      void __builtin_vsx_build_pair (__vector_pair *, vec_t, vec_t);
       void __builtin_vsx_disassemble_pair (void *, __vector_pair *);
  
       vec_t __builtin_vsx_xvcvspbf16 (vec_t);
       vec_t __builtin_vsx_xvcvbf16spn (vec_t);
  
+      __vector_pair __builtin_vsx_lxvp (size_t, __vector_pair *);
+      void __builtin_vsx_stxvp (__vector_pair, size_t, __vector_pair *);
+ 
  
  File: gcc.info,  Node: RISC-V Built-in Functions,  Next: RX Built-in Functions,  Prev: PowerPC Matrix-Multiply Assist Built-in Functions,  Up: Target Builtins
  
*************** such objects behave unspecified when bei
*** 57518,57527 ****
  
       struct Base{
         char *name;
!        Base(char *n) : name(strdup(n)){}
         Base& operator= (const Base& other){
          free (name);
          name = strdup (other.name);
         }
       };
  
--- 57558,57568 ----
  
       struct Base{
         char *name;
!        Base(const char *n) : name(strdup(n)){}
         Base& operator= (const Base& other){
          free (name);
          name = strdup (other.name);
+         return *this;
         }
       };
  
*************** in the example).
*** 57553,57560 ****
   G++ implements the "intuitive" algorithm for copy-assignment: assign
  all direct bases, then assign all members.  In that algorithm, the
  virtual base subobject can be encountered more than once.  In the
! example, copying proceeds in the following order: 'val', 'name' (via
! 'strdup'), 'bval', and 'name' again.
  
   If application code relies on copy-assignment, a user-defined
  copy-assignment operator removes any uncertainties.  With such an
--- 57594,57601 ----
   G++ implements the "intuitive" algorithm for copy-assignment: assign
  all direct bases, then assign all members.  In that algorithm, the
  virtual base subobject can be encountered more than once.  In the
! example, copying proceeds in the following order: 'name' (via 'strdup'),
! 'val', 'name' again, and 'bval'.
  
   If application code relies on copy-assignment, a user-defined
  copy-assignment operator removes any uncertainties.  With such an
*************** alphabetical order.
*** 59367,59373 ****
  
     * Ralf Corsepius for SH testing and minor bug fixing.
  
!    * Franc,ois-Xavier Coudert for contributions to GNU Fortran.
  
     * Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
--- 59408,59414 ----
  
     * Ralf Corsepius for SH testing and minor bug fixing.
  
!    * François-Xavier Coudert for contributions to GNU Fortran.
  
     * Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
*************** alphabetical order.
*** 59410,59416 ****
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    * Franc,ois Dumont for his work on libstdc++-v3, especially
       maintaining and improving 'debug-mode' and associative and
       unordered containers.
  
--- 59451,59457 ----
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    * François Dumont for his work on libstdc++-v3, especially
       maintaining and improving 'debug-mode' and associative and
       unordered containers.
  
*************** alphabetical order.
*** 59669,59681 ****
  
     * Weiwen Liu for testing and various bug fixes.
  
!    * Manuel Lo'pez-Iba'n~ez for improving '-Wconversion' and many other
       diagnostics fixes and improvements.
  
     * Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    * Martin von Lo"wis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
--- 59710,59722 ----
  
     * Weiwen Liu for testing and various bug fixes.
  
!    * Manuel López-Ibáñez for improving '-Wconversion' and many other
       diagnostics fixes and improvements.
  
     * Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    * Martin von Löwis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
*************** alphabetical order.
*** 59867,59873 ****
  
     * Craig Rodrigues for processing tons of bug reports.
  
!    * Ola Ro"nnerup for work on mt_alloc.
  
     * Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
--- 59908,59914 ----
  
     * Craig Rodrigues for processing tons of bug reports.
  
!    * Ola Rönnerup for work on mt_alloc.
  
     * Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
*************** alphabetical order.
*** 59881,59887 ****
  
     * Paul Rubin wrote most of the preprocessor.
  
!    * Pe'tur Runo'lfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
     * Chip Salzenberg for libstdc++ patches and improvements to locales,
--- 59922,59928 ----
  
     * Paul Rubin wrote most of the preprocessor.
  
!    * Pétur Runólfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
     * Chip Salzenberg for libstdc++ patches and improvements to locales,
*************** alphabetical order.
*** 59902,59908 ****
  
     * William Schelter did most of the work on the Intel 80386 support.
  
!    * Tobias Schlu"ter for work on GNU Fortran.
  
     * Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
--- 59943,59949 ----
  
     * William Schelter did most of the work on the Intel 80386 support.
  
!    * Tobias Schlüter for work on GNU Fortran.
  
     * Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
*************** contributions to testing:
*** 60399,60405 ****
  
     * Robert A. French
  
!    * Jo"rgen Freyh
  
     * Mark K. Gardner
  
--- 60440,60446 ----
  
     * Robert A. French
  
!    * Jörgen Freyh
  
     * Mark K. Gardner
  
*************** look up both forms.
*** 60604,60613 ****
  * E:                                     Overall Options.    (line  190)
  * E <1>:                                 Link Options.       (line   20)
  * e:                                     Link Options.       (line  169)
! * EB:                                    ARC Options.        (line  597)
  * EB <1>:                                C-SKY Options.      (line   29)
  * EB <2>:                                MIPS Options.       (line    7)
! * EL:                                    ARC Options.        (line  606)
  * EL <1>:                                C-SKY Options.      (line   31)
  * EL <2>:                                MIPS Options.       (line   10)
  * entry:                                 Link Options.       (line  169)
--- 60645,60654 ----
  * E:                                     Overall Options.    (line  190)
  * E <1>:                                 Link Options.       (line   20)
  * e:                                     Link Options.       (line  169)
! * EB:                                    ARC Options.        (line  595)
  * EB <1>:                                C-SKY Options.      (line   29)
  * EB <2>:                                MIPS Options.       (line    7)
! * EL:                                    ARC Options.        (line  602)
  * EL <1>:                                C-SKY Options.      (line   31)
  * EL <2>:                                MIPS Options.       (line   10)
  * entry:                                 Link Options.       (line  169)
*************** look up both forms.
*** 60647,60653 ****
  * fanalyzer-transitivity:                Static Analyzer Options.
                                                               (line  227)
  * fasan-shadow-offset:                   Instrumentation Options.
!                                                              (line  453)
  * fasm:                                  C Dialect Options.  (line  252)
  * fassociative-math:                     Optimize Options.   (line 2283)
  * fasynchronous-unwind-tables:           Code Gen Options.   (line  156)
--- 60688,60694 ----
  * fanalyzer-transitivity:                Static Analyzer Options.
                                                               (line  227)
  * fasan-shadow-offset:                   Instrumentation Options.
!                                                              (line  456)
  * fasm:                                  C Dialect Options.  (line  252)
  * fassociative-math:                     Optimize Options.   (line 2283)
  * fasynchronous-unwind-tables:           Code Gen Options.   (line  156)
*************** look up both forms.
*** 60661,60667 ****
  * fcaller-saves:                         Optimize Options.   (line  926)
  * fcallgraph-info:                       Developer Options.  (line   34)
  * fcf-protection:                        Instrumentation Options.
!                                                              (line  526)
  * fchar8_t:                              C++ Dialect Options.
                                                               (line  118)
  * fcheck-new:                            C++ Dialect Options.
--- 60702,60708 ----
  * fcaller-saves:                         Optimize Options.   (line  926)
  * fcallgraph-info:                       Developer Options.  (line   34)
  * fcf-protection:                        Instrumentation Options.
!                                                              (line  529)
  * fchar8_t:                              C++ Dialect Options.
                                                               (line  118)
  * fcheck-new:                            C++ Dialect Options.
*************** look up both forms.
*** 60679,60685 ****
                                                               (line  172)
  * fconcepts-ts:                          C++ Dialect Options.
                                                               (line  172)
! * fcond-mismatch:                        C Dialect Options.  (line  396)
  * fconserve-stack:                       Optimize Options.   (line  957)
  * fconstant-string-class:                Objective-C and Objective-C++ Dialect Options.
                                                               (line   30)
--- 60720,60726 ----
                                                               (line  172)
  * fconcepts-ts:                          C++ Dialect Options.
                                                               (line  172)
! * fcond-mismatch:                        C Dialect Options.  (line  394)
  * fconserve-stack:                       Optimize Options.   (line  957)
  * fconstant-string-class:                Objective-C and Objective-C++ Dialect Options.
                                                               (line   30)
*************** look up both forms.
*** 60903,60909 ****
                                                               (line  256)
  * fgnu-runtime:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line   39)
! * fgnu-tm:                               C Dialect Options.  (line  353)
  * fgnu-unique:                           Code Gen Options.   (line  162)
  * fgnu89-inline:                         C Dialect Options.  (line  190)
  * fgraphite-identity:                    Optimize Options.   (line 1249)
--- 60944,60950 ----
                                                               (line  256)
  * fgnu-runtime:                          Objective-C and Objective-C++ Dialect Options.
                                                               (line   39)
! * fgnu-tm:                               C Dialect Options.  (line  351)
  * fgnu-unique:                           Code Gen Options.   (line  162)
  * fgnu89-inline:                         C Dialect Options.  (line  190)
  * fgraphite-identity:                    Optimize Options.   (line 1249)
*************** look up both forms.
*** 60932,60944 ****
  * finput-charset:                        Preprocessor Options.
                                                               (line  283)
  * finstrument-functions:                 Instrumentation Options.
!                                                              (line  728)
  * finstrument-functions <1>:             Common Function Attributes.
!                                                              (line  691)
  * finstrument-functions-exclude-file-list: Instrumentation Options.
!                                                              (line  764)
  * finstrument-functions-exclude-function-list: Instrumentation Options.
!                                                              (line  785)
  * fipa-bit-cp:                           Optimize Options.   (line 1057)
  * fipa-cp:                               Optimize Options.   (line 1038)
  * fipa-cp-clone:                         Optimize Options.   (line 1047)
--- 60973,60985 ----
  * finput-charset:                        Preprocessor Options.
                                                               (line  283)
  * finstrument-functions:                 Instrumentation Options.
!                                                              (line  732)
  * finstrument-functions <1>:             Common Function Attributes.
!                                                              (line  696)
  * finstrument-functions-exclude-file-list: Instrumentation Options.
!                                                              (line  768)
  * finstrument-functions-exclude-function-list: Instrumentation Options.
!                                                              (line  789)
  * fipa-bit-cp:                           Optimize Options.   (line 1057)
  * fipa-cp:                               Optimize Options.   (line 1038)
  * fipa-cp-clone:                         Optimize Options.   (line 1047)
*************** look up both forms.
*** 60971,60977 ****
  * fkeep-static-consts:                   Optimize Options.   (line  378)
  * fkeep-static-functions:                Optimize Options.   (line  374)
  * flat_namespace:                        Darwin Options.     (line  196)
! * flax-vector-conversions:               C Dialect Options.  (line  401)
  * fleading-underscore:                   Code Gen Options.   (line  478)
  * flifetime-dse:                         Optimize Options.   (line  667)
  * flinker-output:                        Link Options.       (line   25)
--- 61012,61018 ----
  * fkeep-static-consts:                   Optimize Options.   (line  378)
  * fkeep-static-functions:                Optimize Options.   (line  374)
  * flat_namespace:                        Darwin Options.     (line  196)
! * flax-vector-conversions:               C Dialect Options.  (line  399)
  * fleading-underscore:                   Code Gen Options.   (line  478)
  * flifetime-dse:                         Optimize Options.   (line  667)
  * flinker-output:                        Link Options.       (line   25)
*************** look up both forms.
*** 61007,61013 ****
  * fmodulo-sched:                         Optimize Options.   (line  408)
  * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  413)
  * fmove-loop-invariants:                 Optimize Options.   (line 2527)
! * fms-extensions:                        C Dialect Options.  (line  368)
  * fms-extensions <1>:                    C++ Dialect Options.
                                                               (line  281)
  * fms-extensions <2>:                    Unnamed Fields.     (line   36)
--- 61048,61054 ----
  * fmodulo-sched:                         Optimize Options.   (line  408)
  * fmodulo-sched-allow-regmoves:          Optimize Options.   (line  413)
  * fmove-loop-invariants:                 Optimize Options.   (line 2527)
! * fms-extensions:                        C Dialect Options.  (line  366)
  * fms-extensions <1>:                    C++ Dialect Options.
                                                               (line  281)
  * fms-extensions <2>:                    Unnamed Fields.     (line   36)
*************** look up both forms.
*** 61122,61145 ****
  * fno-rtti:                              C++ Dialect Options.
                                                               (line  341)
  * fno-sanitize-recover:                  Instrumentation Options.
!                                                              (line  462)
  * fno-sanitize=all:                      Instrumentation Options.
!                                                              (line  447)
  * fno-sched-interblock:                  Optimize Options.   (line  776)
  * fno-sched-spec:                        Optimize Options.   (line  781)
  * fno-set-stack-executable:              x86 Windows Options.
                                                               (line   46)
  * fno-show-column:                       Diagnostic Message Formatting Options.
                                                               (line  393)
! * fno-signed-bitfields:                  C Dialect Options.  (line  434)
  * fno-signed-zeros:                      Optimize Options.   (line 2322)
  * fno-stack-limit:                       Instrumentation Options.
!                                                              (line  640)
  * fno-threadsafe-statics:                C++ Dialect Options.
                                                               (line  396)
  * fno-toplevel-reorder:                  Optimize Options.   (line 1782)
  * fno-trapping-math:                     Optimize Options.   (line 2332)
! * fno-unsigned-bitfields:                C Dialect Options.  (line  434)
  * fno-use-cxa-get-exception-ptr:         C++ Dialect Options.
                                                               (line  409)
  * fno-var-tracking-assignments:          Debugging Options.  (line  161)
--- 61163,61186 ----
  * fno-rtti:                              C++ Dialect Options.
                                                               (line  341)
  * fno-sanitize-recover:                  Instrumentation Options.
!                                                              (line  465)
  * fno-sanitize=all:                      Instrumentation Options.
!                                                              (line  450)
  * fno-sched-interblock:                  Optimize Options.   (line  776)
  * fno-sched-spec:                        Optimize Options.   (line  781)
  * fno-set-stack-executable:              x86 Windows Options.
                                                               (line   46)
  * fno-show-column:                       Diagnostic Message Formatting Options.
                                                               (line  393)
! * fno-signed-bitfields:                  C Dialect Options.  (line  432)
  * fno-signed-zeros:                      Optimize Options.   (line 2322)
  * fno-stack-limit:                       Instrumentation Options.
!                                                              (line  644)
  * fno-threadsafe-statics:                C++ Dialect Options.
                                                               (line  396)
  * fno-toplevel-reorder:                  Optimize Options.   (line 1782)
  * fno-trapping-math:                     Optimize Options.   (line 2332)
! * fno-unsigned-bitfields:                C Dialect Options.  (line  432)
  * fno-use-cxa-get-exception-ptr:         C++ Dialect Options.
                                                               (line  409)
  * fno-var-tracking-assignments:          Debugging Options.  (line  161)
*************** look up both forms.
*** 61172,61180 ****
                                                               (line  119)
  * fomit-frame-pointer:                   Optimize Options.   (line  248)
  * fopenacc:                              C Dialect Options.  (line  325)
! * fopenacc-dim:                          C Dialect Options.  (line  334)
! * fopenmp:                               C Dialect Options.  (line  340)
! * fopenmp-simd:                          C Dialect Options.  (line  349)
  * foperator-names:                       C++ Dialect Options.
                                                               (line  315)
  * fopt-info:                             Developer Options.  (line  476)
--- 61213,61221 ----
                                                               (line  119)
  * fomit-frame-pointer:                   Optimize Options.   (line  248)
  * fopenacc:                              C Dialect Options.  (line  325)
! * fopenacc-dim:                          C Dialect Options.  (line  333)
! * fopenmp:                               C Dialect Options.  (line  339)
! * fopenmp-simd:                          C Dialect Options.  (line  347)
  * foperator-names:                       C++ Dialect Options.
                                                               (line  315)
  * fopt-info:                             Developer Options.  (line  476)
*************** look up both forms.
*** 61187,61193 ****
  * fpack-struct:                          Code Gen Options.   (line  465)
  * fpartial-inlining:                     Optimize Options.   (line 1491)
  * fpatchable-function-entry:             Instrumentation Options.
!                                                              (line  797)
  * fpcc-struct-return:                    Code Gen Options.   (line  175)
  * fpcc-struct-return <1>:                Incompatibilities.  (line  170)
  * fpch-deps:                             Preprocessor Options.
--- 61228,61234 ----
  * fpack-struct:                          Code Gen Options.   (line  465)
  * fpartial-inlining:                     Optimize Options.   (line 1491)
  * fpatchable-function-entry:             Instrumentation Options.
!                                                              (line  801)
  * fpcc-struct-return:                    Code Gen Options.   (line  175)
  * fpcc-struct-return <1>:                Incompatibilities.  (line  170)
  * fpch-deps:                             Preprocessor Options.
*************** look up both forms.
*** 61206,61212 ****
  * fPIC:                                  Code Gen Options.   (line  374)
  * fpie:                                  Code Gen Options.   (line  387)
  * fPIE:                                  Code Gen Options.   (line  387)
! * fplan9-extensions:                     C Dialect Options.  (line  386)
  * fplan9-extensions <1>:                 Unnamed Fields.     (line   43)
  * fplt:                                  Code Gen Options.   (line  396)
  * fplugin:                               Overall Options.    (line  381)
--- 61247,61253 ----
  * fPIC:                                  Code Gen Options.   (line  374)
  * fpie:                                  Code Gen Options.   (line  387)
  * fPIE:                                  Code Gen Options.   (line  387)
! * fplan9-extensions:                     C Dialect Options.  (line  384)
  * fplan9-extensions <1>:                 Unnamed Fields.     (line   43)
  * fplt:                                  Code Gen Options.   (line  396)
  * fplugin:                               Overall Options.    (line  381)
*************** look up both forms.
*** 61267,61341 ****
  * frtti:                                 C++ Dialect Options.
                                                               (line  341)
  * fsanitize-address-use-after-scope:     Instrumentation Options.
!                                                              (line  498)
  * fsanitize-coverage=trace-cmp:          Instrumentation Options.
!                                                              (line  513)
  * fsanitize-coverage=trace-pc:           Instrumentation Options.
!                                                              (line  509)
  * fsanitize-recover:                     Instrumentation Options.
!                                                              (line  462)
  * fsanitize-sections:                    Instrumentation Options.
!                                                              (line  458)
  * fsanitize-undefined-trap-on-error:     Instrumentation Options.
!                                                              (line  502)
  * fsanitize=address:                     Instrumentation Options.
                                                               (line  236)
  * fsanitize=alignment:                   Instrumentation Options.
!                                                              (line  373)
  * fsanitize=bool:                        Instrumentation Options.
!                                                              (line  411)
  * fsanitize=bounds:                      Instrumentation Options.
!                                                              (line  360)
  * fsanitize=bounds-strict:               Instrumentation Options.
!                                                              (line  366)
  * fsanitize=builtin:                     Instrumentation Options.
!                                                              (line  435)
  * fsanitize=enum:                        Instrumentation Options.
!                                                              (line  416)
  * fsanitize=float-cast-overflow:         Instrumentation Options.
!                                                              (line  391)
  * fsanitize=float-divide-by-zero:        Instrumentation Options.
!                                                              (line  385)
  * fsanitize=integer-divide-by-zero:      Instrumentation Options.
!                                                              (line  323)
  * fsanitize=kernel-address:              Instrumentation Options.
                                                               (line  250)
  * fsanitize=leak:                        Instrumentation Options.
                                                               (line  288)
  * fsanitize=nonnull-attribute:           Instrumentation Options.
!                                                              (line  399)
  * fsanitize=null:                        Instrumentation Options.
!                                                              (line  337)
  * fsanitize=object-size:                 Instrumentation Options.
!                                                              (line  380)
  * fsanitize=pointer-compare:             Instrumentation Options.
                                                               (line  254)
  * fsanitize=pointer-overflow:            Instrumentation Options.
!                                                              (line  429)
  * fsanitize=pointer-subtract:            Instrumentation Options.
                                                               (line  264)
  * fsanitize=return:                      Instrumentation Options.
!                                                              (line  345)
  * fsanitize=returns-nonnull-attribute:   Instrumentation Options.
!                                                              (line  405)
  * fsanitize=shift:                       Instrumentation Options.
!                                                              (line  303)
  * fsanitize=shift-base:                  Instrumentation Options.
!                                                              (line  316)
  * fsanitize=shift-exponent:              Instrumentation Options.
!                                                              (line  311)
  * fsanitize=signed-integer-overflow:     Instrumentation Options.
!                                                              (line  351)
  * fsanitize=thread:                      Instrumentation Options.
                                                               (line  274)
  * fsanitize=undefined:                   Instrumentation Options.
                                                               (line  298)
  * fsanitize=unreachable:                 Instrumentation Options.
!                                                              (line  327)
  * fsanitize=vla-bound:                   Instrumentation Options.
!                                                              (line  333)
  * fsanitize=vptr:                        Instrumentation Options.
!                                                              (line  422)
  * fsave-optimization-record:             Developer Options.  (line  582)
  * fsched-critical-path-heuristic:        Optimize Options.   (line  841)
  * fsched-dep-count-heuristic:            Optimize Options.   (line  868)
--- 61308,61382 ----
  * frtti:                                 C++ Dialect Options.
                                                               (line  341)
  * fsanitize-address-use-after-scope:     Instrumentation Options.
!                                                              (line  501)
  * fsanitize-coverage=trace-cmp:          Instrumentation Options.
!                                                              (line  516)
  * fsanitize-coverage=trace-pc:           Instrumentation Options.
!                                                              (line  512)
  * fsanitize-recover:                     Instrumentation Options.
!                                                              (line  465)
  * fsanitize-sections:                    Instrumentation Options.
!                                                              (line  461)
  * fsanitize-undefined-trap-on-error:     Instrumentation Options.
!                                                              (line  505)
  * fsanitize=address:                     Instrumentation Options.
                                                               (line  236)
  * fsanitize=alignment:                   Instrumentation Options.
!                                                              (line  376)
  * fsanitize=bool:                        Instrumentation Options.
!                                                              (line  414)
  * fsanitize=bounds:                      Instrumentation Options.
!                                                              (line  363)
  * fsanitize=bounds-strict:               Instrumentation Options.
!                                                              (line  369)
  * fsanitize=builtin:                     Instrumentation Options.
!                                                              (line  438)
  * fsanitize=enum:                        Instrumentation Options.
!                                                              (line  419)
  * fsanitize=float-cast-overflow:         Instrumentation Options.
!                                                              (line  394)
  * fsanitize=float-divide-by-zero:        Instrumentation Options.
!                                                              (line  388)
  * fsanitize=integer-divide-by-zero:      Instrumentation Options.
!                                                              (line  326)
  * fsanitize=kernel-address:              Instrumentation Options.
                                                               (line  250)
  * fsanitize=leak:                        Instrumentation Options.
                                                               (line  288)
  * fsanitize=nonnull-attribute:           Instrumentation Options.
!                                                              (line  402)
  * fsanitize=null:                        Instrumentation Options.
!                                                              (line  340)
  * fsanitize=object-size:                 Instrumentation Options.
!                                                              (line  383)
  * fsanitize=pointer-compare:             Instrumentation Options.
                                                               (line  254)
  * fsanitize=pointer-overflow:            Instrumentation Options.
!                                                              (line  432)
  * fsanitize=pointer-subtract:            Instrumentation Options.
                                                               (line  264)
  * fsanitize=return:                      Instrumentation Options.
!                                                              (line  348)
  * fsanitize=returns-nonnull-attribute:   Instrumentation Options.
!                                                              (line  408)
  * fsanitize=shift:                       Instrumentation Options.
!                                                              (line  306)
  * fsanitize=shift-base:                  Instrumentation Options.
!                                                              (line  319)
  * fsanitize=shift-exponent:              Instrumentation Options.
!                                                              (line  314)
  * fsanitize=signed-integer-overflow:     Instrumentation Options.
!                                                              (line  354)
  * fsanitize=thread:                      Instrumentation Options.
                                                               (line  274)
  * fsanitize=undefined:                   Instrumentation Options.
                                                               (line  298)
  * fsanitize=unreachable:                 Instrumentation Options.
!                                                              (line  330)
  * fsanitize=vla-bound:                   Instrumentation Options.
!                                                              (line  336)
  * fsanitize=vptr:                        Instrumentation Options.
!                                                              (line  425)
  * fsave-optimization-record:             Developer Options.  (line  582)
  * fsched-critical-path-heuristic:        Optimize Options.   (line  841)
  * fsched-dep-count-heuristic:            Optimize Options.   (line  868)
*************** look up both forms.
*** 61375,61383 ****
  * fshrink-wrap:                          Optimize Options.   (line  915)
  * fshrink-wrap-separate:                 Optimize Options.   (line  920)
  * fsignaling-nans:                       Optimize Options.   (line 2367)
! * fsigned-bitfields:                     C Dialect Options.  (line  434)
  * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
! * fsigned-char:                          C Dialect Options.  (line  424)
  * fsigned-char <1>:                      Characters implementation.
                                                               (line   31)
  * fsigned-zeros:                         Optimize Options.   (line 2322)
--- 61416,61424 ----
  * fshrink-wrap:                          Optimize Options.   (line  915)
  * fshrink-wrap-separate:                 Optimize Options.   (line  920)
  * fsignaling-nans:                       Optimize Options.   (line 2367)
! * fsigned-bitfields:                     C Dialect Options.  (line  432)
  * fsigned-bitfields <1>:                 Non-bugs.           (line   57)
! * fsigned-char:                          C Dialect Options.  (line  422)
  * fsigned-char <1>:                      Characters implementation.
                                                               (line   31)
  * fsigned-zeros:                         Optimize Options.   (line 2322)
*************** look up both forms.
*** 61389,61418 ****
  * fsplit-loops:                          Optimize Options.   (line 2531)
  * fsplit-paths:                          Optimize Options.   (line 1464)
  * fsplit-stack:                          Instrumentation Options.
!                                                              (line  657)
  * fsplit-stack <1>:                      Common Function Attributes.
!                                                              (line  741)
  * fsplit-wide-types:                     Optimize Options.   (line  466)
  * fsplit-wide-types-early:               Optimize Options.   (line  474)
  * fssa-backprop:                         Optimize Options.   (line 1173)
  * fssa-phiopt:                           Optimize Options.   (line 1179)
! * fsso-struct:                           C Dialect Options.  (line  440)
  * fstack-check:                          Instrumentation Options.
!                                                              (line  583)
  * fstack-clash-protection:               Instrumentation Options.
!                                                              (line  625)
  * fstack-limit-register:                 Instrumentation Options.
!                                                              (line  640)
  * fstack-limit-symbol:                   Instrumentation Options.
!                                                              (line  640)
  * fstack-protector:                      Instrumentation Options.
!                                                              (line  558)
  * fstack-protector-all:                  Instrumentation Options.
!                                                              (line  569)
  * fstack-protector-explicit:             Instrumentation Options.
!                                                              (line  579)
  * fstack-protector-strong:               Instrumentation Options.
!                                                              (line  572)
  * fstack-usage:                          Developer Options.  (line  897)
  * fstack_reuse:                          Code Gen Options.   (line   15)
  * fstats:                                Developer Options.  (line  926)
--- 61430,61459 ----
  * fsplit-loops:                          Optimize Options.   (line 2531)
  * fsplit-paths:                          Optimize Options.   (line 1464)
  * fsplit-stack:                          Instrumentation Options.
!                                                              (line  661)
  * fsplit-stack <1>:                      Common Function Attributes.
!                                                              (line  746)
  * fsplit-wide-types:                     Optimize Options.   (line  466)
  * fsplit-wide-types-early:               Optimize Options.   (line  474)
  * fssa-backprop:                         Optimize Options.   (line 1173)
  * fssa-phiopt:                           Optimize Options.   (line 1179)
! * fsso-struct:                           C Dialect Options.  (line  438)
  * fstack-check:                          Instrumentation Options.
!                                                              (line  587)
  * fstack-clash-protection:               Instrumentation Options.
!                                                              (line  629)
  * fstack-limit-register:                 Instrumentation Options.
!                                                              (line  644)
  * fstack-limit-symbol:                   Instrumentation Options.
!                                                              (line  644)
  * fstack-protector:                      Instrumentation Options.
!                                                              (line  562)
  * fstack-protector-all:                  Instrumentation Options.
!                                                              (line  573)
  * fstack-protector-explicit:             Instrumentation Options.
!                                                              (line  583)
  * fstack-protector-strong:               Instrumentation Options.
!                                                              (line  576)
  * fstack-usage:                          Developer Options.  (line  897)
  * fstack_reuse:                          Code Gen Options.   (line   15)
  * fstats:                                Developer Options.  (line  926)
*************** look up both forms.
*** 61422,61431 ****
  * fstrict-enums:                         C++ Dialect Options.
                                                               (line  366)
  * fstrict-overflow:                      Code Gen Options.   (line  115)
! * fstrict-volatile-bitfields:            Code Gen Options.   (line  589)
  * fstrong-eval-order:                    C++ Dialect Options.
                                                               (line  375)
! * fsync-libcalls:                        Code Gen Options.   (line  621)
  * fsyntax-only:                          Warning Options.    (line   14)
  * ftabstop:                              Preprocessor Options.
                                                               (line  238)
--- 61463,61472 ----
  * fstrict-enums:                         C++ Dialect Options.
                                                               (line  366)
  * fstrict-overflow:                      Code Gen Options.   (line  115)
! * fstrict-volatile-bitfields:            Code Gen Options.   (line  588)
  * fstrong-eval-order:                    C++ Dialect Options.
                                                               (line  375)
! * fsync-libcalls:                        Code Gen Options.   (line  620)
  * fsyntax-only:                          Warning Options.    (line   14)
  * ftabstop:                              Preprocessor Options.
                                                               (line  238)
*************** look up both forms.
*** 61488,61498 ****
  * funroll-all-loops:                     Optimize Options.   (line 2513)
  * funroll-loops:                         Optimize Options.   (line 2503)
  * funsafe-math-optimizations:            Optimize Options.   (line 2265)
! * funsigned-bitfields:                   C Dialect Options.  (line  434)
  * funsigned-bitfields <1>:               Structures unions enumerations and bit-fields implementation.
                                                               (line   17)
  * funsigned-bitfields <2>:               Non-bugs.           (line   57)
! * funsigned-char:                        C Dialect Options.  (line  406)
  * funsigned-char <1>:                    Characters implementation.
                                                               (line   31)
  * funswitch-loops:                       Optimize Options.   (line 2537)
--- 61529,61539 ----
  * funroll-all-loops:                     Optimize Options.   (line 2513)
  * funroll-loops:                         Optimize Options.   (line 2503)
  * funsafe-math-optimizations:            Optimize Options.   (line 2265)
! * funsigned-bitfields:                   C Dialect Options.  (line  432)
  * funsigned-bitfields <1>:               Structures unions enumerations and bit-fields implementation.
                                                               (line   17)
  * funsigned-bitfields <2>:               Non-bugs.           (line   57)
! * funsigned-char:                        C Dialect Options.  (line  404)
  * funsigned-char <1>:                    Characters implementation.
                                                               (line   31)
  * funswitch-loops:                       Optimize Options.   (line 2537)
*************** look up both forms.
*** 61519,61529 ****
                                                               (line  442)
  * fvpt:                                  Optimize Options.   (line 2466)
  * fvtable-verify:                        Instrumentation Options.
!                                                              (line  675)
  * fvtv-counts:                           Instrumentation Options.
!                                                              (line  711)
  * fvtv-debug:                            Instrumentation Options.
!                                                              (line  698)
  * fweak:                                 C++ Dialect Options.
                                                               (line  471)
  * fweb:                                  Optimize Options.   (line 1795)
--- 61560,61570 ----
                                                               (line  442)
  * fvpt:                                  Optimize Options.   (line 2466)
  * fvtable-verify:                        Instrumentation Options.
!                                                              (line  679)
  * fvtv-counts:                           Instrumentation Options.
!                                                              (line  715)
  * fvtv-debug:                            Instrumentation Options.
!                                                              (line  702)
  * fweak:                                 C++ Dialect Options.
                                                               (line  471)
  * fweb:                                  Optimize Options.   (line 1795)
*************** look up both forms.
*** 61540,61551 ****
  * fzero-link:                            Objective-C and Objective-C++ Dialect Options.
                                                               (line  140)
  * g:                                     Debugging Options.  (line   25)
! * G:                                     ARC Options.        (line  416)
  * G <1>:                                 M32R/D Options.     (line   57)
  * G <2>:                                 MIPS Options.       (line  460)
  * G <3>:                                 Nios II Options.    (line    9)
  * G <4>:                                 RS/6000 and PowerPC Options.
!                                                              (line  714)
  * G <5>:                                 System V Options.   (line   10)
  * gas-loc-support:                       Debugging Options.  (line  221)
  * gas-locview-support:                   Debugging Options.  (line  237)
--- 61581,61592 ----
  * fzero-link:                            Objective-C and Objective-C++ Dialect Options.
                                                               (line  140)
  * g:                                     Debugging Options.  (line   25)
! * G:                                     ARC Options.        (line  414)
  * G <1>:                                 M32R/D Options.     (line   57)
  * G <2>:                                 MIPS Options.       (line  460)
  * G <3>:                                 Nios II Options.    (line    9)
  * G <4>:                                 RS/6000 and PowerPC Options.
!                                                              (line  713)
  * G <5>:                                 System V Options.   (line   10)
  * gas-loc-support:                       Debugging Options.  (line  221)
  * gas-locview-support:                   Debugging Options.  (line  237)
*************** look up both forms.
*** 61612,61623 ****
  * M:                                     Preprocessor Options.
                                                               (line   77)
  * m:                                     RS/6000 and PowerPC Options.
!                                                              (line  521)
  * m1:                                    SH Options.         (line    9)
  * m10:                                   PDP-11 Options.     (line   29)
  * m128bit-long-double:                   x86 Options.        (line  584)
  * m16:                                   x86 Options.        (line 1425)
! * m16-bit:                               CRIS Options.       (line   64)
  * m16-bit <1>:                           NDS32 Options.      (line   51)
  * m1reg-:                                Adapteva Epiphany Options.
                                                               (line  131)
--- 61653,61664 ----
  * M:                                     Preprocessor Options.
                                                               (line   77)
  * m:                                     RS/6000 and PowerPC Options.
!                                                              (line  520)
  * m1:                                    SH Options.         (line    9)
  * m10:                                   PDP-11 Options.     (line   29)
  * m128bit-long-double:                   x86 Options.        (line  584)
  * m16:                                   x86 Options.        (line 1425)
! * m16-bit:                               CRIS Options.       (line   63)
  * m16-bit <1>:                           NDS32 Options.      (line   51)
  * m1reg-:                                Adapteva Epiphany Options.
                                                               (line  131)
*************** look up both forms.
*** 61632,61643 ****
                                                               (line   86)
  * m32:                                   Nvidia PTX Options. (line   10)
  * m32 <1>:                               RS/6000 and PowerPC Options.
!                                                              (line  245)
  * m32 <2>:                               SPARC Options.      (line  315)
  * m32 <3>:                               TILE-Gx Options.    (line   23)
  * m32 <4>:                               TILEPro Options.    (line   13)
  * m32 <5>:                               x86 Options.        (line 1425)
! * m32-bit:                               CRIS Options.       (line   64)
  * m32bit-doubles:                        RL78 Options.       (line   73)
  * m32bit-doubles <1>:                    RX Options.         (line   10)
  * m32r:                                  M32R/D Options.     (line   15)
--- 61673,61684 ----
                                                               (line   86)
  * m32:                                   Nvidia PTX Options. (line   10)
  * m32 <1>:                               RS/6000 and PowerPC Options.
!                                                              (line  244)
  * m32 <2>:                               SPARC Options.      (line  315)
  * m32 <3>:                               TILE-Gx Options.    (line   23)
  * m32 <4>:                               TILEPro Options.    (line   13)
  * m32 <5>:                               x86 Options.        (line 1425)
! * m32-bit:                               CRIS Options.       (line   63)
  * m32bit-doubles:                        RL78 Options.       (line   73)
  * m32bit-doubles <1>:                    RX Options.         (line   10)
  * m32r:                                  M32R/D Options.     (line   15)
*************** look up both forms.
*** 61680,61686 ****
  * m5407:                                 M680x0 Options.     (line  165)
  * m64:                                   Nvidia PTX Options. (line   10)
  * m64 <1>:                               RS/6000 and PowerPC Options.
!                                                              (line  245)
  * m64 <2>:                               S/390 and zSeries Options.
                                                               (line   86)
  * m64 <3>:                               SPARC Options.      (line  315)
--- 61721,61727 ----
  * m5407:                                 M680x0 Options.     (line  165)
  * m64:                                   Nvidia PTX Options. (line   10)
  * m64 <1>:                               RS/6000 and PowerPC Options.
!                                                              (line  244)
  * m64 <2>:                               S/390 and zSeries Options.
                                                               (line   86)
  * m64 <3>:                               SPARC Options.      (line  315)
*************** look up both forms.
*** 61697,61703 ****
  * m68040:                                M680x0 Options.     (line  117)
  * m68060:                                M680x0 Options.     (line  126)
  * m68881:                                M680x0 Options.     (line  194)
! * m8-bit:                                CRIS Options.       (line   64)
  * m8bit-idiv:                            x86 Options.        (line 1346)
  * m8byte-align:                          V850 Options.       (line  170)
  * m96bit-long-double:                    x86 Options.        (line  584)
--- 61738,61744 ----
  * m68040:                                M680x0 Options.     (line  117)
  * m68060:                                M680x0 Options.     (line  126)
  * m68881:                                M680x0 Options.     (line  194)
! * m8-bit:                                CRIS Options.       (line   63)
  * m8bit-idiv:                            x86 Options.        (line 1346)
  * m8byte-align:                          V850 Options.       (line  170)
  * m96bit-long-double:                    x86 Options.        (line  584)
*************** look up both forms.
*** 61708,61727 ****
  * mabi <2>:                              PRU Options.        (line   28)
  * mabi <3>:                              RISC-V Options.     (line   17)
  * mabi <4>:                              RS/6000 and PowerPC Options.
!                                                              (line  552)
  * mabi <5>:                              x86 Options.        (line 1039)
  * mabi=32:                               MIPS Options.       (line  156)
  * mabi=64:                               MIPS Options.       (line  156)
  * mabi=eabi:                             MIPS Options.       (line  156)
  * mabi=elfv1:                            RS/6000 and PowerPC Options.
!                                                              (line  574)
  * mabi=elfv2:                            RS/6000 and PowerPC Options.
!                                                              (line  580)
  * mabi=gnu:                              MMIX Options.       (line   20)
  * mabi=ibmlongdouble:                    RS/6000 and PowerPC Options.
!                                                              (line  558)
  * mabi=ieeelongdouble:                   RS/6000 and PowerPC Options.
!                                                              (line  566)
  * mabi=mmixware:                         MMIX Options.       (line   20)
  * mabi=n32:                              MIPS Options.       (line  156)
  * mabi=o64:                              MIPS Options.       (line  156)
--- 61749,61768 ----
  * mabi <2>:                              PRU Options.        (line   28)
  * mabi <3>:                              RISC-V Options.     (line   17)
  * mabi <4>:                              RS/6000 and PowerPC Options.
!                                                              (line  551)
  * mabi <5>:                              x86 Options.        (line 1039)
  * mabi=32:                               MIPS Options.       (line  156)
  * mabi=64:                               MIPS Options.       (line  156)
  * mabi=eabi:                             MIPS Options.       (line  156)
  * mabi=elfv1:                            RS/6000 and PowerPC Options.
!                                                              (line  573)
  * mabi=elfv2:                            RS/6000 and PowerPC Options.
!                                                              (line  579)
  * mabi=gnu:                              MMIX Options.       (line   20)
  * mabi=ibmlongdouble:                    RS/6000 and PowerPC Options.
!                                                              (line  557)
  * mabi=ieeelongdouble:                   RS/6000 and PowerPC Options.
!                                                              (line  565)
  * mabi=mmixware:                         MMIX Options.       (line   20)
  * mabi=n32:                              MIPS Options.       (line  156)
  * mabi=o64:                              MIPS Options.       (line  156)
*************** look up both forms.
*** 61730,61757 ****
  * mabort-on-noreturn:                    ARM Options.        (line  750)
  * mabs=2008:                             MIPS Options.       (line  300)
  * mabs=legacy:                           MIPS Options.       (line  300)
! * mabsdata:                              AVR Options.        (line  163)
  * mabsdiff:                              MeP Options.        (line    7)
  * mac0:                                  PDP-11 Options.     (line   16)
  * macc-4:                                FRV Options.        (line  139)
  * macc-8:                                FRV Options.        (line  143)
! * maccumulate-args:                      AVR Options.        (line  170)
  * maccumulate-outgoing-args:             SH Options.         (line  314)
  * maccumulate-outgoing-args <1>:         x86 Options.        (line 1083)
  * maddress-mode=long:                    x86 Options.        (line 1475)
  * maddress-mode=short:                   x86 Options.        (line 1480)
  * mads:                                  RS/6000 and PowerPC Options.
!                                                              (line  614)
  * madx:                                  x86 Options.        (line  811)
  * maes:                                  x86 Options.        (line  788)
  * maix-struct-return:                    RS/6000 and PowerPC Options.
!                                                              (line  545)
  * maix32:                                RS/6000 and PowerPC Options.
!                                                              (line  283)
  * maix64:                                RS/6000 and PowerPC Options.
!                                                              (line  283)
  * malign-300:                            H8/300 Options.     (line   41)
! * malign-call:                           ARC Options.        (line  435)
  * malign-data:                           RISC-V Options.     (line  127)
  * malign-data <1>:                       x86 Options.        (line  624)
  * malign-double:                         x86 Options.        (line  569)
--- 61771,61798 ----
  * mabort-on-noreturn:                    ARM Options.        (line  750)
  * mabs=2008:                             MIPS Options.       (line  300)
  * mabs=legacy:                           MIPS Options.       (line  300)
! * mabsdata:                              AVR Options.        (line  162)
  * mabsdiff:                              MeP Options.        (line    7)
  * mac0:                                  PDP-11 Options.     (line   16)
  * macc-4:                                FRV Options.        (line  139)
  * macc-8:                                FRV Options.        (line  143)
! * maccumulate-args:                      AVR Options.        (line  169)
  * maccumulate-outgoing-args:             SH Options.         (line  314)
  * maccumulate-outgoing-args <1>:         x86 Options.        (line 1083)
  * maddress-mode=long:                    x86 Options.        (line 1475)
  * maddress-mode=short:                   x86 Options.        (line 1480)
  * mads:                                  RS/6000 and PowerPC Options.
!                                                              (line  613)
  * madx:                                  x86 Options.        (line  811)
  * maes:                                  x86 Options.        (line  788)
  * maix-struct-return:                    RS/6000 and PowerPC Options.
!                                                              (line  544)
  * maix32:                                RS/6000 and PowerPC Options.
!                                                              (line  282)
  * maix64:                                RS/6000 and PowerPC Options.
!                                                              (line  282)
  * malign-300:                            H8/300 Options.     (line   41)
! * malign-call:                           ARC Options.        (line  433)
  * malign-data:                           RISC-V Options.     (line  127)
  * malign-data <1>:                       x86 Options.        (line  624)
  * malign-double:                         x86 Options.        (line  569)
*************** look up both forms.
*** 61759,61767 ****
  * malign-labels:                         FRV Options.        (line  128)
  * malign-loops:                          M32R/D Options.     (line   73)
  * malign-natural:                        RS/6000 and PowerPC Options.
!                                                              (line  321)
  * malign-power:                          RS/6000 and PowerPC Options.
!                                                              (line  321)
  * malign-stringops:                      x86 Options.        (line 1219)
  * mall-opts:                             MeP Options.        (line   11)
  * malloc-cc:                             FRV Options.        (line   31)
--- 61800,61808 ----
  * malign-labels:                         FRV Options.        (line  128)
  * malign-loops:                          M32R/D Options.     (line   73)
  * malign-natural:                        RS/6000 and PowerPC Options.
!                                                              (line  320)
  * malign-power:                          RS/6000 and PowerPC Options.
!                                                              (line  320)
  * malign-stringops:                      x86 Options.        (line 1219)
  * mall-opts:                             MeP Options.        (line   11)
  * malloc-cc:                             FRV Options.        (line   31)
*************** look up both forms.
*** 61800,61807 ****
  * march <14>:                            x86 Options.        (line    9)
  * march=:                                C-SKY Options.      (line    9)
  * marclinux:                             ARC Options.        (line  388)
! * marclinux_prof:                        ARC Options.        (line  395)
! * margonaut:                             ARC Options.        (line  593)
  * marm:                                  ARM Options.        (line  822)
  * mas100-syntax:                         RX Options.         (line   76)
  * masm-hex:                              MSP430 Options.     (line    9)
--- 61841,61848 ----
  * march <14>:                            x86 Options.        (line    9)
  * march=:                                C-SKY Options.      (line    9)
  * marclinux:                             ARC Options.        (line  388)
! * marclinux_prof:                        ARC Options.        (line  394)
! * margonaut:                             ARC Options.        (line  591)
  * marm:                                  ARM Options.        (line  822)
  * mas100-syntax:                         RX Options.         (line   76)
  * masm-hex:                              MSP430 Options.     (line    9)
*************** look up both forms.
*** 61810,61820 ****
  * matomic:                               ARC Options.        (line  155)
  * matomic-model=MODEL:                   SH Options.         (line  193)
  * mauto-litpools:                        Xtensa Options.     (line   60)
! * mauto-modify-reg:                      ARC Options.        (line  438)
  * mauto-pic:                             IA-64 Options.      (line   50)
  * maverage:                              MeP Options.        (line   16)
  * mavoid-indexed-addresses:              RS/6000 and PowerPC Options.
!                                                              (line  360)
  * mavx:                                  x86 Options.        (line  776)
  * mavx2:                                 x86 Options.        (line  777)
  * mavx256-split-unaligned-load:          x86 Options.        (line 1354)
--- 61851,61861 ----
  * matomic:                               ARC Options.        (line  155)
  * matomic-model=MODEL:                   SH Options.         (line  193)
  * mauto-litpools:                        Xtensa Options.     (line   60)
! * mauto-modify-reg:                      ARC Options.        (line  436)
  * mauto-pic:                             IA-64 Options.      (line   50)
  * maverage:                              MeP Options.        (line   16)
  * mavoid-indexed-addresses:              RS/6000 and PowerPC Options.
!                                                              (line  359)
  * mavx:                                  x86 Options.        (line  776)
  * mavx2:                                 x86 Options.        (line  777)
  * mavx256-split-unaligned-load:          x86 Options.        (line 1354)
*************** look up both forms.
*** 61843,61857 ****
                                                               (line   35)
  * mbarrel-shift-enabled:                 LM32 Options.       (line    9)
  * mbarrel-shifter:                       ARC Options.        (line   10)
! * mbarrel_shifter:                       ARC Options.        (line  613)
  * mbase-addresses:                       MMIX Options.       (line   53)
  * mbased=:                               MeP Options.        (line   20)
! * mbbit-peephole:                        ARC Options.        (line  441)
  * mbe8:                                  ARM Options.        (line   72)
  * mbig:                                  RS/6000 and PowerPC Options.
!                                                              (line  440)
  * mbig-endian:                           AArch64 Options.    (line   20)
! * mbig-endian <1>:                       ARC Options.        (line  596)
  * mbig-endian <2>:                       ARM Options.        (line   67)
  * mbig-endian <3>:                       C6X Options.        (line   13)
  * mbig-endian <4>:                       C-SKY Options.      (line   28)
--- 61884,61898 ----
                                                               (line   35)
  * mbarrel-shift-enabled:                 LM32 Options.       (line    9)
  * mbarrel-shifter:                       ARC Options.        (line   10)
! * mbarrel_shifter:                       ARC Options.        (line  608)
  * mbase-addresses:                       MMIX Options.       (line   53)
  * mbased=:                               MeP Options.        (line   20)
! * mbbit-peephole:                        ARC Options.        (line  439)
  * mbe8:                                  ARM Options.        (line   72)
  * mbig:                                  RS/6000 and PowerPC Options.
!                                                              (line  439)
  * mbig-endian:                           AArch64 Options.    (line   20)
! * mbig-endian <1>:                       ARC Options.        (line  594)
  * mbig-endian <2>:                       ARM Options.        (line   67)
  * mbig-endian <3>:                       C6X Options.        (line   13)
  * mbig-endian <4>:                       C-SKY Options.      (line   28)
*************** look up both forms.
*** 61861,61890 ****
  * mbig-endian <8>:                       MicroBlaze Options. (line   56)
  * mbig-endian <9>:                       NDS32 Options.      (line    9)
  * mbig-endian <10>:                      RS/6000 and PowerPC Options.
!                                                              (line  440)
  * mbig-endian <11>:                      TILE-Gx Options.    (line   29)
  * mbig-endian-data:                      RX Options.         (line   42)
  * mbig-switch:                           V850 Options.       (line  176)
  * mbigtable:                             SH Options.         (line  141)
  * mbionic:                               GNU/Linux Options.  (line   22)
  * mbit-align:                            RS/6000 and PowerPC Options.
!                                                              (line  392)
  * mbit-ops:                              CR16 Options.       (line   25)
  * mbitfield:                             M680x0 Options.     (line  231)
  * mbitops:                               MeP Options.        (line   26)
  * mbitops <1>:                           SH Options.         (line  145)
  * mblock-compare-inline-limit:           RS/6000 and PowerPC Options.
!                                                              (line  694)
  * mblock-compare-inline-loop-limit:      RS/6000 and PowerPC Options.
!                                                              (line  700)
  * mblock-move-inline-limit:              RS/6000 and PowerPC Options.
!                                                              (line  688)
  * mbmi:                                  x86 Options.        (line  812)
  * mbmi2:                                 x86 Options.        (line  813)
  * mboard:                                OpenRISC Options.   (line    9)
  * mbranch-cost:                          Adapteva Epiphany Options.
                                                               (line   18)
! * mbranch-cost <1>:                      AVR Options.        (line  185)
  * mbranch-cost <2>:                      MIPS Options.       (line  785)
  * mbranch-cost <3>:                      RISC-V Options.     (line    9)
  * mbranch-cost=:                         C-SKY Options.      (line  143)
--- 61902,61931 ----
  * mbig-endian <8>:                       MicroBlaze Options. (line   56)
  * mbig-endian <9>:                       NDS32 Options.      (line    9)
  * mbig-endian <10>:                      RS/6000 and PowerPC Options.
!                                                              (line  439)
  * mbig-endian <11>:                      TILE-Gx Options.    (line   29)
  * mbig-endian-data:                      RX Options.         (line   42)
  * mbig-switch:                           V850 Options.       (line  176)
  * mbigtable:                             SH Options.         (line  141)
  * mbionic:                               GNU/Linux Options.  (line   22)
  * mbit-align:                            RS/6000 and PowerPC Options.
!                                                              (line  391)
  * mbit-ops:                              CR16 Options.       (line   25)
  * mbitfield:                             M680x0 Options.     (line  231)
  * mbitops:                               MeP Options.        (line   26)
  * mbitops <1>:                           SH Options.         (line  145)
  * mblock-compare-inline-limit:           RS/6000 and PowerPC Options.
!                                                              (line  693)
  * mblock-compare-inline-loop-limit:      RS/6000 and PowerPC Options.
!                                                              (line  699)
  * mblock-move-inline-limit:              RS/6000 and PowerPC Options.
!                                                              (line  687)
  * mbmi:                                  x86 Options.        (line  812)
  * mbmi2:                                 x86 Options.        (line  813)
  * mboard:                                OpenRISC Options.   (line    9)
  * mbranch-cost:                          Adapteva Epiphany Options.
                                                               (line   18)
! * mbranch-cost <1>:                      AVR Options.        (line  184)
  * mbranch-cost <2>:                      MIPS Options.       (line  785)
  * mbranch-cost <3>:                      RISC-V Options.     (line    9)
  * mbranch-cost=:                         C-SKY Options.      (line  143)
*************** look up both forms.
*** 61893,61899 ****
  * mbranch-index:                         ARC Options.        (line  329)
  * mbranch-likely:                        MIPS Options.       (line  792)
  * mbranch-predict:                       MMIX Options.       (line   48)
! * mbranch-protection:                    AArch64 Options.    (line  276)
  * mbss-plt:                              RS/6000 and PowerPC Options.
                                                               (line  160)
  * mbuild-constants:                      DEC Alpha Options.  (line  141)
--- 61934,61940 ----
  * mbranch-index:                         ARC Options.        (line  329)
  * mbranch-likely:                        MIPS Options.       (line  792)
  * mbranch-predict:                       MMIX Options.       (line   48)
! * mbranch-protection:                    AArch64 Options.    (line  295)
  * mbss-plt:                              RS/6000 and PowerPC Options.
                                                               (line  160)
  * mbuild-constants:                      DEC Alpha Options.  (line  141)
*************** look up both forms.
*** 61906,61936 ****
  * mcache-block-size:                     NDS32 Options.      (line   60)
  * mcache-volatile:                       Nios II Options.    (line  109)
  * mcall-eabi:                            RS/6000 and PowerPC Options.
!                                                              (line  515)
  * mcall-freebsd:                         RS/6000 and PowerPC Options.
!                                                              (line  529)
  * mcall-linux:                           RS/6000 and PowerPC Options.
!                                                              (line  525)
  * mcall-ms2sysv-xlogues:                 x86 Options.        (line 1059)
  * mcall-netbsd:                          RS/6000 and PowerPC Options.
!                                                              (line  533)
  * mcall-netbsd <1>:                      RS/6000 and PowerPC Options.
!                                                              (line  537)
! * mcall-prologues:                       AVR Options.        (line  190)
  * mcall-sysv:                            RS/6000 and PowerPC Options.
!                                                              (line  507)
  * mcall-sysv-eabi:                       RS/6000 and PowerPC Options.
!                                                              (line  515)
  * mcall-sysv-noeabi:                     RS/6000 and PowerPC Options.
!                                                              (line  518)
  * mcallee-super-interworking:            ARM Options.        (line  851)
  * mcaller-copies:                        HPPA Options.       (line   23)
  * mcaller-super-interworking:            ARM Options.        (line  858)
  * mcallgraph-data:                       MCore Options.      (line   31)
! * mcase-vector-pcrel:                    ARC Options.        (line  450)
  * mcbcond:                               SPARC Options.      (line  260)
  * mcbranch-force-delay-slot:             SH Options.         (line  349)
! * mcc-init:                              CRIS Options.       (line   42)
  * mccrt:                                 C-SKY Options.      (line  139)
  * mcfv4e:                                M680x0 Options.     (line  169)
  * mcheck-zero-division:                  MIPS Options.       (line  570)
--- 61947,61977 ----
  * mcache-block-size:                     NDS32 Options.      (line   60)
  * mcache-volatile:                       Nios II Options.    (line  109)
  * mcall-eabi:                            RS/6000 and PowerPC Options.
!                                                              (line  514)
  * mcall-freebsd:                         RS/6000 and PowerPC Options.
!                                                              (line  528)
  * mcall-linux:                           RS/6000 and PowerPC Options.
!                                                              (line  524)
  * mcall-ms2sysv-xlogues:                 x86 Options.        (line 1059)
  * mcall-netbsd:                          RS/6000 and PowerPC Options.
!                                                              (line  532)
  * mcall-netbsd <1>:                      RS/6000 and PowerPC Options.
!                                                              (line  536)
! * mcall-prologues:                       AVR Options.        (line  189)
  * mcall-sysv:                            RS/6000 and PowerPC Options.
!                                                              (line  506)
  * mcall-sysv-eabi:                       RS/6000 and PowerPC Options.
!                                                              (line  514)
  * mcall-sysv-noeabi:                     RS/6000 and PowerPC Options.
!                                                              (line  517)
  * mcallee-super-interworking:            ARM Options.        (line  851)
  * mcaller-copies:                        HPPA Options.       (line   23)
  * mcaller-super-interworking:            ARM Options.        (line  858)
  * mcallgraph-data:                       MCore Options.      (line   31)
! * mcase-vector-pcrel:                    ARC Options.        (line  448)
  * mcbcond:                               SPARC Options.      (line  260)
  * mcbranch-force-delay-slot:             SH Options.         (line  349)
! * mcc-init:                              CRIS Options.       (line   41)
  * mccrt:                                 C-SKY Options.      (line  139)
  * mcfv4e:                                M680x0 Options.     (line  169)
  * mcheck-zero-division:                  MIPS Options.       (line  570)
*************** look up both forms.
*** 61969,61990 ****
                                                               (line   25)
  * mcmse:                                 ARM Options.        (line  950)
  * mcode-density:                         ARC Options.        (line  163)
! * mcode-density-frame:                   ARC Options.        (line  511)
  * mcode-readable:                        MIPS Options.       (line  530)
  * mcode-region:                          MSP430 Options.     (line  135)
  * mcompact-branches=always:              MIPS Options.       (line  804)
  * mcompact-branches=never:               MIPS Options.       (line  804)
  * mcompact-branches=optimal:             MIPS Options.       (line  804)
! * mcompact-casesi:                       ARC Options.        (line  454)
  * mcompat-align-parm:                    RS/6000 and PowerPC Options.
!                                                              (line  899)
  * mcompress:                             FT32 Options.       (line   26)
  * mcond-exec:                            FRV Options.        (line  187)
  * mcond-move:                            FRV Options.        (line  159)
  * mconfig=:                              MeP Options.        (line   39)
  * mconsole:                              x86 Windows Options.
                                                               (line    9)
! * mconst-align:                          CRIS Options.       (line   55)
  * mconst16:                              Xtensa Options.     (line   10)
  * mconstant-gp:                          IA-64 Options.      (line   46)
  * mconstpool:                            C-SKY Options.      (line  127)
--- 62010,62031 ----
                                                               (line   25)
  * mcmse:                                 ARM Options.        (line  950)
  * mcode-density:                         ARC Options.        (line  163)
! * mcode-density-frame:                   ARC Options.        (line  509)
  * mcode-readable:                        MIPS Options.       (line  530)
  * mcode-region:                          MSP430 Options.     (line  135)
  * mcompact-branches=always:              MIPS Options.       (line  804)
  * mcompact-branches=never:               MIPS Options.       (line  804)
  * mcompact-branches=optimal:             MIPS Options.       (line  804)
! * mcompact-casesi:                       ARC Options.        (line  452)
  * mcompat-align-parm:                    RS/6000 and PowerPC Options.
!                                                              (line  898)
  * mcompress:                             FT32 Options.       (line   26)
  * mcond-exec:                            FRV Options.        (line  187)
  * mcond-move:                            FRV Options.        (line  159)
  * mconfig=:                              MeP Options.        (line   39)
  * mconsole:                              x86 Windows Options.
                                                               (line    9)
! * mconst-align:                          CRIS Options.       (line   54)
  * mconst16:                              Xtensa Options.     (line   10)
  * mconstant-gp:                          IA-64 Options.      (line   46)
  * mconstpool:                            C-SKY Options.      (line  127)
*************** look up both forms.
*** 61994,62000 ****
  * mcorea:                                Blackfin Options.   (line  154)
  * mcoreb:                                Blackfin Options.   (line  161)
  * mcp:                                   C-SKY Options.      (line   74)
! * mcpu:                                  AArch64 Options.    (line  232)
  * mcpu <1>:                              ARC Options.        (line   18)
  * mcpu <2>:                              ARM Options.        (line  620)
  * mcpu <3>:                              CRIS Options.       (line   10)
--- 62035,62041 ----
  * mcorea:                                Blackfin Options.   (line  154)
  * mcoreb:                                Blackfin Options.   (line  161)
  * mcp:                                   C-SKY Options.      (line   74)
! * mcpu:                                  AArch64 Options.    (line  242)
  * mcpu <1>:                              ARC Options.        (line   18)
  * mcpu <2>:                              ARM Options.        (line  620)
  * mcpu <3>:                              CRIS Options.       (line   10)
*************** look up both forms.
*** 62032,62038 ****
  * MD:                                    Preprocessor Options.
                                                               (line  169)
  * mdalign:                               SH Options.         (line  132)
! * mdata-align:                           CRIS Options.       (line   55)
  * mdata-model:                           CR16 Options.       (line   28)
  * mdata-region:                          MSP430 Options.     (line  135)
  * mdc:                                   MeP Options.        (line   62)
--- 62073,62079 ----
  * MD:                                    Preprocessor Options.
                                                               (line  169)
  * mdalign:                               SH Options.         (line  132)
! * mdata-align:                           CRIS Options.       (line   54)
  * mdata-model:                           CR16 Options.       (line   28)
  * mdata-region:                          MSP430 Options.     (line  135)
  * mdc:                                   MeP Options.        (line   62)
*************** look up both forms.
*** 62059,62067 ****
  * mdll:                                  x86 Windows Options.
                                                               (line   16)
  * mdlmzb:                                RS/6000 and PowerPC Options.
!                                                              (line  385)
  * mdmx:                                  MIPS Options.       (line  376)
! * mdouble:                               AVR Options.        (line  195)
  * mdouble <1>:                           FRV Options.        (line   48)
  * mdouble-float:                         C-SKY Options.      (line   42)
  * mdouble-float <1>:                     MIPS Options.       (line  288)
--- 62100,62108 ----
  * mdll:                                  x86 Windows Options.
                                                               (line   16)
  * mdlmzb:                                RS/6000 and PowerPC Options.
!                                                              (line  384)
  * mdmx:                                  MIPS Options.       (line  376)
! * mdouble:                               AVR Options.        (line  194)
  * mdouble <1>:                           FRV Options.        (line   48)
  * mdouble-float:                         C-SKY Options.      (line   42)
  * mdouble-float <1>:                     MIPS Options.       (line  288)
*************** look up both forms.
*** 62069,62093 ****
  * mdpfp:                                 ARC Options.        (line   99)
  * mdpfp-compact:                         ARC Options.        (line  100)
  * mdpfp-fast:                            ARC Options.        (line  104)
! * mdpfp_compact:                         ARC Options.        (line  616)
! * mdpfp_fast:                            ARC Options.        (line  619)
  * mdsp:                                  C-SKY Options.      (line   86)
  * mdsp <1>:                              MIPS Options.       (line  353)
  * mdsp-packa:                            ARC Options.        (line  335)
  * mdspr2:                                MIPS Options.       (line  359)
! * mdsp_packa:                            ARC Options.        (line  622)
  * mdump-tune-features:                   x86 Options.        (line  874)
  * mdvbf:                                 ARC Options.        (line  340)
  * mdwarf2-asm:                           IA-64 Options.      (line   94)
  * mdword:                                FRV Options.        (line   40)
  * mdword <1>:                            FRV Options.        (line   44)
  * mdynamic-no-pic:                       RS/6000 and PowerPC Options.
!                                                              (line  445)
  * mea:                                   ARC Options.        (line  112)
! * mEA:                                   ARC Options.        (line  625)
  * meabi:                                 RS/6000 and PowerPC Options.
!                                                              (line  633)
! * mearly-cbranchsi:                      ARC Options.        (line  476)
  * mearly-stop-bits:                      IA-64 Options.      (line  100)
  * meb:                                   MeP Options.        (line   68)
  * meb <1>:                               Moxie Options.      (line    7)
--- 62110,62134 ----
  * mdpfp:                                 ARC Options.        (line   99)
  * mdpfp-compact:                         ARC Options.        (line  100)
  * mdpfp-fast:                            ARC Options.        (line  104)
! * mdpfp_compact:                         ARC Options.        (line  611)
! * mdpfp_fast:                            ARC Options.        (line  614)
  * mdsp:                                  C-SKY Options.      (line   86)
  * mdsp <1>:                              MIPS Options.       (line  353)
  * mdsp-packa:                            ARC Options.        (line  335)
  * mdspr2:                                MIPS Options.       (line  359)
! * mdsp_packa:                            ARC Options.        (line  617)
  * mdump-tune-features:                   x86 Options.        (line  874)
  * mdvbf:                                 ARC Options.        (line  340)
  * mdwarf2-asm:                           IA-64 Options.      (line   94)
  * mdword:                                FRV Options.        (line   40)
  * mdword <1>:                            FRV Options.        (line   44)
  * mdynamic-no-pic:                       RS/6000 and PowerPC Options.
!                                                              (line  444)
  * mea:                                   ARC Options.        (line  112)
! * mEA:                                   ARC Options.        (line  620)
  * meabi:                                 RS/6000 and PowerPC Options.
!                                                              (line  632)
! * mearly-cbranchsi:                      ARC Options.        (line  474)
  * mearly-stop-bits:                      IA-64 Options.      (line  100)
  * meb:                                   MeP Options.        (line   68)
  * meb <1>:                               Moxie Options.      (line    7)
*************** look up both forms.
*** 62098,62108 ****
  * mel <1>:                               Moxie Options.      (line   11)
  * mel <2>:                               Nios II Options.    (line   90)
  * mel <3>:                               Score Options.      (line   12)
! * melf:                                  CRIS Options.       (line   87)
  * melf <1>:                              MMIX Options.       (line   43)
  * melrw:                                 C-SKY Options.      (line   60)
  * memb:                                  RS/6000 and PowerPC Options.
!                                                              (line  628)
  * membedded-data:                        MIPS Options.       (line  517)
  * memregs=:                              M32C Options.       (line   21)
  * menqcmd:                               x86 Options.        (line  835)
--- 62139,62149 ----
  * mel <1>:                               Moxie Options.      (line   11)
  * mel <2>:                               Nios II Options.    (line   90)
  * mel <3>:                               Score Options.      (line   12)
! * melf:                                  CRIS Options.       (line   86)
  * melf <1>:                              MMIX Options.       (line   43)
  * melrw:                                 C-SKY Options.      (line   60)
  * memb:                                  RS/6000 and PowerPC Options.
!                                                              (line  627)
  * membedded-data:                        MIPS Options.       (line  517)
  * memregs=:                              M32C Options.       (line   21)
  * menqcmd:                               x86 Options.        (line  835)
*************** look up both forms.
*** 62110,62119 ****
  * mepsilon:                              MMIX Options.       (line   15)
  * mesa:                                  S/390 and zSeries Options.
                                                               (line   94)
! * metrax100:                             CRIS Options.       (line   27)
! * metrax4:                               CRIS Options.       (line   27)
  * meva:                                  MIPS Options.       (line  403)
! * mexpand-adddi:                         ARC Options.        (line  479)
  * mexplicit-relocs:                      DEC Alpha Options.  (line  176)
  * mexplicit-relocs <1>:                  MIPS Options.       (line  561)
  * mexr:                                  H8/300 Options.     (line   28)
--- 62151,62160 ----
  * mepsilon:                              MMIX Options.       (line   15)
  * mesa:                                  S/390 and zSeries Options.
                                                               (line   94)
! * metrax100:                             CRIS Options.       (line   26)
! * metrax4:                               CRIS Options.       (line   26)
  * meva:                                  MIPS Options.       (line  403)
! * mexpand-adddi:                         ARC Options.        (line  477)
  * mexplicit-relocs:                      DEC Alpha Options.  (line  176)
  * mexplicit-relocs <1>:                  MIPS Options.       (line  561)
  * mexr:                                  H8/300 Options.     (line   28)
*************** look up both forms.
*** 62132,62138 ****
  * mfaster-structs:                       SPARC Options.      (line   91)
  * mfdiv:                                 RISC-V Options.     (line   42)
  * mfdivdu:                               C-SKY Options.      (line   48)
! * mfdpic:                                ARM Options.        (line  957)
  * mfdpic <1>:                            FRV Options.        (line   72)
  * mfentry:                               x86 Options.        (line 1293)
  * mfentry-name:                          x86 Options.        (line 1324)
--- 62173,62179 ----
  * mfaster-structs:                       SPARC Options.      (line   91)
  * mfdiv:                                 RISC-V Options.     (line   42)
  * mfdivdu:                               C-SKY Options.      (line   48)
! * mfdpic:                                ARM Options.        (line  965)
  * mfdpic <1>:                            FRV Options.        (line   72)
  * mfentry:                               x86 Options.        (line 1293)
  * mfentry-name:                          x86 Options.        (line 1324)
*************** look up both forms.
*** 62141,62146 ****
--- 62182,62188 ----
  * mfix-24k:                              MIPS Options.       (line  641)
  * mfix-and-continue:                     Darwin Options.     (line  104)
  * mfix-at697f:                           SPARC Options.      (line  294)
+ * mfix-cmse-cve-2021-35465:              ARM Options.        (line  956)
  * mfix-cortex-a53-835769:                AArch64 Options.    (line  105)
  * mfix-cortex-a53-843419:                AArch64 Options.    (line  112)
  * mfix-cortex-m3-ldrd:                   ARM Options.        (line  892)
*************** look up both forms.
*** 62168,62174 ****
  * mfloat128:                             RS/6000 and PowerPC Options.
                                                               (line  214)
  * mfloat128-hardware:                    RS/6000 and PowerPC Options.
!                                                              (line  236)
  * mflush-func:                           MIPS Options.       (line  776)
  * mflush-func=NAME:                      M32R/D Options.     (line   93)
  * mflush-trap=NUMBER:                    M32R/D Options.     (line   86)
--- 62210,62216 ----
  * mfloat128:                             RS/6000 and PowerPC Options.
                                                               (line  214)
  * mfloat128-hardware:                    RS/6000 and PowerPC Options.
!                                                              (line  235)
  * mflush-func:                           MIPS Options.       (line  776)
  * mflush-func=NAME:                      M32R/D Options.     (line   93)
  * mflush-trap=NUMBER:                    M32R/D Options.     (line   86)
*************** look up both forms.
*** 62201,62210 ****
  * mfpu <4>:                              Visium Options.     (line   19)
  * mfpu=:                                 C-SKY Options.      (line   53)
  * mfpxx:                                 MIPS Options.       (line  264)
! * mfract-convert-truncate:               AVR Options.        (line  286)
  * mframe-header-opt:                     MIPS Options.       (line  885)
  * mfriz:                                 RS/6000 and PowerPC Options.
!                                                              (line  870)
  * mfsca:                                 SH Options.         (line  365)
  * mfsgsbase:                             x86 Options.        (line  792)
  * mfsmuld:                               SPARC Options.      (line  274)
--- 62243,62252 ----
  * mfpu <4>:                              Visium Options.     (line   19)
  * mfpu=:                                 C-SKY Options.      (line   53)
  * mfpxx:                                 MIPS Options.       (line  264)
! * mfract-convert-truncate:               AVR Options.        (line  284)
  * mframe-header-opt:                     MIPS Options.       (line  885)
  * mfriz:                                 RS/6000 and PowerPC Options.
!                                                              (line  869)
  * mfsca:                                 SH Options.         (line  365)
  * mfsgsbase:                             x86 Options.        (line  792)
  * mfsmuld:                               SPARC Options.      (line  274)
*************** look up both forms.
*** 62212,62223 ****
  * mft32b:                                FT32 Options.       (line   23)
  * mfull-regs:                            NDS32 Options.      (line   18)
  * mfull-toc:                             RS/6000 and PowerPC Options.
!                                                              (line  256)
  * mfunction-return:                      x86 Options.        (line 1396)
  * mfused-madd:                           IA-64 Options.      (line   88)
  * mfused-madd <1>:                       MIPS Options.       (line  624)
  * mfused-madd <2>:                       RS/6000 and PowerPC Options.
!                                                              (line  369)
  * mfused-madd <3>:                       S/390 and zSeries Options.
                                                               (line  182)
  * mfused-madd <4>:                       SH Options.         (line  356)
--- 62254,62265 ----
  * mft32b:                                FT32 Options.       (line   23)
  * mfull-regs:                            NDS32 Options.      (line   18)
  * mfull-toc:                             RS/6000 and PowerPC Options.
!                                                              (line  255)
  * mfunction-return:                      x86 Options.        (line 1396)
  * mfused-madd:                           IA-64 Options.      (line   88)
  * mfused-madd <1>:                       MIPS Options.       (line  624)
  * mfused-madd <2>:                       RS/6000 and PowerPC Options.
!                                                              (line  368)
  * mfused-madd <3>:                       S/390 and zSeries Options.
                                                               (line  182)
  * mfused-madd <4>:                       SH Options.         (line  356)
*************** look up both forms.
*** 62230,62236 ****
  * mg13:                                  RL78 Options.       (line   62)
  * mg14:                                  RL78 Options.       (line   62)
  * mgas:                                  HPPA Options.       (line   75)
! * mgas-isr-prologues:                    AVR Options.        (line  203)
  * mgcc-abi:                              V850 Options.       (line  148)
  * mgeneral-regs-only:                    AArch64 Options.    (line   24)
  * mgeneral-regs-only <1>:                ARM Options.        (line   57)
--- 62272,62278 ----
  * mg13:                                  RL78 Options.       (line   62)
  * mg14:                                  RL78 Options.       (line   62)
  * mgas:                                  HPPA Options.       (line   75)
! * mgas-isr-prologues:                    AVR Options.        (line  202)
  * mgcc-abi:                              V850 Options.       (line  148)
  * mgeneral-regs-only:                    AArch64 Options.    (line   24)
  * mgeneral-regs-only <1>:                ARM Options.        (line   57)
*************** look up both forms.
*** 62243,62253 ****
  * mgnu-as:                               IA-64 Options.      (line   18)
  * mgnu-asm:                              PDP-11 Options.     (line   49)
  * mgnu-attribute:                        RS/6000 and PowerPC Options.
!                                                              (line  587)
  * mgnu-ld:                               HPPA Options.       (line  111)
  * mgnu-ld <1>:                           IA-64 Options.      (line   23)
  * mgomp:                                 Nvidia PTX Options. (line   53)
! * mgotplt:                               CRIS Options.       (line   81)
  * mgp32:                                 MIPS Options.       (line  252)
  * mgp64:                                 MIPS Options.       (line  255)
  * mgpopt:                                MIPS Options.       (line  502)
--- 62285,62295 ----
  * mgnu-as:                               IA-64 Options.      (line   18)
  * mgnu-asm:                              PDP-11 Options.     (line   49)
  * mgnu-attribute:                        RS/6000 and PowerPC Options.
!                                                              (line  586)
  * mgnu-ld:                               HPPA Options.       (line  111)
  * mgnu-ld <1>:                           IA-64 Options.      (line   23)
  * mgomp:                                 Nvidia PTX Options. (line   53)
! * mgotplt:                               CRIS Options.       (line   80)
  * mgp32:                                 MIPS Options.       (line  252)
  * mgp64:                                 MIPS Options.       (line  255)
  * mgpopt:                                MIPS Options.       (line  502)
*************** look up both forms.
*** 62272,62278 ****
  * mhard-float <4>:                       MIPS Options.       (line  267)
  * mhard-float <5>:                       OpenRISC Options.   (line   29)
  * mhard-float <6>:                       RS/6000 and PowerPC Options.
!                                                              (line  333)
  * mhard-float <7>:                       S/390 and zSeries Options.
                                                               (line   11)
  * mhard-float <8>:                       SPARC Options.      (line   34)
--- 62314,62320 ----
  * mhard-float <4>:                       MIPS Options.       (line  267)
  * mhard-float <5>:                       OpenRISC Options.   (line   29)
  * mhard-float <6>:                       RS/6000 and PowerPC Options.
!                                                              (line  332)
  * mhard-float <7>:                       S/390 and zSeries Options.
                                                               (line   11)
  * mhard-float <8>:                       SPARC Options.      (line   34)
*************** look up both forms.
*** 62281,62287 ****
  * mhard-float <11>:                      x86 Options.        (line  532)
  * mhard-mul:                             OpenRISC Options.   (line   24)
  * mhard-quad-float:                      SPARC Options.      (line   55)
! * mharden-sls:                           AArch64 Options.    (line  289)
  * mhardlit:                              MCore Options.      (line   10)
  * mhigh-registers:                       C-SKY Options.      (line  104)
  * mhle:                                  x86 Options.        (line  821)
--- 62323,62329 ----
  * mhard-float <11>:                      x86 Options.        (line  532)
  * mhard-mul:                             OpenRISC Options.   (line   24)
  * mhard-quad-float:                      SPARC Options.      (line   55)
! * mharden-sls:                           AArch64 Options.    (line  308)
  * mhardlit:                              MCore Options.      (line   10)
  * mhigh-registers:                       C-SKY Options.      (line  104)
  * mhle:                                  x86 Options.        (line  821)
*************** look up both forms.
*** 62309,62315 ****
  * mimadd:                                MIPS Options.       (line  617)
  * mimpure-text:                          Solaris 2 Options.  (line   15)
  * mincoming-stack-boundary:              x86 Options.        (line  742)
! * mindexed-loads:                        ARC Options.        (line  483)
  * mindirect-branch:                      x86 Options.        (line 1377)
  * mindirect-branch-register:             x86 Options.        (line 1415)
  * minline-all-stringops:                 x86 Options.        (line 1224)
--- 62351,62357 ----
  * mimadd:                                MIPS Options.       (line  617)
  * mimpure-text:                          Solaris 2 Options.  (line   15)
  * mincoming-stack-boundary:              x86 Options.        (line  742)
! * mindexed-loads:                        ARC Options.        (line  481)
  * mindirect-branch:                      x86 Options.        (line 1377)
  * mindirect-branch-register:             x86 Options.        (line 1415)
  * minline-all-stringops:                 x86 Options.        (line 1224)
*************** look up both forms.
*** 62327,62340 ****
  * minrt:                                 MSP430 Options.     (line  115)
  * minrt <1>:                             PRU Options.        (line    9)
  * minsert-sched-nops:                    RS/6000 and PowerPC Options.
!                                                              (line  485)
  * minstrument-return:                    x86 Options.        (line 1312)
  * mint-register:                         RX Options.         (line  100)
  * mint16:                                PDP-11 Options.     (line   33)
  * mint32:                                CR16 Options.       (line   22)
  * mint32 <1>:                            H8/300 Options.     (line   38)
  * mint32 <2>:                            PDP-11 Options.     (line   37)
! * mint8:                                 AVR Options.        (line  213)
  * minterlink-compressed:                 MIPS Options.       (line  135)
  * minterlink-mips16:                     MIPS Options.       (line  147)
  * mio-volatile:                          MeP Options.        (line   74)
--- 62369,62382 ----
  * minrt:                                 MSP430 Options.     (line  115)
  * minrt <1>:                             PRU Options.        (line    9)
  * minsert-sched-nops:                    RS/6000 and PowerPC Options.
!                                                              (line  484)
  * minstrument-return:                    x86 Options.        (line 1312)
  * mint-register:                         RX Options.         (line  100)
  * mint16:                                PDP-11 Options.     (line   33)
  * mint32:                                CR16 Options.       (line   22)
  * mint32 <1>:                            H8/300 Options.     (line   38)
  * mint32 <2>:                            PDP-11 Options.     (line   37)
! * mint8:                                 AVR Options.        (line  211)
  * minterlink-compressed:                 MIPS Options.       (line  135)
  * minterlink-mips16:                     MIPS Options.       (line  147)
  * mio-volatile:                          MeP Options.        (line   74)
*************** look up both forms.
*** 62381,62391 ****
  * mlibrary-pic:                          FRV Options.        (line  135)
  * mlinked-fp:                            FRV Options.        (line  116)
  * mlinker-opt:                           HPPA Options.       (line   85)
! * mlinux:                                CRIS Options.       (line   91)
  * mlittle:                               RS/6000 and PowerPC Options.
!                                                              (line  434)
  * mlittle-endian:                        AArch64 Options.    (line   30)
! * mlittle-endian <1>:                    ARC Options.        (line  605)
  * mlittle-endian <2>:                    ARM Options.        (line   63)
  * mlittle-endian <3>:                    C6X Options.        (line   16)
  * mlittle-endian <4>:                    C-SKY Options.      (line   30)
--- 62423,62433 ----
  * mlibrary-pic:                          FRV Options.        (line  135)
  * mlinked-fp:                            FRV Options.        (line  116)
  * mlinker-opt:                           HPPA Options.       (line   85)
! * mlinux:                                CRIS Options.       (line   90)
  * mlittle:                               RS/6000 and PowerPC Options.
!                                                              (line  433)
  * mlittle-endian:                        AArch64 Options.    (line   30)
! * mlittle-endian <1>:                    ARC Options.        (line  601)
  * mlittle-endian <2>:                    ARM Options.        (line   63)
  * mlittle-endian <3>:                    C6X Options.        (line   16)
  * mlittle-endian <4>:                    C-SKY Options.      (line   30)
*************** look up both forms.
*** 62395,62401 ****
  * mlittle-endian <8>:                    MicroBlaze Options. (line   59)
  * mlittle-endian <9>:                    NDS32 Options.      (line   12)
  * mlittle-endian <10>:                   RS/6000 and PowerPC Options.
!                                                              (line  434)
  * mlittle-endian <11>:                   TILE-Gx Options.    (line   29)
  * mlittle-endian-data:                   RX Options.         (line   42)
  * mliw:                                  MN10300 Options.    (line   54)
--- 62437,62443 ----
  * mlittle-endian <8>:                    MicroBlaze Options. (line   59)
  * mlittle-endian <9>:                    NDS32 Options.      (line   12)
  * mlittle-endian <10>:                   RS/6000 and PowerPC Options.
!                                                              (line  433)
  * mlittle-endian <11>:                   TILE-Gx Options.    (line   29)
  * mlittle-endian-data:                   RX Options.         (line   42)
  * mliw:                                  MN10300 Options.    (line   54)
*************** look up both forms.
*** 62406,62419 ****
  * mlock:                                 ARC Options.        (line  345)
  * mlong-calls:                           Adapteva Epiphany Options.
                                                               (line   55)
! * mlong-calls <1>:                       ARC Options.        (line  404)
  * mlong-calls <2>:                       ARM Options.        (line  755)
  * mlong-calls <3>:                       Blackfin Options.   (line  118)
  * mlong-calls <4>:                       FRV Options.        (line  122)
  * mlong-calls <5>:                       HPPA Options.       (line  136)
  * mlong-calls <6>:                       MIPS Options.       (line  603)
  * mlong-calls <7>:                       V850 Options.       (line   10)
! * mlong-double:                          AVR Options.        (line  195)
  * mlong-double-128:                      S/390 and zSeries Options.
                                                               (line   29)
  * mlong-double-128 <1>:                  x86 Options.        (line  610)
--- 62448,62461 ----
  * mlock:                                 ARC Options.        (line  345)
  * mlong-calls:                           Adapteva Epiphany Options.
                                                               (line   55)
! * mlong-calls <1>:                       ARC Options.        (line  402)
  * mlong-calls <2>:                       ARM Options.        (line  755)
  * mlong-calls <3>:                       Blackfin Options.   (line  118)
  * mlong-calls <4>:                       FRV Options.        (line  122)
  * mlong-calls <5>:                       HPPA Options.       (line  136)
  * mlong-calls <6>:                       MIPS Options.       (line  603)
  * mlong-calls <7>:                       V850 Options.       (line   10)
! * mlong-double:                          AVR Options.        (line  194)
  * mlong-double-128:                      S/390 and zSeries Options.
                                                               (line   29)
  * mlong-double-128 <1>:                  x86 Options.        (line  610)
*************** look up both forms.
*** 62427,62433 ****
  * mlong32:                               MIPS Options.       (line  443)
  * mlong64:                               MIPS Options.       (line  438)
  * mlongcall:                             RS/6000 and PowerPC Options.
!                                                              (line  728)
  * mlongcalls:                            Xtensa Options.     (line   87)
  * mloongson-ext:                         MIPS Options.       (line  430)
  * mloongson-ext2:                        MIPS Options.       (line  434)
--- 62469,62475 ----
  * mlong32:                               MIPS Options.       (line  443)
  * mlong64:                               MIPS Options.       (line  438)
  * mlongcall:                             RS/6000 and PowerPC Options.
!                                                              (line  727)
  * mlongcalls:                            Xtensa Options.     (line   87)
  * mloongson-ext:                         MIPS Options.       (line  430)
  * mloongson-ext2:                        MIPS Options.       (line  434)
*************** look up both forms.
*** 62440,62452 ****
  * mlow64k:                               Blackfin Options.   (line   67)
  * mlp64:                                 IA-64 Options.      (line  121)
  * mlpc-width:                            ARC Options.        (line  313)
! * mlra:                                  ARC Options.        (line  488)
  * mlra <1>:                              FT32 Options.       (line   16)
  * mlra <2>:                              PDP-11 Options.     (line   52)
  * mlra <3>:                              SPARC Options.      (line  111)
! * mlra-priority-compact:                 ARC Options.        (line  496)
! * mlra-priority-noncompact:              ARC Options.        (line  499)
! * mlra-priority-none:                    ARC Options.        (line  493)
  * mlwp:                                  x86 Options.        (line  806)
  * mlxc1-sxc1:                            MIPS Options.       (line  895)
  * mlzcnt:                                x86 Options.        (line  814)
--- 62482,62494 ----
  * mlow64k:                               Blackfin Options.   (line   67)
  * mlp64:                                 IA-64 Options.      (line  121)
  * mlpc-width:                            ARC Options.        (line  313)
! * mlra:                                  ARC Options.        (line  486)
  * mlra <1>:                              FT32 Options.       (line   16)
  * mlra <2>:                              PDP-11 Options.     (line   52)
  * mlra <3>:                              SPARC Options.      (line  111)
! * mlra-priority-compact:                 ARC Options.        (line  494)
! * mlra-priority-noncompact:              ARC Options.        (line  497)
! * mlra-priority-none:                    ARC Options.        (line  491)
  * mlwp:                                  x86 Options.        (line  806)
  * mlxc1-sxc1:                            MIPS Options.       (line  895)
  * mlzcnt:                                x86 Options.        (line  814)
*************** look up both forms.
*** 62457,62473 ****
  * mmac <1>:                              Score Options.      (line   21)
  * mmac-24:                               ARC Options.        (line  354)
  * mmac-d16:                              ARC Options.        (line  350)
! * mmac_24:                               ARC Options.        (line  628)
! * mmac_d16:                              ARC Options.        (line  631)
  * mmad:                                  MIPS Options.       (line  612)
  * mmadd4:                                MIPS Options.       (line  900)
! * mmain-is-OS_task:                      AVR Options.        (line  219)
  * mmainkernel:                           Nvidia PTX Options. (line   18)
  * mmalloc64:                             VMS Options.        (line   17)
  * mmanual-endbr:                         x86 Options.        (line 1053)
  * mmax:                                  DEC Alpha Options.  (line  163)
  * mmax-constant-size:                    RX Options.         (line   82)
! * mmax-stack-frame:                      CRIS Options.       (line   23)
  * mmcount-ra-address:                    MIPS Options.       (line  872)
  * mmcu:                                  AVR Options.        (line    9)
  * mmcu <1>:                              MIPS Options.       (line  399)
--- 62499,62515 ----
  * mmac <1>:                              Score Options.      (line   21)
  * mmac-24:                               ARC Options.        (line  354)
  * mmac-d16:                              ARC Options.        (line  350)
! * mmac_24:                               ARC Options.        (line  623)
! * mmac_d16:                              ARC Options.        (line  626)
  * mmad:                                  MIPS Options.       (line  612)
  * mmadd4:                                MIPS Options.       (line  900)
! * mmain-is-OS_task:                      AVR Options.        (line  217)
  * mmainkernel:                           Nvidia PTX Options. (line   18)
  * mmalloc64:                             VMS Options.        (line   17)
  * mmanual-endbr:                         x86 Options.        (line 1053)
  * mmax:                                  DEC Alpha Options.  (line  163)
  * mmax-constant-size:                    RX Options.         (line   82)
! * mmax-stack-frame:                      CRIS Options.       (line   22)
  * mmcount-ra-address:                    MIPS Options.       (line  872)
  * mmcu:                                  AVR Options.        (line    9)
  * mmcu <1>:                              MIPS Options.       (line  399)
*************** look up both forms.
*** 62476,62482 ****
  * MMD:                                   Preprocessor Options.
                                                               (line  185)
  * mmedia:                                FRV Options.        (line   56)
! * mmedium-calls:                         ARC Options.        (line  408)
  * mmemcpy:                               MicroBlaze Options. (line   13)
  * mmemcpy <1>:                           MIPS Options.       (line  597)
  * mmemcpy-strategy=STRATEGY:             x86 Options.        (line 1254)
--- 62518,62524 ----
  * MMD:                                   Preprocessor Options.
                                                               (line  185)
  * mmedia:                                FRV Options.        (line   56)
! * mmedium-calls:                         ARC Options.        (line  406)
  * mmemcpy:                               MicroBlaze Options. (line   13)
  * mmemcpy <1>:                           MIPS Options.       (line  597)
  * mmemcpy-strategy=STRATEGY:             x86 Options.        (line 1254)
*************** look up both forms.
*** 62486,62498 ****
  * mmfcrf:                                RS/6000 and PowerPC Options.
                                                               (line   25)
  * mmicromips:                            MIPS Options.       (line  387)
! * mmillicode:                            ARC Options.        (line  502)
  * mminimal-toc:                          RS/6000 and PowerPC Options.
!                                                              (line  256)
  * mminmax:                               MeP Options.        (line   87)
! * mmixed-code:                           ARC Options.        (line  516)
  * mmma:                                  RS/6000 and PowerPC Options.
!                                                              (line  944)
  * mmmx:                                  x86 Options.        (line  767)
  * mmodel=large:                          M32R/D Options.     (line   33)
  * mmodel=medium:                         M32R/D Options.     (line   27)
--- 62528,62540 ----
  * mmfcrf:                                RS/6000 and PowerPC Options.
                                                               (line   25)
  * mmicromips:                            MIPS Options.       (line  387)
! * mmillicode:                            ARC Options.        (line  500)
  * mminimal-toc:                          RS/6000 and PowerPC Options.
!                                                              (line  255)
  * mminmax:                               MeP Options.        (line   87)
! * mmixed-code:                           ARC Options.        (line  514)
  * mmma:                                  RS/6000 and PowerPC Options.
!                                                              (line  943)
  * mmmx:                                  x86 Options.        (line  767)
  * mmodel=large:                          M32R/D Options.     (line   33)
  * mmodel=medium:                         M32R/D Options.     (line   27)
*************** look up both forms.
*** 62506,62534 ****
  * mms-bitfields:                         x86 Options.        (line 1099)
  * mmt:                                   MIPS Options.       (line  395)
  * mmul:                                  RL78 Options.       (line   15)
! * mmul-bug-workaround:                   CRIS Options.       (line   32)
  * mmul.x:                                Moxie Options.      (line   14)
  * mmul32x16:                             ARC Options.        (line  121)
  * mmul64:                                ARC Options.        (line  124)
  * mmuladd:                               FRV Options.        (line   64)
  * mmulhw:                                RS/6000 and PowerPC Options.
!                                                              (line  378)
  * mmult:                                 MeP Options.        (line   90)
  * mmult-bug:                             MN10300 Options.    (line    9)
! * mmultcost:                             ARC Options.        (line  578)
  * mmulti-cond-exec:                      FRV Options.        (line  215)
  * mmulticore:                            Blackfin Options.   (line  139)
  * mmultiple:                             RS/6000 and PowerPC Options.
!                                                              (line  339)
  * mmultiple-stld:                        C-SKY Options.      (line  121)
  * mmusl:                                 GNU/Linux Options.  (line   18)
  * mmvcle:                                S/390 and zSeries Options.
                                                               (line  138)
  * mmvme:                                 RS/6000 and PowerPC Options.
!                                                              (line  609)
  * mmwaitx:                               x86 Options.        (line  823)
  * mn:                                    H8/300 Options.     (line   20)
! * mn-flash:                              AVR Options.        (line  224)
  * mnan=2008:                             MIPS Options.       (line  320)
  * mnan=legacy:                           MIPS Options.       (line  320)
  * mneon-for-64bits:                      ARM Options.        (line  912)
--- 62548,62576 ----
  * mms-bitfields:                         x86 Options.        (line 1099)
  * mmt:                                   MIPS Options.       (line  395)
  * mmul:                                  RL78 Options.       (line   15)
! * mmul-bug-workaround:                   CRIS Options.       (line   31)
  * mmul.x:                                Moxie Options.      (line   14)
  * mmul32x16:                             ARC Options.        (line  121)
  * mmul64:                                ARC Options.        (line  124)
  * mmuladd:                               FRV Options.        (line   64)
  * mmulhw:                                RS/6000 and PowerPC Options.
!                                                              (line  377)
  * mmult:                                 MeP Options.        (line   90)
  * mmult-bug:                             MN10300 Options.    (line    9)
! * mmultcost:                             ARC Options.        (line  576)
  * mmulti-cond-exec:                      FRV Options.        (line  215)
  * mmulticore:                            Blackfin Options.   (line  139)
  * mmultiple:                             RS/6000 and PowerPC Options.
!                                                              (line  338)
  * mmultiple-stld:                        C-SKY Options.      (line  121)
  * mmusl:                                 GNU/Linux Options.  (line   18)
  * mmvcle:                                S/390 and zSeries Options.
                                                               (line  138)
  * mmvme:                                 RS/6000 and PowerPC Options.
!                                                              (line  608)
  * mmwaitx:                               x86 Options.        (line  823)
  * mn:                                    H8/300 Options.     (line   20)
! * mn-flash:                              AVR Options.        (line  222)
  * mnan=2008:                             MIPS Options.       (line  320)
  * mnan=legacy:                           MIPS Options.       (line  320)
  * mneon-for-64bits:                      ARM Options.        (line  912)
*************** look up both forms.
*** 62553,62568 ****
  * mno-as100-syntax:                      RX Options.         (line   76)
  * mno-auto-litpools:                     Xtensa Options.     (line   60)
  * mno-avoid-indexed-addresses:           RS/6000 and PowerPC Options.
!                                                              (line  360)
  * mno-backchain:                         S/390 and zSeries Options.
                                                               (line   35)
  * mno-base-addresses:                    MMIX Options.       (line   53)
  * mno-bit-align:                         RS/6000 and PowerPC Options.
!                                                              (line  392)
  * mno-bitfield:                          M680x0 Options.     (line  227)
  * mno-branch-likely:                     MIPS Options.       (line  792)
  * mno-branch-predict:                    MMIX Options.       (line   48)
! * mno-brcc:                              ARC Options.        (line  444)
  * mno-bwx:                               DEC Alpha Options.  (line  163)
  * mno-bypass-cache:                      Nios II Options.    (line  103)
  * mno-cache-volatile:                    Nios II Options.    (line  109)
--- 62595,62610 ----
  * mno-as100-syntax:                      RX Options.         (line   76)
  * mno-auto-litpools:                     Xtensa Options.     (line   60)
  * mno-avoid-indexed-addresses:           RS/6000 and PowerPC Options.
!                                                              (line  359)
  * mno-backchain:                         S/390 and zSeries Options.
                                                               (line   35)
  * mno-base-addresses:                    MMIX Options.       (line   53)
  * mno-bit-align:                         RS/6000 and PowerPC Options.
!                                                              (line  391)
  * mno-bitfield:                          M680x0 Options.     (line  227)
  * mno-branch-likely:                     MIPS Options.       (line  792)
  * mno-branch-predict:                    MMIX Options.       (line   48)
! * mno-brcc:                              ARC Options.        (line  442)
  * mno-bwx:                               DEC Alpha Options.  (line  163)
  * mno-bypass-cache:                      Nios II Options.    (line  103)
  * mno-cache-volatile:                    Nios II Options.    (line  109)
*************** look up both forms.
*** 62575,62584 ****
  * mno-cmov:                              NDS32 Options.      (line   24)
  * mno-cmpb:                              RS/6000 and PowerPC Options.
                                                               (line   25)
! * mno-cond-exec:                         ARC Options.        (line  458)
  * mno-cond-exec <1>:                     FRV Options.        (line  194)
  * mno-cond-move:                         FRV Options.        (line  166)
! * mno-const-align:                       CRIS Options.       (line   55)
  * mno-const16:                           Xtensa Options.     (line   10)
  * mno-crc:                               MIPS Options.       (line  416)
  * mno-crt0:                              MN10300 Options.    (line   43)
--- 62617,62626 ----
  * mno-cmov:                              NDS32 Options.      (line   24)
  * mno-cmpb:                              RS/6000 and PowerPC Options.
                                                               (line   25)
! * mno-cond-exec:                         ARC Options.        (line  456)
  * mno-cond-exec <1>:                     FRV Options.        (line  194)
  * mno-cond-move:                         FRV Options.        (line  166)
! * mno-const-align:                       CRIS Options.       (line   54)
  * mno-const16:                           Xtensa Options.     (line   10)
  * mno-crc:                               MIPS Options.       (line  416)
  * mno-crt0:                              MN10300 Options.    (line   43)
*************** look up both forms.
*** 62587,62593 ****
                                                               (line  177)
  * mno-csync-anomaly:                     Blackfin Options.   (line   63)
  * mno-custom-INSN:                       Nios II Options.    (line  139)
! * mno-data-align:                        CRIS Options.       (line   55)
  * mno-debug:                             S/390 and zSeries Options.
                                                               (line  144)
  * mno-default:                           x86 Options.        (line  888)
--- 62629,62635 ----
                                                               (line  177)
  * mno-csync-anomaly:                     Blackfin Options.   (line   63)
  * mno-custom-INSN:                       Nios II Options.    (line  139)
! * mno-data-align:                        CRIS Options.       (line   54)
  * mno-debug:                             S/390 and zSeries Options.
                                                               (line  144)
  * mno-default:                           x86 Options.        (line  888)
*************** look up both forms.
*** 62595,62601 ****
  * mno-div:                               M680x0 Options.     (line  206)
  * mno-div <1>:                           MCore Options.      (line   15)
  * mno-dlmzb:                             RS/6000 and PowerPC Options.
!                                                              (line  385)
  * mno-double:                            FRV Options.        (line   52)
  * mno-dpfp-lrsr:                         ARC Options.        (line  108)
  * mno-dsp:                               MIPS Options.       (line  353)
--- 62637,62643 ----
  * mno-div:                               M680x0 Options.     (line  206)
  * mno-div <1>:                           MCore Options.      (line   15)
  * mno-dlmzb:                             RS/6000 and PowerPC Options.
!                                                              (line  384)
  * mno-double:                            FRV Options.        (line   52)
  * mno-dpfp-lrsr:                         ARC Options.        (line  108)
  * mno-dsp:                               MIPS Options.       (line  353)
*************** look up both forms.
*** 62603,62609 ****
  * mno-dwarf2-asm:                        IA-64 Options.      (line   94)
  * mno-dword:                             FRV Options.        (line   44)
  * mno-eabi:                              RS/6000 and PowerPC Options.
!                                                              (line  633)
  * mno-early-stop-bits:                   IA-64 Options.      (line  100)
  * mno-eflags:                            FRV Options.        (line  155)
  * mno-embedded-data:                     MIPS Options.       (line  517)
--- 62645,62651 ----
  * mno-dwarf2-asm:                        IA-64 Options.      (line   94)
  * mno-dword:                             FRV Options.        (line   44)
  * mno-eabi:                              RS/6000 and PowerPC Options.
!                                                              (line  632)
  * mno-early-stop-bits:                   IA-64 Options.      (line  100)
  * mno-eflags:                            FRV Options.        (line  155)
  * mno-embedded-data:                     MIPS Options.       (line  517)
*************** look up both forms.
*** 62620,62626 ****
  * mno-fancy-math-387:                    x86 Options.        (line  559)
  * mno-fast-sw-div:                       Nios II Options.    (line  115)
  * mno-faster-structs:                    SPARC Options.      (line   91)
! * mno-fdpic:                             ARM Options.        (line  957)
  * mno-fix:                               DEC Alpha Options.  (line  163)
  * mno-fix-24k:                           MIPS Options.       (line  641)
  * mno-fix-cortex-a53-835769:             AArch64 Options.    (line  105)
--- 62662,62668 ----
  * mno-fancy-math-387:                    x86 Options.        (line  559)
  * mno-fast-sw-div:                       Nios II Options.    (line  115)
  * mno-faster-structs:                    SPARC Options.      (line   91)
! * mno-fdpic:                             ARM Options.        (line  965)
  * mno-fix:                               DEC Alpha Options.  (line  163)
  * mno-fix-24k:                           MIPS Options.       (line  641)
  * mno-fix-cortex-a53-835769:             AArch64 Options.    (line  105)
*************** look up both forms.
*** 62633,62644 ****
  * mno-float128:                          RS/6000 and PowerPC Options.
                                                               (line  214)
  * mno-float128-hardware:                 RS/6000 and PowerPC Options.
!                                                              (line  236)
  * mno-flush-func:                        M32R/D Options.     (line   98)
  * mno-flush-trap:                        M32R/D Options.     (line   90)
  * mno-fmaf:                              SPARC Options.      (line  267)
  * mno-fp-in-toc:                         RS/6000 and PowerPC Options.
!                                                              (line  256)
  * mno-fp-regs:                           DEC Alpha Options.  (line   25)
  * mno-fp-ret-in-387:                     x86 Options.        (line  549)
  * mno-fprnd:                             RS/6000 and PowerPC Options.
--- 62675,62686 ----
  * mno-float128:                          RS/6000 and PowerPC Options.
                                                               (line  214)
  * mno-float128-hardware:                 RS/6000 and PowerPC Options.
!                                                              (line  235)
  * mno-flush-func:                        M32R/D Options.     (line   98)
  * mno-flush-trap:                        M32R/D Options.     (line   90)
  * mno-fmaf:                              SPARC Options.      (line  267)
  * mno-fp-in-toc:                         RS/6000 and PowerPC Options.
!                                                              (line  255)
  * mno-fp-regs:                           DEC Alpha Options.  (line   25)
  * mno-fp-ret-in-387:                     x86 Options.        (line  549)
  * mno-fprnd:                             RS/6000 and PowerPC Options.
*************** look up both forms.
*** 62651,62657 ****
  * mno-fused-madd:                        IA-64 Options.      (line   88)
  * mno-fused-madd <1>:                    MIPS Options.       (line  624)
  * mno-fused-madd <2>:                    RS/6000 and PowerPC Options.
!                                                              (line  369)
  * mno-fused-madd <3>:                    S/390 and zSeries Options.
                                                               (line  182)
  * mno-fused-madd <4>:                    SH Options.         (line  356)
--- 62693,62699 ----
  * mno-fused-madd:                        IA-64 Options.      (line   88)
  * mno-fused-madd <1>:                    MIPS Options.       (line  624)
  * mno-fused-madd <2>:                    RS/6000 and PowerPC Options.
!                                                              (line  368)
  * mno-fused-madd <3>:                    S/390 and zSeries Options.
                                                               (line  182)
  * mno-fused-madd <4>:                    SH Options.         (line  356)
*************** look up both forms.
*** 62659,62667 ****
  * mno-ginv:                              MIPS Options.       (line  421)
  * mno-gnu-as:                            IA-64 Options.      (line   18)
  * mno-gnu-attribute:                     RS/6000 and PowerPC Options.
!                                                              (line  587)
  * mno-gnu-ld:                            IA-64 Options.      (line   23)
! * mno-gotplt:                            CRIS Options.       (line   81)
  * mno-gpopt:                             MIPS Options.       (line  502)
  * mno-gpopt <1>:                         Nios II Options.    (line   16)
  * mno-hard-dfp:                          RS/6000 and PowerPC Options.
--- 62701,62709 ----
  * mno-ginv:                              MIPS Options.       (line  421)
  * mno-gnu-as:                            IA-64 Options.      (line   18)
  * mno-gnu-attribute:                     RS/6000 and PowerPC Options.
!                                                              (line  586)
  * mno-gnu-ld:                            IA-64 Options.      (line   23)
! * mno-gotplt:                            CRIS Options.       (line   80)
  * mno-gpopt:                             MIPS Options.       (line  502)
  * mno-gpopt <1>:                         Nios II Options.    (line   16)
  * mno-hard-dfp:                          RS/6000 and PowerPC Options.
*************** look up both forms.
*** 62687,62693 ****
  * mno-int32:                             PDP-11 Options.     (line   33)
  * mno-interlink-compressed:              MIPS Options.       (line  135)
  * mno-interlink-mips16:                  MIPS Options.       (line  147)
! * mno-interrupts:                        AVR Options.        (line  227)
  * mno-isel:                              RS/6000 and PowerPC Options.
                                                               (line  166)
  * mno-jsr:                               RX Options.         (line  169)
--- 62729,62735 ----
  * mno-int32:                             PDP-11 Options.     (line   33)
  * mno-interlink-compressed:              MIPS Options.       (line  135)
  * mno-interlink-mips16:                  MIPS Options.       (line  147)
! * mno-interrupts:                        AVR Options.        (line  225)
  * mno-isel:                              RS/6000 and PowerPC Options.
                                                               (line  166)
  * mno-jsr:                               RX Options.         (line  169)
*************** look up both forms.
*** 62705,62711 ****
  * mno-long-calls <4>:                    V850 Options.       (line   10)
  * mno-long-jumps:                        V850 Options.       (line  108)
  * mno-longcall:                          RS/6000 and PowerPC Options.
!                                                              (line  728)
  * mno-longcalls:                         Xtensa Options.     (line   87)
  * mno-loongson-ext:                      MIPS Options.       (line  430)
  * mno-loongson-ext2:                     MIPS Options.       (line  434)
--- 62747,62753 ----
  * mno-long-calls <4>:                    V850 Options.       (line   10)
  * mno-long-jumps:                        V850 Options.       (line  108)
  * mno-longcall:                          RS/6000 and PowerPC Options.
!                                                              (line  727)
  * mno-longcalls:                         Xtensa Options.     (line   87)
  * mno-loongson-ext:                      MIPS Options.       (line  430)
  * mno-loongson-ext2:                     MIPS Options.       (line  434)
*************** look up both forms.
*** 62729,62747 ****
  * mno-mips16:                            MIPS Options.       (line  120)
  * mno-mips3d:                            MIPS Options.       (line  382)
  * mno-mma:                               RS/6000 and PowerPC Options.
!                                                              (line  944)
  * mno-mmicromips:                        MIPS Options.       (line  387)
  * mno-mpy:                               ARC Options.        (line  117)
  * mno-ms-bitfields:                      x86 Options.        (line 1099)
  * mno-mt:                                MIPS Options.       (line  395)
! * mno-mul-bug-workaround:                CRIS Options.       (line   32)
  * mno-muladd:                            FRV Options.        (line   68)
  * mno-mulhw:                             RS/6000 and PowerPC Options.
!                                                              (line  378)
  * mno-mult-bug:                          MN10300 Options.    (line   13)
  * mno-multi-cond-exec:                   FRV Options.        (line  223)
  * mno-multiple:                          RS/6000 and PowerPC Options.
!                                                              (line  339)
  * mno-mvcle:                             S/390 and zSeries Options.
                                                               (line  138)
  * mno-nested-cond-exec:                  FRV Options.        (line  237)
--- 62771,62789 ----
  * mno-mips16:                            MIPS Options.       (line  120)
  * mno-mips3d:                            MIPS Options.       (line  382)
  * mno-mma:                               RS/6000 and PowerPC Options.
!                                                              (line  943)
  * mno-mmicromips:                        MIPS Options.       (line  387)
  * mno-mpy:                               ARC Options.        (line  117)
  * mno-ms-bitfields:                      x86 Options.        (line 1099)
  * mno-mt:                                MIPS Options.       (line  395)
! * mno-mul-bug-workaround:                CRIS Options.       (line   31)
  * mno-muladd:                            FRV Options.        (line   68)
  * mno-mulhw:                             RS/6000 and PowerPC Options.
!                                                              (line  377)
  * mno-mult-bug:                          MN10300 Options.    (line   13)
  * mno-multi-cond-exec:                   FRV Options.        (line  223)
  * mno-multiple:                          RS/6000 and PowerPC Options.
!                                                              (line  338)
  * mno-mvcle:                             S/390 and zSeries Options.
                                                               (line  138)
  * mno-nested-cond-exec:                  FRV Options.        (line  237)
*************** look up both forms.
*** 62753,62766 ****
  * mno-packed-stack:                      S/390 and zSeries Options.
                                                               (line   54)
  * mno-paired-single:                     MIPS Options.       (line  370)
! * mno-pc-relative-literal-loads:         AArch64 Options.    (line  262)
  * mno-pcrel:                             RS/6000 and PowerPC Options.
!                                                              (line  932)
  * mno-pic:                               IA-64 Options.      (line   26)
  * mno-pid:                               RX Options.         (line  117)
  * mno-plt:                               MIPS Options.       (line  219)
  * mno-pltseq:                            RS/6000 and PowerPC Options.
!                                                              (line  765)
  * mno-popc:                              SPARC Options.      (line  281)
  * mno-popcntb:                           RS/6000 and PowerPC Options.
                                                               (line   25)
--- 62795,62808 ----
  * mno-packed-stack:                      S/390 and zSeries Options.
                                                               (line   54)
  * mno-paired-single:                     MIPS Options.       (line  370)
! * mno-pc-relative-literal-loads:         AArch64 Options.    (line  281)
  * mno-pcrel:                             RS/6000 and PowerPC Options.
!                                                              (line  931)
  * mno-pic:                               IA-64 Options.      (line   26)
  * mno-pid:                               RX Options.         (line  117)
  * mno-plt:                               MIPS Options.       (line  219)
  * mno-pltseq:                            RS/6000 and PowerPC Options.
!                                                              (line  764)
  * mno-popc:                              SPARC Options.      (line  281)
  * mno-popcntb:                           RS/6000 and PowerPC Options.
                                                               (line   25)
*************** look up both forms.
*** 62781,62809 ****
  * mno-powerpc64:                         RS/6000 and PowerPC Options.
                                                               (line   25)
  * mno-prefixed:                          RS/6000 and PowerPC Options.
!                                                              (line  939)
  * mno-prolog-function:                   V850 Options.       (line   23)
! * mno-prologue-epilogue:                 CRIS Options.       (line   71)
  * mno-prototype:                         RS/6000 and PowerPC Options.
!                                                              (line  593)
  * mno-push-args:                         x86 Options.        (line 1076)
  * mno-quad-memory:                       RS/6000 and PowerPC Options.
                                                               (line  202)
  * mno-quad-memory-atomic:                RS/6000 and PowerPC Options.
                                                               (line  208)
  * mno-readonly-in-sdata:                 RS/6000 and PowerPC Options.
!                                                              (line  684)
  * mno-red-zone:                          x86 Options.        (line 1445)
  * mno-register-names:                    IA-64 Options.      (line   37)
  * mno-regnames:                          RS/6000 and PowerPC Options.
!                                                              (line  722)
  * mno-relax:                             PRU Options.        (line   21)
  * mno-relax <1>:                         V850 Options.       (line  103)
  * mno-relax-immediate:                   MCore Options.      (line   19)
  * mno-relocatable:                       RS/6000 and PowerPC Options.
!                                                              (line  408)
  * mno-relocatable-lib:                   RS/6000 and PowerPC Options.
!                                                              (line  419)
  * mno-renesas:                           SH Options.         (line  155)
  * mno-round-nearest:                     Adapteva Epiphany Options.
                                                               (line   51)
--- 62823,62851 ----
  * mno-powerpc64:                         RS/6000 and PowerPC Options.
                                                               (line   25)
  * mno-prefixed:                          RS/6000 and PowerPC Options.
!                                                              (line  937)
  * mno-prolog-function:                   V850 Options.       (line   23)
! * mno-prologue-epilogue:                 CRIS Options.       (line   70)
  * mno-prototype:                         RS/6000 and PowerPC Options.
!                                                              (line  592)
  * mno-push-args:                         x86 Options.        (line 1076)
  * mno-quad-memory:                       RS/6000 and PowerPC Options.
                                                               (line  202)
  * mno-quad-memory-atomic:                RS/6000 and PowerPC Options.
                                                               (line  208)
  * mno-readonly-in-sdata:                 RS/6000 and PowerPC Options.
!                                                              (line  683)
  * mno-red-zone:                          x86 Options.        (line 1445)
  * mno-register-names:                    IA-64 Options.      (line   37)
  * mno-regnames:                          RS/6000 and PowerPC Options.
!                                                              (line  721)
  * mno-relax:                             PRU Options.        (line   21)
  * mno-relax <1>:                         V850 Options.       (line  103)
  * mno-relax-immediate:                   MCore Options.      (line   19)
  * mno-relocatable:                       RS/6000 and PowerPC Options.
!                                                              (line  407)
  * mno-relocatable-lib:                   RS/6000 and PowerPC Options.
!                                                              (line  418)
  * mno-renesas:                           SH Options.         (line  155)
  * mno-round-nearest:                     Adapteva Epiphany Options.
                                                               (line   51)
*************** look up both forms.
*** 62819,62833 ****
  * mno-sched-prefer-non-control-spec-insns: IA-64 Options.    (line  178)
  * mno-sched-prefer-non-data-spec-insns:  IA-64 Options.      (line  171)
  * mno-sched-prolog:                      ARM Options.        (line   32)
! * mno-sdata:                             ARC Options.        (line  422)
  * mno-sdata <1>:                         IA-64 Options.      (line   42)
  * mno-sdata <2>:                         RS/6000 and PowerPC Options.
!                                                              (line  679)
  * mno-sep-data:                          Blackfin Options.   (line  113)
  * mno-serialize-volatile:                Xtensa Options.     (line   35)
  * mno-setlb:                             MN10300 Options.    (line   69)
  * mno-short:                             M680x0 Options.     (line  222)
! * mno-side-effects:                      CRIS Options.       (line   46)
  * mno-sim:                               RX Options.         (line   71)
  * mno-single-exit:                       MMIX Options.       (line   65)
  * mno-slow-bytes:                        MCore Options.      (line   35)
--- 62861,62875 ----
  * mno-sched-prefer-non-control-spec-insns: IA-64 Options.    (line  178)
  * mno-sched-prefer-non-data-spec-insns:  IA-64 Options.      (line  171)
  * mno-sched-prolog:                      ARM Options.        (line   32)
! * mno-sdata:                             ARC Options.        (line  420)
  * mno-sdata <1>:                         IA-64 Options.      (line   42)
  * mno-sdata <2>:                         RS/6000 and PowerPC Options.
!                                                              (line  678)
  * mno-sep-data:                          Blackfin Options.   (line  113)
  * mno-serialize-volatile:                Xtensa Options.     (line   35)
  * mno-setlb:                             MN10300 Options.    (line   69)
  * mno-short:                             M680x0 Options.     (line  222)
! * mno-side-effects:                      CRIS Options.       (line   45)
  * mno-sim:                               RX Options.         (line   71)
  * mno-single-exit:                       MMIX Options.       (line   65)
  * mno-slow-bytes:                        MCore Options.      (line   35)
*************** look up both forms.
*** 62842,62864 ****
  * mno-split-addresses:                   MIPS Options.       (line  555)
  * mno-split-lohi:                        Adapteva Epiphany Options.
                                                               (line  109)
! * mno-stack-align:                       CRIS Options.       (line   55)
  * mno-stack-bias:                        SPARC Options.      (line  372)
  * mno-std-struct-return:                 SPARC Options.      (line  102)
  * mno-strict-align:                      AArch64 Options.    (line   52)
  * mno-strict-align <1>:                  M680x0 Options.     (line  280)
  * mno-strict-align <2>:                  RS/6000 and PowerPC Options.
!                                                              (line  403)
  * mno-subxc:                             SPARC Options.      (line  288)
  * mno-sum-in-toc:                        RS/6000 and PowerPC Options.
!                                                              (line  256)
  * mno-sym32:                             MIPS Options.       (line  453)
  * mno-target-align:                      Xtensa Options.     (line   74)
  * mno-text-section-literals:             Xtensa Options.     (line   47)
  * mno-tls-markers:                       RS/6000 and PowerPC Options.
!                                                              (line  777)
  * mno-toc:                               RS/6000 and PowerPC Options.
!                                                              (line  428)
  * mno-toplevel-symbols:                  MMIX Options.       (line   39)
  * mno-tpf-trace:                         S/390 and zSeries Options.
                                                               (line  168)
--- 62884,62906 ----
  * mno-split-addresses:                   MIPS Options.       (line  555)
  * mno-split-lohi:                        Adapteva Epiphany Options.
                                                               (line  109)
! * mno-stack-align:                       CRIS Options.       (line   54)
  * mno-stack-bias:                        SPARC Options.      (line  372)
  * mno-std-struct-return:                 SPARC Options.      (line  102)
  * mno-strict-align:                      AArch64 Options.    (line   52)
  * mno-strict-align <1>:                  M680x0 Options.     (line  280)
  * mno-strict-align <2>:                  RS/6000 and PowerPC Options.
!                                                              (line  402)
  * mno-subxc:                             SPARC Options.      (line  288)
  * mno-sum-in-toc:                        RS/6000 and PowerPC Options.
!                                                              (line  255)
  * mno-sym32:                             MIPS Options.       (line  453)
  * mno-target-align:                      Xtensa Options.     (line   74)
  * mno-text-section-literals:             Xtensa Options.     (line   47)
  * mno-tls-markers:                       RS/6000 and PowerPC Options.
!                                                              (line  776)
  * mno-toc:                               RS/6000 and PowerPC Options.
!                                                              (line  427)
  * mno-toplevel-symbols:                  MMIX Options.       (line   39)
  * mno-tpf-trace:                         S/390 and zSeries Options.
                                                               (line  168)
*************** look up both forms.
*** 62868,62874 ****
  * mno-unaligned-doubles:                 SPARC Options.      (line   73)
  * mno-uninit-const-in-rodata:            MIPS Options.       (line  525)
  * mno-update:                            RS/6000 and PowerPC Options.
!                                                              (line  350)
  * mno-user-mode:                         SPARC Options.      (line   85)
  * mno-usermode:                          SH Options.         (line  274)
  * mno-v3push:                            NDS32 Options.      (line   48)
--- 62910,62916 ----
  * mno-unaligned-doubles:                 SPARC Options.      (line   73)
  * mno-uninit-const-in-rodata:            MIPS Options.       (line  525)
  * mno-update:                            RS/6000 and PowerPC Options.
!                                                              (line  349)
  * mno-user-mode:                         SPARC Options.      (line   85)
  * mno-usermode:                          SH Options.         (line  274)
  * mno-v3push:                            NDS32 Options.      (line   48)
*************** look up both forms.
*** 62883,62889 ****
  * mno-vis4b:                             SPARC Options.      (line  251)
  * mno-vliw-branch:                       FRV Options.        (line  208)
  * mno-volatile-asm-stop:                 IA-64 Options.      (line   32)
! * mno-volatile-cache:                    ARC Options.        (line  431)
  * mno-vrsave:                            RS/6000 and PowerPC Options.
                                                               (line  152)
  * mno-vsx:                               RS/6000 and PowerPC Options.
--- 62925,62931 ----
  * mno-vis4b:                             SPARC Options.      (line  251)
  * mno-vliw-branch:                       FRV Options.        (line  208)
  * mno-volatile-asm-stop:                 IA-64 Options.      (line   32)
! * mno-volatile-cache:                    ARC Options.        (line  429)
  * mno-vrsave:                            RS/6000 and PowerPC Options.
                                                               (line  152)
  * mno-vsx:                               RS/6000 and PowerPC Options.
*************** look up both forms.
*** 62897,62903 ****
  * mno-xgot:                              M680x0 Options.     (line  312)
  * mno-xgot <1>:                          MIPS Options.       (line  229)
  * mno-xl-compat:                         RS/6000 and PowerPC Options.
!                                                              (line  291)
  * mno-xpa:                               MIPS Options.       (line  411)
  * mno-zdcbranch:                         SH Options.         (line  341)
  * mno-zero-extend:                       MMIX Options.       (line   26)
--- 62939,62945 ----
  * mno-xgot:                              M680x0 Options.     (line  312)
  * mno-xgot <1>:                          MIPS Options.       (line  229)
  * mno-xl-compat:                         RS/6000 and PowerPC Options.
!                                                              (line  290)
  * mno-xpa:                               MIPS Options.       (line  411)
  * mno-zdcbranch:                         SH Options.         (line  341)
  * mno-zero-extend:                       MMIX Options.       (line   26)
*************** look up both forms.
*** 62921,62927 ****
  * moptimize:                             Nvidia PTX Options. (line   22)
  * moptimize-membar:                      FRV Options.        (line  244)
  * moptimize-membar <1>:                  FRV Options.        (line  249)
! * moverride:                             AArch64 Options.    (line  249)
  * MP:                                    Preprocessor Options.
                                                               (line  132)
  * mpa-risc-1-0:                          HPPA Options.       (line   19)
--- 62963,62969 ----
  * moptimize:                             Nvidia PTX Options. (line   22)
  * moptimize-membar:                      FRV Options.        (line  244)
  * moptimize-membar <1>:                  FRV Options.        (line  249)
! * moverride:                             AArch64 Options.    (line  268)
  * MP:                                    Preprocessor Options.
                                                               (line  132)
  * mpa-risc-1-0:                          HPPA Options.       (line   19)
*************** look up both forms.
*** 62932,62938 ****
                                                               (line   54)
  * mpadstruct:                            SH Options.         (line  189)
  * mpaired-single:                        MIPS Options.       (line  370)
! * mpc-relative-literal-loads:            AArch64 Options.    (line  262)
  * mpc32:                                 x86 Options.        (line  691)
  * mpc64:                                 x86 Options.        (line  691)
  * mpc80:                                 x86 Options.        (line  691)
--- 62974,62980 ----
                                                               (line   54)
  * mpadstruct:                            SH Options.         (line  189)
  * mpaired-single:                        MIPS Options.       (line  370)
! * mpc-relative-literal-loads:            AArch64 Options.    (line  281)
  * mpc32:                                 x86 Options.        (line  691)
  * mpc64:                                 x86 Options.        (line  691)
  * mpc80:                                 x86 Options.        (line  691)
*************** look up both forms.
*** 62940,62949 ****
  * mpconfig:                              x86 Options.        (line  797)
  * mpcrel:                                M680x0 Options.     (line  272)
  * mpcrel <1>:                            RS/6000 and PowerPC Options.
!                                                              (line  932)
! * mpdebug:                               CRIS Options.       (line   36)
  * mpe:                                   RS/6000 and PowerPC Options.
!                                                              (line  310)
  * mpe-aligned-commons:                   x86 Windows Options.
                                                               (line   59)
  * mpic-data-is-text-relative:            ARM Options.        (line  792)
--- 62982,62991 ----
  * mpconfig:                              x86 Options.        (line  797)
  * mpcrel:                                M680x0 Options.     (line  272)
  * mpcrel <1>:                            RS/6000 and PowerPC Options.
!                                                              (line  931)
! * mpdebug:                               CRIS Options.       (line   35)
  * mpe:                                   RS/6000 and PowerPC Options.
!                                                              (line  309)
  * mpe-aligned-commons:                   x86 Windows Options.
                                                               (line   59)
  * mpic-data-is-text-relative:            ARM Options.        (line  792)
*************** look up both forms.
*** 62953,62962 ****
  * mpku:                                  x86 Options.        (line  825)
  * mplt:                                  MIPS Options.       (line  219)
  * mpltseq:                               RS/6000 and PowerPC Options.
!                                                              (line  765)
  * mpointer-size=SIZE:                    VMS Options.        (line   20)
  * mpointers-to-nested-functions:         RS/6000 and PowerPC Options.
!                                                              (line  878)
  * mpoke-function-name:                   ARM Options.        (line  800)
  * mpopc:                                 SPARC Options.      (line  281)
  * mpopcnt:                               x86 Options.        (line  809)
--- 62995,63004 ----
  * mpku:                                  x86 Options.        (line  825)
  * mplt:                                  MIPS Options.       (line  219)
  * mpltseq:                               RS/6000 and PowerPC Options.
!                                                              (line  764)
  * mpointer-size=SIZE:                    VMS Options.        (line   20)
  * mpointers-to-nested-functions:         RS/6000 and PowerPC Options.
!                                                              (line  877)
  * mpoke-function-name:                   ARM Options.        (line  800)
  * mpopc:                                 SPARC Options.      (line  281)
  * mpopcnt:                               x86 Options.        (line  809)
*************** look up both forms.
*** 62988,63030 ****
  * mpreferred-stack-boundary <1>:         x86 Options.        (line  721)
  * mprefetchwt1:                          x86 Options.        (line  802)
  * mprefixed:                             RS/6000 and PowerPC Options.
!                                                              (line  939)
  * mpretend-cmove:                        SH Options.         (line  383)
  * mprfchw:                               x86 Options.        (line  800)
  * mprint-tune-info:                      ARM Options.        (line  933)
  * mprioritize-restricted-insns:          RS/6000 and PowerPC Options.
!                                                              (line  457)
  * mprolog-function:                      V850 Options.       (line   23)
! * mprologue-epilogue:                    CRIS Options.       (line   71)
  * mprototype:                            RS/6000 and PowerPC Options.
!                                                              (line  593)
  * mptwrite:                              x86 Options.        (line  793)
  * mpure-code:                            ARM Options.        (line  943)
  * mpush-args:                            x86 Options.        (line 1076)
  * mpushpop:                              C-SKY Options.      (line  114)
  * MQ:                                    Preprocessor Options.
                                                               (line  159)
! * mq-class:                              ARC Options.        (line  521)
  * mquad-memory:                          RS/6000 and PowerPC Options.
                                                               (line  202)
  * mquad-memory-atomic:                   RS/6000 and PowerPC Options.
                                                               (line  208)
  * mr0rel-sec:                            Nios II Options.    (line   76)
  * mr10k-cache-barrier:                   MIPS Options.       (line  714)
! * mRcq:                                  ARC Options.        (line  525)
! * mRcw:                                  ARC Options.        (line  529)
  * mrdpid:                                x86 Options.        (line  801)
  * mrdrnd:                                x86 Options.        (line  794)
  * mrdseed:                               x86 Options.        (line  803)
  * mreadonly-in-sdata:                    RS/6000 and PowerPC Options.
!                                                              (line  684)
  * mrecip:                                RS/6000 and PowerPC Options.
!                                                              (line  785)
  * mrecip <1>:                            x86 Options.        (line  966)
  * mrecip-precision:                      RS/6000 and PowerPC Options.
!                                                              (line  842)
  * mrecip=opt:                            RS/6000 and PowerPC Options.
!                                                              (line  798)
  * mrecip=opt <1>:                        x86 Options.        (line  988)
  * mrecord-mcount:                        x86 Options.        (line 1300)
  * mrecord-return:                        x86 Options.        (line 1320)
--- 63030,63072 ----
  * mpreferred-stack-boundary <1>:         x86 Options.        (line  721)
  * mprefetchwt1:                          x86 Options.        (line  802)
  * mprefixed:                             RS/6000 and PowerPC Options.
!                                                              (line  937)
  * mpretend-cmove:                        SH Options.         (line  383)
  * mprfchw:                               x86 Options.        (line  800)
  * mprint-tune-info:                      ARM Options.        (line  933)
  * mprioritize-restricted-insns:          RS/6000 and PowerPC Options.
!                                                              (line  456)
  * mprolog-function:                      V850 Options.       (line   23)
! * mprologue-epilogue:                    CRIS Options.       (line   70)
  * mprototype:                            RS/6000 and PowerPC Options.
!                                                              (line  592)
  * mptwrite:                              x86 Options.        (line  793)
  * mpure-code:                            ARM Options.        (line  943)
  * mpush-args:                            x86 Options.        (line 1076)
  * mpushpop:                              C-SKY Options.      (line  114)
  * MQ:                                    Preprocessor Options.
                                                               (line  159)
! * mq-class:                              ARC Options.        (line  519)
  * mquad-memory:                          RS/6000 and PowerPC Options.
                                                               (line  202)
  * mquad-memory-atomic:                   RS/6000 and PowerPC Options.
                                                               (line  208)
  * mr0rel-sec:                            Nios II Options.    (line   76)
  * mr10k-cache-barrier:                   MIPS Options.       (line  714)
! * mRcq:                                  ARC Options.        (line  523)
! * mRcw:                                  ARC Options.        (line  527)
  * mrdpid:                                x86 Options.        (line  801)
  * mrdrnd:                                x86 Options.        (line  794)
  * mrdseed:                               x86 Options.        (line  803)
  * mreadonly-in-sdata:                    RS/6000 and PowerPC Options.
!                                                              (line  683)
  * mrecip:                                RS/6000 and PowerPC Options.
!                                                              (line  784)
  * mrecip <1>:                            x86 Options.        (line  966)
  * mrecip-precision:                      RS/6000 and PowerPC Options.
!                                                              (line  841)
  * mrecip=opt:                            RS/6000 and PowerPC Options.
!                                                              (line  797)
  * mrecip=opt <1>:                        x86 Options.        (line  988)
  * mrecord-mcount:                        x86 Options.        (line 1300)
  * mrecord-return:                        x86 Options.        (line 1320)
*************** look up both forms.
*** 63032,63040 ****
  * mreduced-regs:                         NDS32 Options.      (line   15)
  * mregister-names:                       IA-64 Options.      (line   37)
  * mregnames:                             RS/6000 and PowerPC Options.
!                                                              (line  722)
  * mregparm:                              x86 Options.        (line  661)
! * mrelax:                                AVR Options.        (line  231)
  * mrelax <1>:                            H8/300 Options.     (line    9)
  * mrelax <2>:                            MN10300 Options.    (line   46)
  * mrelax <3>:                            MSP430 Options.     (line   88)
--- 63074,63082 ----
  * mreduced-regs:                         NDS32 Options.      (line   15)
  * mregister-names:                       IA-64 Options.      (line   37)
  * mregnames:                             RS/6000 and PowerPC Options.
!                                                              (line  721)
  * mregparm:                              x86 Options.        (line  661)
! * mrelax:                                AVR Options.        (line  229)
  * mrelax <1>:                            H8/300 Options.     (line    9)
  * mrelax <2>:                            MN10300 Options.    (line   46)
  * mrelax <3>:                            MSP430 Options.     (line   88)
*************** look up both forms.
*** 63045,63053 ****
  * mrelax-immediate:                      MCore Options.      (line   19)
  * mrelax-pic-calls:                      MIPS Options.       (line  859)
  * mrelocatable:                          RS/6000 and PowerPC Options.
!                                                              (line  408)
  * mrelocatable-lib:                      RS/6000 and PowerPC Options.
!                                                              (line  419)
  * mrenesas:                              SH Options.         (line  152)
  * mrepeat:                               MeP Options.        (line   96)
  * mrestrict-it:                          ARM Options.        (line  927)
--- 63087,63095 ----
  * mrelax-immediate:                      MCore Options.      (line   19)
  * mrelax-pic-calls:                      MIPS Options.       (line  859)
  * mrelocatable:                          RS/6000 and PowerPC Options.
!                                                              (line  407)
  * mrelocatable-lib:                      RS/6000 and PowerPC Options.
!                                                              (line  418)
  * mrenesas:                              SH Options.         (line  152)
  * mrepeat:                               MeP Options.        (line   96)
  * mrestrict-it:                          ARM Options.        (line  927)
*************** look up both forms.
*** 63056,63062 ****
  * mrgf-banked-regs:                      ARC Options.        (line  304)
  * mrh850-abi:                            V850 Options.       (line  127)
  * mrl78:                                 RL78 Options.       (line   62)
! * mrmw:                                  AVR Options.        (line  245)
  * mror:                                  OpenRISC Options.   (line   49)
  * mrori:                                 OpenRISC Options.   (line   54)
  * mround-nearest:                        Adapteva Epiphany Options.
--- 63098,63104 ----
  * mrgf-banked-regs:                      ARC Options.        (line  304)
  * mrh850-abi:                            V850 Options.       (line  127)
  * mrl78:                                 RL78 Options.       (line   62)
! * mrmw:                                  AVR Options.        (line  243)
  * mror:                                  OpenRISC Options.   (line   49)
  * mrori:                                 OpenRISC Options.   (line   54)
  * mround-nearest:                        Adapteva Epiphany Options.
*************** look up both forms.
*** 63077,63083 ****
  * msave-mduc-in-interrupts:              RL78 Options.       (line   79)
  * msave-restore:                         RISC-V Options.     (line   87)
  * msave-toc-indirect:                    RS/6000 and PowerPC Options.
!                                                              (line  890)
  * mscc:                                  FRV Options.        (line  173)
  * msched-ar-data-spec:                   IA-64 Options.      (line  135)
  * msched-ar-in-data-spec:                IA-64 Options.      (line  157)
--- 63119,63125 ----
  * msave-mduc-in-interrupts:              RL78 Options.       (line   79)
  * msave-restore:                         RISC-V Options.     (line   87)
  * msave-toc-indirect:                    RS/6000 and PowerPC Options.
!                                                              (line  889)
  * mscc:                                  FRV Options.        (line  173)
  * msched-ar-data-spec:                   IA-64 Options.      (line  135)
  * msched-ar-in-data-spec:                IA-64 Options.      (line  157)
*************** look up both forms.
*** 63085,63091 ****
  * msched-br-in-data-spec:                IA-64 Options.      (line  150)
  * msched-control-spec:                   IA-64 Options.      (line  142)
  * msched-costly-dep:                     RS/6000 and PowerPC Options.
!                                                              (line  464)
  * msched-count-spec-in-critical-path:    IA-64 Options.      (line  185)
  * msched-fp-mem-deps-zero-cost:          IA-64 Options.      (line  202)
  * msched-in-control-spec:                IA-64 Options.      (line  164)
--- 63127,63133 ----
  * msched-br-in-data-spec:                IA-64 Options.      (line  150)
  * msched-control-spec:                   IA-64 Options.      (line  142)
  * msched-costly-dep:                     RS/6000 and PowerPC Options.
!                                                              (line  463)
  * msched-count-spec-in-critical-path:    IA-64 Options.      (line  185)
  * msched-fp-mem-deps-zero-cost:          IA-64 Options.      (line  202)
  * msched-in-control-spec:                IA-64 Options.      (line  164)
*************** look up both forms.
*** 63104,63128 ****
  * mscore7:                               Score Options.      (line   31)
  * mscore7d:                              Score Options.      (line   35)
  * msda:                                  V850 Options.       (line   40)
! * msdata:                                ARC Options.        (line  422)
  * msdata <1>:                            IA-64 Options.      (line   42)
  * msdata <2>:                            RS/6000 and PowerPC Options.
!                                                              (line  666)
  * msdata=all:                            C6X Options.        (line   30)
  * msdata=data:                           RS/6000 and PowerPC Options.
!                                                              (line  671)
  * msdata=default:                        C6X Options.        (line   22)
  * msdata=default <1>:                    RS/6000 and PowerPC Options.
!                                                              (line  666)
  * msdata=eabi:                           RS/6000 and PowerPC Options.
!                                                              (line  647)
  * msdata=none:                           C6X Options.        (line   35)
  * msdata=none <1>:                       M32R/D Options.     (line   40)
  * msdata=none <2>:                       RS/6000 and PowerPC Options.
!                                                              (line  679)
  * msdata=sdata:                          M32R/D Options.     (line   49)
  * msdata=sysv:                           RS/6000 and PowerPC Options.
!                                                              (line  657)
  * msdata=use:                            M32R/D Options.     (line   53)
  * msdram:                                Blackfin Options.   (line  169)
  * msdram <1>:                            MeP Options.        (line  110)
--- 63146,63170 ----
  * mscore7:                               Score Options.      (line   31)
  * mscore7d:                              Score Options.      (line   35)
  * msda:                                  V850 Options.       (line   40)
! * msdata:                                ARC Options.        (line  420)
  * msdata <1>:                            IA-64 Options.      (line   42)
  * msdata <2>:                            RS/6000 and PowerPC Options.
!                                                              (line  665)
  * msdata=all:                            C6X Options.        (line   30)
  * msdata=data:                           RS/6000 and PowerPC Options.
!                                                              (line  670)
  * msdata=default:                        C6X Options.        (line   22)
  * msdata=default <1>:                    RS/6000 and PowerPC Options.
!                                                              (line  665)
  * msdata=eabi:                           RS/6000 and PowerPC Options.
!                                                              (line  646)
  * msdata=none:                           C6X Options.        (line   35)
  * msdata=none <1>:                       M32R/D Options.     (line   40)
  * msdata=none <2>:                       RS/6000 and PowerPC Options.
!                                                              (line  678)
  * msdata=sdata:                          M32R/D Options.     (line   49)
  * msdata=sysv:                           RS/6000 and PowerPC Options.
!                                                              (line  656)
  * msdata=use:                            M32R/D Options.     (line   53)
  * msdram:                                Blackfin Options.   (line  169)
  * msdram <1>:                            MeP Options.        (line  110)
*************** look up both forms.
*** 63141,63151 ****
  * mshared-library-id:                    Blackfin Options.   (line  100)
  * mshftimm:                              OpenRISC Options.   (line   68)
  * mshort:                                M680x0 Options.     (line  216)
! * mshort-calls:                          AVR Options.        (line  249)
  * mshstk:                                x86 Options.        (line  956)
! * mside-effects:                         CRIS Options.       (line   46)
  * msign-extend-enabled:                  LM32 Options.       (line   18)
! * msign-return-address:                  AArch64 Options.    (line  268)
  * msilicon-errata:                       MSP430 Options.     (line  144)
  * msilicon-errata-warn:                  MSP430 Options.     (line  148)
  * msim:                                  Blackfin Options.   (line   36)
--- 63183,63193 ----
  * mshared-library-id:                    Blackfin Options.   (line  100)
  * mshftimm:                              OpenRISC Options.   (line   68)
  * mshort:                                M680x0 Options.     (line  216)
! * mshort-calls:                          AVR Options.        (line  247)
  * mshstk:                                x86 Options.        (line  956)
! * mside-effects:                         CRIS Options.       (line   45)
  * msign-extend-enabled:                  LM32 Options.       (line   18)
! * msign-return-address:                  AArch64 Options.    (line  287)
  * msilicon-errata:                       MSP430 Options.     (line  144)
  * msilicon-errata-warn:                  MSP430 Options.     (line  148)
  * msim:                                  Blackfin Options.   (line   36)
*************** look up both forms.
*** 63157,63163 ****
  * msim <6>:                              MSP430 Options.     (line   77)
  * msim <7>:                              RL78 Options.       (line    7)
  * msim <8>:                              RS/6000 and PowerPC Options.
!                                                              (line  603)
  * msim <9>:                              RX Options.         (line   71)
  * msim <10>:                             Visium Options.     (line   13)
  * msim <11>:                             Xstormy16 Options.  (line    9)
--- 63199,63205 ----
  * msim <6>:                              MSP430 Options.     (line   77)
  * msim <7>:                              RL78 Options.       (line    7)
  * msim <8>:                              RS/6000 and PowerPC Options.
!                                                              (line  602)
  * msim <9>:                              RX Options.         (line   71)
  * msim <10>:                             Visium Options.     (line   13)
  * msim <11>:                             Xstormy16 Options.  (line    9)
*************** look up both forms.
*** 63167,63175 ****
  * msingle-float:                         MIPS Options.       (line  284)
  * msingle-pic-base:                      ARM Options.        (line  779)
  * msingle-pic-base <1>:                  RS/6000 and PowerPC Options.
!                                                              (line  451)
  * msio:                                  HPPA Options.       (line  105)
! * msize-level:                           ARC Options.        (line  533)
  * mskip-rax-setup:                       x86 Options.        (line 1333)
  * mslow-bytes:                           MCore Options.      (line   35)
  * mslow-flash-data:                      ARM Options.        (line  915)
--- 63209,63217 ----
  * msingle-float:                         MIPS Options.       (line  284)
  * msingle-pic-base:                      ARM Options.        (line  779)
  * msingle-pic-base <1>:                  RS/6000 and PowerPC Options.
!                                                              (line  450)
  * msio:                                  HPPA Options.       (line  105)
! * msize-level:                           ARC Options.        (line  531)
  * mskip-rax-setup:                       x86 Options.        (line 1333)
  * mslow-bytes:                           MCore Options.      (line   35)
  * mslow-flash-data:                      ARM Options.        (line  915)
*************** look up both forms.
*** 63201,63207 ****
  * msoft-float <8>:                       OpenRISC Options.   (line   29)
  * msoft-float <9>:                       PDP-11 Options.     (line   13)
  * msoft-float <10>:                      RS/6000 and PowerPC Options.
!                                                              (line  333)
  * msoft-float <11>:                      S/390 and zSeries Options.
                                                               (line   11)
  * msoft-float <12>:                      SPARC Options.      (line   39)
--- 63243,63249 ----
  * msoft-float <8>:                       OpenRISC Options.   (line   29)
  * msoft-float <9>:                       PDP-11 Options.     (line   13)
  * msoft-float <10>:                      RS/6000 and PowerPC Options.
!                                                              (line  332)
  * msoft-float <11>:                      S/390 and zSeries Options.
                                                               (line   11)
  * msoft-float <12>:                      SPARC Options.      (line   39)
*************** look up both forms.
*** 63211,63217 ****
  * msoft-mul:                             OpenRISC Options.   (line   24)
  * msoft-quad-float:                      SPARC Options.      (line   59)
  * msoft-stack:                           Nvidia PTX Options. (line   26)
! * msp8:                                  AVR Options.        (line  256)
  * mspace:                                V850 Options.       (line   30)
  * mspace-regs:                           HPPA Options.       (line   45)
  * mspecld-anomaly:                       Blackfin Options.   (line   48)
--- 63253,63259 ----
  * msoft-mul:                             OpenRISC Options.   (line   24)
  * msoft-quad-float:                      SPARC Options.      (line   59)
  * msoft-stack:                           Nvidia PTX Options. (line   26)
! * msp8:                                  AVR Options.        (line  254)
  * mspace:                                V850 Options.       (line   30)
  * mspace-regs:                           HPPA Options.       (line   45)
  * mspecld-anomaly:                       Blackfin Options.   (line   48)
*************** look up both forms.
*** 63219,63226 ****
  * mspfp:                                 ARC Options.        (line  132)
  * mspfp-compact:                         ARC Options.        (line  133)
  * mspfp-fast:                            ARC Options.        (line  137)
! * mspfp_compact:                         ARC Options.        (line  634)
! * mspfp_fast:                            ARC Options.        (line  637)
  * msplit:                                PDP-11 Options.     (line   40)
  * msplit-addresses:                      MIPS Options.       (line  555)
  * msplit-lohi:                           Adapteva Epiphany Options.
--- 63261,63268 ----
  * mspfp:                                 ARC Options.        (line  132)
  * mspfp-compact:                         ARC Options.        (line  133)
  * mspfp-fast:                            ARC Options.        (line  137)
! * mspfp_compact:                         ARC Options.        (line  629)
! * mspfp_fast:                            ARC Options.        (line  632)
  * msplit:                                PDP-11 Options.     (line   40)
  * msplit-addresses:                      MIPS Options.       (line  555)
  * msplit-lohi:                           Adapteva Epiphany Options.
*************** look up both forms.
*** 63237,63243 ****
  * msse4a:                                x86 Options.        (line  773)
  * msseregparm:                           x86 Options.        (line  672)
  * mssse3:                                x86 Options.        (line  771)
! * mstack-align:                          CRIS Options.       (line   55)
  * mstack-bias:                           SPARC Options.      (line  372)
  * mstack-check-l1:                       Blackfin Options.   (line   74)
  * mstack-guard:                          S/390 and zSeries Options.
--- 63279,63285 ----
  * msse4a:                                x86 Options.        (line  773)
  * msseregparm:                           x86 Options.        (line  672)
  * mssse3:                                x86 Options.        (line  771)
! * mstack-align:                          CRIS Options.       (line   54)
  * mstack-bias:                           SPARC Options.      (line  372)
  * mstack-check-l1:                       Blackfin Options.   (line   74)
  * mstack-guard:                          S/390 and zSeries Options.
*************** look up both forms.
*** 63248,63267 ****
  * mstack-protector-guard:                AArch64 Options.    (line   64)
  * mstack-protector-guard <1>:            AArch64 Options.    (line   79)
  * mstack-protector-guard <2>:            RS/6000 and PowerPC Options.
!                                                              (line  916)
  * mstack-protector-guard <3>:            x86 Options.        (line 1359)
  * mstack-protector-guard-offset:         AArch64 Options.    (line   64)
  * mstack-protector-guard-offset <1>:     AArch64 Options.    (line   79)
  * mstack-protector-guard-offset <2>:     RS/6000 and PowerPC Options.
!                                                              (line  916)
  * mstack-protector-guard-offset <3>:     x86 Options.        (line 1359)
  * mstack-protector-guard-reg:            AArch64 Options.    (line   64)
  * mstack-protector-guard-reg <1>:        AArch64 Options.    (line   79)
  * mstack-protector-guard-reg <2>:        RS/6000 and PowerPC Options.
!                                                              (line  916)
  * mstack-protector-guard-reg <3>:        x86 Options.        (line 1359)
  * mstack-protector-guard-symbol:         RS/6000 and PowerPC Options.
!                                                              (line  916)
  * mstack-size:                           AMD GCN Options.    (line   23)
  * mstack-size <1>:                       C-SKY Options.      (line  134)
  * mstack-size <2>:                       S/390 and zSeries Options.
--- 63290,63309 ----
  * mstack-protector-guard:                AArch64 Options.    (line   64)
  * mstack-protector-guard <1>:            AArch64 Options.    (line   79)
  * mstack-protector-guard <2>:            RS/6000 and PowerPC Options.
!                                                              (line  915)
  * mstack-protector-guard <3>:            x86 Options.        (line 1359)
  * mstack-protector-guard-offset:         AArch64 Options.    (line   64)
  * mstack-protector-guard-offset <1>:     AArch64 Options.    (line   79)
  * mstack-protector-guard-offset <2>:     RS/6000 and PowerPC Options.
!                                                              (line  915)
  * mstack-protector-guard-offset <3>:     x86 Options.        (line 1359)
  * mstack-protector-guard-reg:            AArch64 Options.    (line   64)
  * mstack-protector-guard-reg <1>:        AArch64 Options.    (line   79)
  * mstack-protector-guard-reg <2>:        RS/6000 and PowerPC Options.
!                                                              (line  915)
  * mstack-protector-guard-reg <3>:        x86 Options.        (line 1359)
  * mstack-protector-guard-symbol:         RS/6000 and PowerPC Options.
!                                                              (line  915)
  * mstack-size:                           AMD GCN Options.    (line   23)
  * mstack-size <1>:                       C-SKY Options.      (line  134)
  * mstack-size <2>:                       S/390 and zSeries Options.
*************** look up both forms.
*** 63272,63288 ****
  * mstrict-align <1>:                     M680x0 Options.     (line  280)
  * mstrict-align <2>:                     RISC-V Options.     (line   93)
  * mstrict-align <3>:                     RS/6000 and PowerPC Options.
!                                                              (line  403)
! * mstrict-X:                             AVR Options.        (line  269)
  * mstring-compare-inline-limit:          RS/6000 and PowerPC Options.
!                                                              (line  708)
  * mstringop-strategy=ALG:                x86 Options.        (line 1236)
  * mstructure-size-boundary:              ARM Options.        (line  734)
  * msubxc:                                SPARC Options.      (line  288)
  * msv-mode:                              Visium Options.     (line   52)
! * msve-vector-bits:                      AArch64 Options.    (line  297)
  * msvr4-struct-return:                   RS/6000 and PowerPC Options.
!                                                              (line  548)
  * mswap:                                 ARC Options.        (line  152)
  * mswape:                                ARC Options.        (line  363)
  * msym32:                                MIPS Options.       (line  453)
--- 63314,63330 ----
  * mstrict-align <1>:                     M680x0 Options.     (line  280)
  * mstrict-align <2>:                     RISC-V Options.     (line   93)
  * mstrict-align <3>:                     RS/6000 and PowerPC Options.
!                                                              (line  402)
! * mstrict-X:                             AVR Options.        (line  267)
  * mstring-compare-inline-limit:          RS/6000 and PowerPC Options.
!                                                              (line  707)
  * mstringop-strategy=ALG:                x86 Options.        (line 1236)
  * mstructure-size-boundary:              ARM Options.        (line  734)
  * msubxc:                                SPARC Options.      (line  288)
  * msv-mode:                              Visium Options.     (line   52)
! * msve-vector-bits:                      AArch64 Options.    (line  316)
  * msvr4-struct-return:                   RS/6000 and PowerPC Options.
!                                                              (line  547)
  * mswap:                                 ARC Options.        (line  152)
  * mswape:                                ARC Options.        (line  363)
  * msym32:                                MIPS Options.       (line  453)
*************** look up both forms.
*** 63304,63310 ****
  * mthumb:                                ARM Options.        (line  822)
  * mthumb-interwork:                      ARM Options.        (line   24)
  * mtiny-printf:                          MSP430 Options.     (line  122)
! * mtiny-stack:                           AVR Options.        (line  283)
  * mtiny=:                                MeP Options.        (line  125)
  * mTLS:                                  FRV Options.        (line   90)
  * mtls:                                  FRV Options.        (line   94)
--- 63346,63352 ----
  * mthumb:                                ARM Options.        (line  822)
  * mthumb-interwork:                      ARM Options.        (line   24)
  * mtiny-printf:                          MSP430 Options.     (line  122)
! * mtiny-stack:                           AVR Options.        (line  281)
  * mtiny=:                                MeP Options.        (line  125)
  * mTLS:                                  FRV Options.        (line   90)
  * mtls:                                  FRV Options.        (line   94)
*************** look up both forms.
*** 63314,63324 ****
  * mtls-dialect=traditional:              AArch64 Options.    (line   96)
  * mtls-direct-seg-refs:                  x86 Options.        (line 1278)
  * mtls-markers:                          RS/6000 and PowerPC Options.
!                                                              (line  777)
  * mtls-size:                             AArch64 Options.    (line  100)
  * mtls-size <1>:                         IA-64 Options.      (line  112)
  * mtoc:                                  RS/6000 and PowerPC Options.
!                                                              (line  428)
  * mtomcat-stats:                         FRV Options.        (line  254)
  * mtoplevel-symbols:                     MMIX Options.       (line   39)
  * mtp:                                   ARM Options.        (line  866)
--- 63356,63366 ----
  * mtls-dialect=traditional:              AArch64 Options.    (line   96)
  * mtls-direct-seg-refs:                  x86 Options.        (line 1278)
  * mtls-markers:                          RS/6000 and PowerPC Options.
!                                                              (line  776)
  * mtls-size:                             AArch64 Options.    (line  100)
  * mtls-size <1>:                         IA-64 Options.      (line  112)
  * mtoc:                                  RS/6000 and PowerPC Options.
!                                                              (line  427)
  * mtomcat-stats:                         FRV Options.        (line  254)
  * mtoplevel-symbols:                     MMIX Options.       (line   39)
  * mtp:                                   ARM Options.        (line  866)
*************** look up both forms.
*** 63330,63344 ****
  * mtpf-trace-skip:                       S/390 and zSeries Options.
                                                               (line  174)
  * mtraceback:                            RS/6000 and PowerPC Options.
!                                                              (line  541)
  * mtrap-precision:                       DEC Alpha Options.  (line  109)
  * mtrust:                                C-SKY Options.      (line   83)
  * mtune:                                 AArch64 Options.    (line  199)
  * mtune <1>:                             AMD GCN Options.    (line   10)
! * mtune <2>:                             ARC Options.        (line  554)
! * mtune <3>:                             ARC Options.        (line  640)
  * mtune <4>:                             ARM Options.        (line  571)
! * mtune <5>:                             CRIS Options.       (line   17)
  * mtune <6>:                             DEC Alpha Options.  (line  259)
  * mtune <7>:                             IA-64 Options.      (line  116)
  * mtune <8>:                             M680x0 Options.     (line   68)
--- 63372,63386 ----
  * mtpf-trace-skip:                       S/390 and zSeries Options.
                                                               (line  174)
  * mtraceback:                            RS/6000 and PowerPC Options.
!                                                              (line  540)
  * mtrap-precision:                       DEC Alpha Options.  (line  109)
  * mtrust:                                C-SKY Options.      (line   83)
  * mtune:                                 AArch64 Options.    (line  199)
  * mtune <1>:                             AMD GCN Options.    (line   10)
! * mtune <2>:                             ARC Options.        (line  552)
! * mtune <3>:                             ARC Options.        (line  635)
  * mtune <4>:                             ARM Options.        (line  571)
! * mtune <5>:                             CRIS Options.       (line   16)
  * mtune <6>:                             DEC Alpha Options.  (line  259)
  * mtune <7>:                             IA-64 Options.      (line  116)
  * mtune <8>:                             M680x0 Options.     (line   68)
*************** look up both forms.
*** 63355,63368 ****
  * mtune-ctrl=FEATURE-LIST:               x86 Options.        (line  879)
  * muclibc:                               GNU/Linux Options.  (line   14)
  * muls:                                  Score Options.      (line   18)
! * multcost:                              ARC Options.        (line  645)
  * multcost=NUMBER:                       SH Options.         (line  281)
  * multilib-library-pic:                  FRV Options.        (line  110)
  * multiply-enabled:                      LM32 Options.       (line   15)
  * multiply_defined:                      Darwin Options.     (line  196)
  * multiply_defined_unused:               Darwin Options.     (line  196)
  * multi_module:                          Darwin Options.     (line  196)
! * munalign-prob-threshold:               ARC Options.        (line  582)
  * munaligned-access:                     ARM Options.        (line  899)
  * munaligned-doubles:                    SPARC Options.      (line   73)
  * municode:                              x86 Windows Options.
--- 63397,63410 ----
  * mtune-ctrl=FEATURE-LIST:               x86 Options.        (line  879)
  * muclibc:                               GNU/Linux Options.  (line   14)
  * muls:                                  Score Options.      (line   18)
! * multcost:                              ARC Options.        (line  640)
  * multcost=NUMBER:                       SH Options.         (line  281)
  * multilib-library-pic:                  FRV Options.        (line  110)
  * multiply-enabled:                      LM32 Options.       (line   15)
  * multiply_defined:                      Darwin Options.     (line  196)
  * multiply_defined_unused:               Darwin Options.     (line  196)
  * multi_module:                          Darwin Options.     (line  196)
! * munalign-prob-threshold:               ARC Options.        (line  580)
  * munaligned-access:                     ARM Options.        (line  899)
  * munaligned-doubles:                    SPARC Options.      (line   73)
  * municode:                              x86 Windows Options.
*************** look up both forms.
*** 63373,63379 ****
  * munix-asm:                             PDP-11 Options.     (line   43)
  * munordered-float:                      OpenRISC Options.   (line   39)
  * mupdate:                               RS/6000 and PowerPC Options.
!                                                              (line  350)
  * muser-enabled:                         LM32 Options.       (line   21)
  * muser-mode:                            SPARC Options.      (line   85)
  * muser-mode <1>:                        Visium Options.     (line   57)
--- 63415,63421 ----
  * munix-asm:                             PDP-11 Options.     (line   43)
  * munordered-float:                      OpenRISC Options.   (line   39)
  * mupdate:                               RS/6000 and PowerPC Options.
!                                                              (line  349)
  * muser-enabled:                         LM32 Options.       (line   21)
  * muser-mode:                            SPARC Options.      (line   85)
  * muser-mode <1>:                        Visium Options.     (line   57)
*************** look up both forms.
*** 63391,63402 ****
  * mvaes:                                 x86 Options.        (line  829)
  * mvdsp:                                 C-SKY Options.      (line   88)
  * mveclibabi:                            RS/6000 and PowerPC Options.
!                                                              (line  851)
  * mveclibabi <1>:                        x86 Options.        (line 1017)
  * mvect-double:                          Adapteva Epiphany Options.
                                                               (line  115)
  * mvect8-ret-in-mem:                     x86 Options.        (line  682)
! * mverbose-cost-dump:                    AArch64 Options.    (line  257)
  * mverbose-cost-dump <1>:                ARM Options.        (line  939)
  * mvirt:                                 MIPS Options.       (line  407)
  * mvis:                                  SPARC Options.      (line  221)
--- 63433,63444 ----
  * mvaes:                                 x86 Options.        (line  829)
  * mvdsp:                                 C-SKY Options.      (line   88)
  * mveclibabi:                            RS/6000 and PowerPC Options.
!                                                              (line  850)
  * mveclibabi <1>:                        x86 Options.        (line 1017)
  * mvect-double:                          Adapteva Epiphany Options.
                                                               (line  115)
  * mvect8-ret-in-mem:                     x86 Options.        (line  682)
! * mverbose-cost-dump:                    AArch64 Options.    (line  276)
  * mverbose-cost-dump <1>:                ARM Options.        (line  939)
  * mvirt:                                 MIPS Options.       (line  407)
  * mvis:                                  SPARC Options.      (line  221)
*************** look up both forms.
*** 63407,63414 ****
  * mvliw-branch:                          FRV Options.        (line  201)
  * mvms-return-codes:                     VMS Options.        (line    9)
  * mvolatile-asm-stop:                    IA-64 Options.      (line   32)
! * mvolatile-cache:                       ARC Options.        (line  427)
! * mvolatile-cache <1>:                   ARC Options.        (line  431)
  * mvpclmulqdq:                           x86 Options.        (line  831)
  * mvr4130-align:                         MIPS Options.       (line  834)
  * mvrsave:                               RS/6000 and PowerPC Options.
--- 63449,63456 ----
  * mvliw-branch:                          FRV Options.        (line  201)
  * mvms-return-codes:                     VMS Options.        (line    9)
  * mvolatile-asm-stop:                    IA-64 Options.      (line   32)
! * mvolatile-cache:                       ARC Options.        (line  425)
! * mvolatile-cache <1>:                   ARC Options.        (line  429)
  * mvpclmulqdq:                           x86 Options.        (line  831)
  * mvr4130-align:                         MIPS Options.       (line  834)
  * mvrsave:                               RS/6000 and PowerPC Options.
*************** look up both forms.
*** 63418,63424 ****
  * mvx:                                   S/390 and zSeries Options.
                                                               (line  112)
  * mvxworks:                              RS/6000 and PowerPC Options.
!                                                              (line  624)
  * mvzeroupper:                           x86 Options.        (line  906)
  * mwaitpkg:                              x86 Options.        (line  830)
  * mwarn-devices-csv:                     MSP430 Options.     (line  153)
--- 63460,63466 ----
  * mvx:                                   S/390 and zSeries Options.
                                                               (line  112)
  * mvxworks:                              RS/6000 and PowerPC Options.
!                                                              (line  623)
  * mvzeroupper:                           x86 Options.        (line  906)
  * mwaitpkg:                              x86 Options.        (line  830)
  * mwarn-devices-csv:                     MSP430 Options.     (line  153)
*************** look up both forms.
*** 63440,63446 ****
  * mxgot <1>:                             MIPS Options.       (line  229)
  * mxl-barrel-shift:                      MicroBlaze Options. (line   32)
  * mxl-compat:                            RS/6000 and PowerPC Options.
!                                                              (line  291)
  * mxl-float-convert:                     MicroBlaze Options. (line   50)
  * mxl-float-sqrt:                        MicroBlaze Options. (line   53)
  * mxl-gp-opt:                            MicroBlaze Options. (line   44)
--- 63482,63488 ----
  * mxgot <1>:                             MIPS Options.       (line  229)
  * mxl-barrel-shift:                      MicroBlaze Options. (line   32)
  * mxl-compat:                            RS/6000 and PowerPC Options.
!                                                              (line  290)
  * mxl-float-convert:                     MicroBlaze Options. (line   50)
  * mxl-float-sqrt:                        MicroBlaze Options. (line   53)
  * mxl-gp-opt:                            MicroBlaze Options. (line   44)
*************** look up both forms.
*** 63458,63464 ****
  * mxsaves:                               x86 Options.        (line  819)
  * mxy:                                   ARC Options.        (line  373)
  * myellowknife:                          RS/6000 and PowerPC Options.
!                                                              (line  619)
  * mzarch:                                S/390 and zSeries Options.
                                                               (line   94)
  * mzda:                                  V850 Options.       (line   45)
--- 63500,63506 ----
  * mxsaves:                               x86 Options.        (line  819)
  * mxy:                                   ARC Options.        (line  373)
  * myellowknife:                          RS/6000 and PowerPC Options.
!                                                              (line  618)
  * mzarch:                                S/390 and zSeries Options.
                                                               (line   94)
  * mzda:                                  V850 Options.       (line   45)
*************** look up both forms.
*** 63475,63482 ****
  * noall_load:                            Darwin Options.     (line  196)
  * nocpp:                                 MIPS Options.       (line  636)
  * nodefaultlibs:                         Link Options.       (line  119)
! * nodevicelib:                           AVR Options.        (line  290)
! * nodevicespecs:                         AVR Options.        (line  293)
  * nofixprebinding:                       Darwin Options.     (line  196)
  * nofpu:                                 RX Options.         (line   17)
  * nolibc:                                Link Options.       (line  131)
--- 63517,63524 ----
  * noall_load:                            Darwin Options.     (line  196)
  * nocpp:                                 MIPS Options.       (line  636)
  * nodefaultlibs:                         Link Options.       (line  119)
! * nodevicelib:                           AVR Options.        (line  288)
! * nodevicespecs:                         AVR Options.        (line  291)
  * nofixprebinding:                       Darwin Options.     (line  196)
  * nofpu:                                 RX Options.         (line   17)
  * nolibc:                                Link Options.       (line  131)
*************** look up both forms.
*** 63506,63512 ****
  * P:                                     Preprocessor Options.
                                                               (line  365)
  * p <1>:                                 Common Function Attributes.
!                                                              (line  691)
  * pagezero_size:                         Darwin Options.     (line  196)
  * param:                                 Optimize Options.   (line 2624)
  * pass-exit-codes:                       Overall Options.    (line  339)
--- 63548,63554 ----
  * P:                                     Preprocessor Options.
                                                               (line  365)
  * p <1>:                                 Common Function Attributes.
!                                                              (line  696)
  * pagezero_size:                         Darwin Options.     (line  196)
  * param:                                 Optimize Options.   (line 2624)
  * pass-exit-codes:                       Overall Options.    (line  339)
*************** look up both forms.
*** 63524,63530 ****
  * pg:                                    Instrumentation Options.
                                                               (line   20)
  * pg <1>:                                Common Function Attributes.
!                                                              (line  691)
  * pie:                                   Link Options.       (line  175)
  * pipe:                                  Overall Options.    (line  347)
  * plt:                                   RISC-V Options.     (line   13)
--- 63566,63572 ----
  * pg:                                    Instrumentation Options.
                                                               (line   20)
  * pg <1>:                                Common Function Attributes.
!                                                              (line  696)
  * pie:                                   Link Options.       (line  175)
  * pipe:                                  Overall Options.    (line  347)
  * plt:                                   RISC-V Options.     (line   13)
*************** look up both forms.
*** 63579,63586 ****
  * shared-libgcc:                         Link Options.       (line  227)
  * short-calls:                           Adapteva Epiphany Options.
                                                               (line   61)
! * sim:                                   CRIS Options.       (line   95)
! * sim2:                                  CRIS Options.       (line  101)
  * single_module:                         Darwin Options.     (line  196)
  * specs:                                 Overall Options.    (line  353)
  * static:                                Link Options.       (line  214)
--- 63621,63628 ----
  * shared-libgcc:                         Link Options.       (line  227)
  * short-calls:                           Adapteva Epiphany Options.
                                                               (line   61)
! * sim:                                   CRIS Options.       (line   94)
! * sim2:                                  CRIS Options.       (line  100)
  * single_module:                         Darwin Options.     (line  196)
  * specs:                                 Overall Options.    (line  353)
  * static:                                Link Options.       (line  214)
*************** look up both forms.
*** 63637,63643 ****
  * Wabi-tag <1>:                          C++ Dialect Options.
                                                               (line  494)
  * Wabsolute-value:                       Warning Options.    (line 2147)
! * Waddr-space-convert:                   AVR Options.        (line  308)
  * Waddress:                              Warning Options.    (line 2488)
  * Waddress-of-packed-member:             Warning Options.    (line 2501)
  * Waggregate-return:                     Warning Options.    (line 2529)
--- 63679,63685 ----
  * Wabi-tag <1>:                          C++ Dialect Options.
                                                               (line  494)
  * Wabsolute-value:                       Warning Options.    (line 2147)
! * Waddr-space-convert:                   AVR Options.        (line  306)
  * Waddress:                              Warning Options.    (line 2488)
  * Waddress-of-packed-member:             Warning Options.    (line 2501)
  * Waggregate-return:                     Warning Options.    (line 2529)
*************** look up both forms.
*** 63845,63851 ****
  * Wmissing-parameter-type:               Warning Options.    (line 2590)
  * Wmissing-profile:                      Warning Options.    (line  885)
  * Wmissing-prototypes:                   Warning Options.    (line 2598)
! * Wmisspelled-isr:                       AVR Options.        (line  313)
  * Wmultichar:                            Warning Options.    (line 2648)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line  878)
--- 63887,63893 ----
  * Wmissing-parameter-type:               Warning Options.    (line 2590)
  * Wmissing-profile:                      Warning Options.    (line  885)
  * Wmissing-prototypes:                   Warning Options.    (line 2598)
! * Wmisspelled-isr:                       AVR Options.        (line  311)
  * Wmultichar:                            Warning Options.    (line 2648)
  * Wmultiple-inheritance:                 C++ Dialect Options.
                                                               (line  878)
*************** look up both forms.
*** 63857,63863 ****
  * Wnested-externs:                       Warning Options.    (line 2816)
  * Wno-abi:                               Warning Options.    (line  256)
  * Wno-absolute-value:                    Warning Options.    (line 2147)
! * Wno-addr-space-convert:                AVR Options.        (line  308)
  * Wno-address:                           Warning Options.    (line 2488)
  * Wno-address-of-packed-member:          Warning Options.    (line 2501)
  * Wno-aggregate-return:                  Warning Options.    (line 2529)
--- 63899,63905 ----
  * Wnested-externs:                       Warning Options.    (line 2816)
  * Wno-abi:                               Warning Options.    (line  256)
  * Wno-absolute-value:                    Warning Options.    (line 2147)
! * Wno-addr-space-convert:                AVR Options.        (line  306)
  * Wno-address:                           Warning Options.    (line 2488)
  * Wno-address-of-packed-member:          Warning Options.    (line 2501)
  * Wno-aggregate-return:                  Warning Options.    (line 2529)
*************** look up both forms.
*** 64048,64054 ****
  * Wno-missing-parameter-type:            Warning Options.    (line 2590)
  * Wno-missing-profile:                   Warning Options.    (line  885)
  * Wno-missing-prototypes:                Warning Options.    (line 2598)
! * Wno-misspelled-isr:                    AVR Options.        (line  313)
  * Wno-multichar:                         Warning Options.    (line 2648)
  * Wno-multiple-inheritance:              C++ Dialect Options.
                                                               (line  878)
--- 64090,64096 ----
  * Wno-missing-parameter-type:            Warning Options.    (line 2590)
  * Wno-missing-profile:                   Warning Options.    (line  885)
  * Wno-missing-prototypes:                Warning Options.    (line 2598)
! * Wno-misspelled-isr:                    AVR Options.        (line  311)
  * Wno-multichar:                         Warning Options.    (line 2648)
  * Wno-multiple-inheritance:              C++ Dialect Options.
                                                               (line  878)
*************** Keyword Index
*** 64428,64439 ****
  * + in constraint:                       Modifiers.          (line   12)
  * -lgcc, use with -nodefaultlibs:        Link Options.       (line  154)
  * -lgcc, use with -nostdlib:             Link Options.       (line  154)
! * -march feature modifiers:              AArch64 Options.    (line  319)
! * -mcpu feature modifiers:               AArch64 Options.    (line  319)
  * -nodefaultlibs and unresolved references: Link Options.    (line  154)
  * -nostdlib and unresolved references:   Link Options.       (line  154)
  * .sdata/.sdata2 references (PowerPC):   RS/6000 and PowerPC Options.
!                                                              (line  714)
  * //:                                    C++ Comments.       (line    6)
  * 0 in constraint:                       Simple Constraints. (line  125)
  * < in constraint:                       Simple Constraints. (line   47)
--- 64470,64481 ----
  * + in constraint:                       Modifiers.          (line   12)
  * -lgcc, use with -nodefaultlibs:        Link Options.       (line  154)
  * -lgcc, use with -nostdlib:             Link Options.       (line  154)
! * -march feature modifiers:              AArch64 Options.    (line  338)
! * -mcpu feature modifiers:               AArch64 Options.    (line  338)
  * -nodefaultlibs and unresolved references: Link Options.    (line  154)
  * -nostdlib and unresolved references:   Link Options.       (line  154)
  * .sdata/.sdata2 references (PowerPC):   RS/6000 and PowerPC Options.
!                                                              (line  713)
  * //:                                    C++ Comments.       (line    6)
  * 0 in constraint:                       Simple Constraints. (line  125)
  * < in constraint:                       Simple Constraints. (line   47)
*************** Keyword Index
*** 64860,64866 ****
  * __far M32C Named Address Spaces:       Named Address Spaces.
                                                               (line  153)
  * __far RL78 Named Address Spaces:       Named Address Spaces.
!                                                              (line  162)
  * __flash AVR Named Address Spaces:      Named Address Spaces.
                                                               (line   44)
  * __flash1 AVR Named Address Spaces:     Named Address Spaces.
--- 64902,64908 ----
  * __far M32C Named Address Spaces:       Named Address Spaces.
                                                               (line  153)
  * __far RL78 Named Address Spaces:       Named Address Spaces.
!                                                              (line  161)
  * __flash AVR Named Address Spaces:      Named Address Spaces.
                                                               (line   44)
  * __flash1 AVR Named Address Spaces:     Named Address Spaces.
*************** Keyword Index
*** 64886,64894 ****
  * __PRETTY_FUNCTION__ identifier:        Function Names.     (line    6)
  * __real__ keyword:                      Complex.            (line   31)
  * __seg_fs x86 named address space:      Named Address Spaces.
!                                                              (line  175)
  * __seg_gs x86 named address space:      Named Address Spaces.
!                                                              (line  175)
  * __STDC_HOSTED__:                       Standards.          (line   13)
  * __sync_add_and_fetch:                  __sync Builtins.    (line   72)
  * __sync_and_and_fetch:                  __sync Builtins.    (line   72)
--- 64928,64936 ----
  * __PRETTY_FUNCTION__ identifier:        Function Names.     (line    6)
  * __real__ keyword:                      Complex.            (line   31)
  * __seg_fs x86 named address space:      Named Address Spaces.
!                                                              (line  174)
  * __seg_gs x86 named address space:      Named Address Spaces.
!                                                              (line  174)
  * __STDC_HOSTED__:                       Standards.          (line   13)
  * __sync_add_and_fetch:                  __sync Builtins.    (line   72)
  * __sync_and_and_fetch:                  __sync Builtins.    (line   72)
*************** Keyword Index
*** 65289,65301 ****
  * declaring static data in C++:          Static Definitions. (line    6)
  * defining static data in C++:           Static Definitions. (line    6)
  * dependencies for make as output:       Environment Variables.
!                                                              (line  156)
  * dependencies for make as output <1>:   Environment Variables.
!                                                              (line  172)
  * dependencies, make:                    Preprocessor Options.
                                                               (line   77)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                              (line  155)
  * dependent name lookup:                 Name lookup.        (line    6)
  * deprecated enumerator attribute:       Enumerator Attributes.
                                                               (line   28)
--- 65331,65343 ----
  * declaring static data in C++:          Static Definitions. (line    6)
  * defining static data in C++:           Static Definitions. (line    6)
  * dependencies for make as output:       Environment Variables.
!                                                              (line  155)
  * dependencies for make as output <1>:   Environment Variables.
!                                                              (line  171)
  * dependencies, make:                    Preprocessor Options.
                                                               (line   77)
  * DEPENDENCIES_OUTPUT:                   Environment Variables.
!                                                              (line  154)
  * dependent name lookup:                 Name lookup.        (line    6)
  * deprecated enumerator attribute:       Enumerator Attributes.
                                                               (line   28)
*************** Keyword Index
*** 65357,65363 ****
                                                               (line    9)
  * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
                                                               (line    9)
! * EIND:                                  AVR Options.        (line  319)
  * either function attribute, MSP430:     MSP430 Function Attributes.
                                                               (line   57)
  * either variable attribute, MSP430:     MSP430 Variable Attributes.
--- 65399,65405 ----
                                                               (line    9)
  * eightbit_data variable attribute, H8/300: H8/300 Variable Attributes.
                                                               (line    9)
! * EIND:                                  AVR Options.        (line  317)
  * either function attribute, MSP430:     MSP430 Function Attributes.
                                                               (line   57)
  * either variable attribute, MSP430:     MSP430 Variable Attributes.
*************** Keyword Index
*** 65414,65420 ****
  * externally_visible function attribute: Common Function Attributes.
                                                               (line  360)
  * extra NOP instructions at the function entry point: Common Function Attributes.
!                                                              (line  905)
  * F in constraint:                       Simple Constraints. (line   92)
  * fabs:                                  Other Builtins.     (line    6)
  * fabsf:                                 Other Builtins.     (line    6)
--- 65456,65462 ----
  * externally_visible function attribute: Common Function Attributes.
                                                               (line  360)
  * extra NOP instructions at the function entry point: Common Function Attributes.
!                                                              (line  910)
  * F in constraint:                       Simple Constraints. (line   92)
  * fabs:                                  Other Builtins.     (line    6)
  * fabsf:                                 Other Builtins.     (line    6)
*************** Keyword Index
*** 65514,65520 ****
                                                               (line    6)
  * function, size of pointer to:          Pointer Arith.      (line    6)
  * functions in arbitrary sections:       Common Function Attributes.
!                                                              (line  989)
  * functions that are dynamically resolved: Common Function Attributes.
                                                               (line  547)
  * functions that are passed arguments in registers on x86-32: x86 Function Attributes.
--- 65556,65562 ----
                                                               (line    6)
  * function, size of pointer to:          Pointer Arith.      (line    6)
  * functions in arbitrary sections:       Common Function Attributes.
!                                                              (line  994)
  * functions that are dynamically resolved: Common Function Attributes.
                                                               (line  547)
  * functions that are passed arguments in registers on x86-32: x86 Function Attributes.
*************** Keyword Index
*** 65524,65532 ****
  * functions that have no side effects:   Common Function Attributes.
                                                               (line  218)
  * functions that have no side effects <1>: Common Function Attributes.
!                                                              (line  923)
  * functions that never return:           Common Function Attributes.
!                                                              (line  837)
  * functions that pop the argument stack on x86-32: x86 Function Attributes.
                                                               (line    9)
  * functions that pop the argument stack on x86-32 <1>: x86 Function Attributes.
--- 65566,65574 ----
  * functions that have no side effects:   Common Function Attributes.
                                                               (line  218)
  * functions that have no side effects <1>: Common Function Attributes.
!                                                              (line  928)
  * functions that never return:           Common Function Attributes.
!                                                              (line  842)
  * functions that pop the argument stack on x86-32: x86 Function Attributes.
                                                               (line    9)
  * functions that pop the argument stack on x86-32 <1>: x86 Function Attributes.
*************** Keyword Index
*** 65536,65544 ****
  * functions that pop the argument stack on x86-32 <3>: x86 Function Attributes.
                                                               (line  108)
  * functions that return more than once:  Common Function Attributes.
!                                                              (line  980)
  * functions with non-null pointer arguments: Common Function Attributes.
!                                                              (line  783)
  * functions with printf, scanf, strftime or strfmon style arguments: Common Function Attributes.
                                                               (line  381)
  * function_return function attribute, x86: x86 Function Attributes.
--- 65578,65586 ----
  * functions that pop the argument stack on x86-32 <3>: x86 Function Attributes.
                                                               (line  108)
  * functions that return more than once:  Common Function Attributes.
!                                                              (line  985)
  * functions with non-null pointer arguments: Common Function Attributes.
!                                                              (line  788)
  * functions with printf, scanf, strftime or strfmon style arguments: Common Function Attributes.
                                                               (line  381)
  * function_return function attribute, x86: x86 Function Attributes.
*************** Keyword Index
*** 65645,65651 ****
  * increment operators:                   Bug Criteria.       (line   17)
  * index:                                 Other Builtins.     (line    6)
  * indirect calls, ARC:                   ARC Function Attributes.
!                                                              (line   27)
  * indirect calls, ARM:                   ARM Function Attributes.
                                                               (line   38)
  * indirect calls, Blackfin:              Blackfin Function Attributes.
--- 65687,65693 ----
  * increment operators:                   Bug Criteria.       (line   17)
  * index:                                 Other Builtins.     (line    6)
  * indirect calls, ARC:                   ARC Function Attributes.
!                                                              (line   26)
  * indirect calls, ARM:                   ARM Function Attributes.
                                                               (line   38)
  * indirect calls, Blackfin:              Blackfin Function Attributes.
*************** Keyword Index
*** 65792,65800 ****
  * j1f:                                   Other Builtins.     (line    6)
  * j1l:                                   Other Builtins.     (line    6)
  * jli_always function attribute, ARC:    ARC Function Attributes.
!                                                              (line   44)
  * jli_fixed function attribute, ARC:     ARC Function Attributes.
!                                                              (line   50)
  * jn:                                    Other Builtins.     (line    6)
  * jnf:                                   Other Builtins.     (line    6)
  * jnl:                                   Other Builtins.     (line    6)
--- 65834,65842 ----
  * j1f:                                   Other Builtins.     (line    6)
  * j1l:                                   Other Builtins.     (line    6)
  * jli_always function attribute, ARC:    ARC Function Attributes.
!                                                              (line   43)
  * jli_fixed function attribute, ARC:     ARC Function Attributes.
!                                                              (line   49)
  * jn:                                    Other Builtins.     (line    6)
  * jnf:                                   Other Builtins.     (line    6)
  * jnl:                                   Other Builtins.     (line    6)
*************** Keyword Index
*** 65911,65917 ****
  * longjmp incompatibilities:             Incompatibilities.  (line   39)
  * longjmp warnings:                      Warning Options.    (line 1284)
  * long_call function attribute, ARC:     ARC Function Attributes.
!                                                              (line   27)
  * long_call function attribute, ARM:     ARM Function Attributes.
                                                               (line   38)
  * long_call function attribute, Epiphany: Epiphany Function Attributes.
--- 65953,65959 ----
  * longjmp incompatibilities:             Incompatibilities.  (line   39)
  * longjmp warnings:                      Warning Options.    (line 1284)
  * long_call function attribute, ARC:     ARC Function Attributes.
!                                                              (line   26)
  * long_call function attribute, ARM:     ARM Function Attributes.
                                                               (line   38)
  * long_call function attribute, Epiphany: Epiphany Function Attributes.
*************** Keyword Index
*** 65953,65959 ****
                                                               (line  234)
  * MCore options:                         MCore Options.      (line    6)
  * medium_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   27)
  * member fns, automatically inline:      Inline.             (line   68)
  * memchr:                                Other Builtins.     (line    6)
  * memcmp:                                Other Builtins.     (line    6)
--- 65995,66001 ----
                                                               (line  234)
  * MCore options:                         MCore Options.      (line    6)
  * medium_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   26)
  * member fns, automatically inline:      Inline.             (line   68)
  * memchr:                                Other Builtins.     (line    6)
  * memcmp:                                Other Builtins.     (line    6)
*************** Keyword Index
*** 66015,66021 ****
  * multiprecision arithmetic:             Long Long.          (line    6)
  * n in constraint:                       Simple Constraints. (line   73)
  * naked function attribute, ARC:         ARC Function Attributes.
!                                                              (line   59)
  * naked function attribute, ARM:         ARM Function Attributes.
                                                               (line   48)
  * naked function attribute, AVR:         AVR Function Attributes.
--- 66057,66063 ----
  * multiprecision arithmetic:             Long Long.          (line    6)
  * n in constraint:                       Simple Constraints. (line   73)
  * naked function attribute, ARC:         ARC Function Attributes.
!                                                              (line   58)
  * naked function attribute, ARM:         ARM Function Attributes.
                                                               (line   48)
  * naked function attribute, AVR:         AVR Function Attributes.
*************** Keyword Index
*** 66078,66084 ****
  * nocf_check function attribute:         x86 Function Attributes.
                                                               (line  571)
  * noclone function attribute:            Common Function Attributes.
!                                                              (line  752)
  * nocommon variable attribute:           Common Variable Attributes.
                                                               (line  176)
  * nocompression function attribute, MIPS: MIPS Function Attributes.
--- 66120,66126 ----
  * nocf_check function attribute:         x86 Function Attributes.
                                                               (line  571)
  * noclone function attribute:            Common Function Attributes.
!                                                              (line  757)
  * nocommon variable attribute:           Common Variable Attributes.
                                                               (line  176)
  * nocompression function attribute, MIPS: MIPS Function Attributes.
*************** Keyword Index
*** 66088,66096 ****
  * noinit variable attribute, MSP430:     MSP430 Variable Attributes.
                                                               (line    7)
  * noinline function attribute:           Common Function Attributes.
!                                                              (line  758)
  * noipa function attribute:              Common Function Attributes.
!                                                              (line  769)
  * nomicromips function attribute:        MIPS Function Attributes.
                                                               (line   91)
  * nomips16 function attribute, MIPS:     MIPS Function Attributes.
--- 66130,66138 ----
  * noinit variable attribute, MSP430:     MSP430 Variable Attributes.
                                                               (line    7)
  * noinline function attribute:           Common Function Attributes.
!                                                              (line  763)
  * noipa function attribute:              Common Function Attributes.
!                                                              (line  774)
  * nomicromips function attribute:        MIPS Function Attributes.
                                                               (line   91)
  * nomips16 function attribute, MIPS:     MIPS Function Attributes.
*************** Keyword Index
*** 66099,66117 ****
  * non-static inline function:            Inline.             (line   82)
  * nonlocal gotos:                        Nonlocal Gotos.     (line    6)
  * nonnull function attribute:            Common Function Attributes.
!                                                              (line  783)
  * nonstring variable attribute:          Common Variable Attributes.
                                                               (line  237)
  * noplt function attribute:              Common Function Attributes.
!                                                              (line  813)
  * noreturn function attribute:           Common Function Attributes.
!                                                              (line  837)
  * nosave_low_regs function attribute, SH: SH Function Attributes.
                                                               (line   34)
  * note GCC_COLORS capability:            Diagnostic Message Formatting Options.
                                                               (line   83)
  * nothrow function attribute:            Common Function Attributes.
!                                                              (line  871)
  * notshared type attribute, ARM:         ARM Type Attributes.
                                                               (line    6)
  * not_nested function attribute, NDS32:  NDS32 Function Attributes.
--- 66141,66159 ----
  * non-static inline function:            Inline.             (line   82)
  * nonlocal gotos:                        Nonlocal Gotos.     (line    6)
  * nonnull function attribute:            Common Function Attributes.
!                                                              (line  788)
  * nonstring variable attribute:          Common Variable Attributes.
                                                               (line  237)
  * noplt function attribute:              Common Function Attributes.
!                                                              (line  818)
  * noreturn function attribute:           Common Function Attributes.
!                                                              (line  842)
  * nosave_low_regs function attribute, SH: SH Function Attributes.
                                                               (line   34)
  * note GCC_COLORS capability:            Diagnostic Message Formatting Options.
                                                               (line   83)
  * nothrow function attribute:            Common Function Attributes.
!                                                              (line  876)
  * notshared type attribute, ARM:         ARM Type Attributes.
                                                               (line    6)
  * not_nested function attribute, NDS32:  NDS32 Function Attributes.
*************** Keyword Index
*** 66121,66145 ****
  * no_gccisr function attribute, AVR:     AVR Function Attributes.
                                                               (line   33)
  * no_icf function attribute:             Common Function Attributes.
!                                                              (line  687)
  * no_instrument_function function attribute: Common Function Attributes.
!                                                              (line  691)
  * no_profile_instrument_function function attribute: Common Function Attributes.
-                                                              (line  697)
- * no_reorder function attribute:         Common Function Attributes.
                                                               (line  702)
  * no_sanitize function attribute:        Common Function Attributes.
!                                                              (line  710)
  * no_sanitize_address function attribute: Common Function Attributes.
!                                                              (line  722)
  * no_sanitize_thread function attribute: Common Function Attributes.
-                                                              (line  730)
- * no_sanitize_undefined function attribute: Common Function Attributes.
                                                               (line  735)
  * no_split_stack function attribute:     Common Function Attributes.
!                                                              (line  741)
  * no_stack_limit function attribute:     Common Function Attributes.
!                                                              (line  747)
  * Nvidia PTX options:                    Nvidia PTX Options. (line    6)
  * nvptx options:                         Nvidia PTX Options. (line    6)
  * o in constraint:                       Simple Constraints. (line   23)
--- 66163,66187 ----
  * no_gccisr function attribute, AVR:     AVR Function Attributes.
                                                               (line   33)
  * no_icf function attribute:             Common Function Attributes.
!                                                              (line  692)
  * no_instrument_function function attribute: Common Function Attributes.
!                                                              (line  696)
  * no_profile_instrument_function function attribute: Common Function Attributes.
                                                               (line  702)
+ * no_reorder function attribute:         Common Function Attributes.
+                                                              (line  707)
  * no_sanitize function attribute:        Common Function Attributes.
!                                                              (line  715)
  * no_sanitize_address function attribute: Common Function Attributes.
!                                                              (line  727)
  * no_sanitize_thread function attribute: Common Function Attributes.
                                                               (line  735)
+ * no_sanitize_undefined function attribute: Common Function Attributes.
+                                                              (line  740)
  * no_split_stack function attribute:     Common Function Attributes.
!                                                              (line  746)
  * no_stack_limit function attribute:     Common Function Attributes.
!                                                              (line  752)
  * Nvidia PTX options:                    Nvidia PTX Options. (line    6)
  * nvptx options:                         Nvidia PTX Options. (line    6)
  * o in constraint:                       Simple Constraints. (line   23)
*************** Keyword Index
*** 66159,66171 ****
  * omitted middle-operands:               Conditionals.       (line    6)
  * open coding:                           Inline.             (line    6)
  * OpenACC accelerator programming:       C Dialect Options.  (line  325)
! * OpenACC accelerator programming <1>:   C Dialect Options.  (line  334)
! * OpenMP parallel:                       C Dialect Options.  (line  340)
! * OpenMP SIMD:                           C Dialect Options.  (line  349)
  * OpenRISC Options:                      OpenRISC Options.   (line    6)
  * operand constraints, asm:              Constraints.        (line    6)
  * optimize function attribute:           Common Function Attributes.
!                                                              (line  879)
  * optimize options:                      Optimize Options.   (line    6)
  * options to control diagnostics formatting: Diagnostic Message Formatting Options.
                                                               (line    6)
--- 66201,66213 ----
  * omitted middle-operands:               Conditionals.       (line    6)
  * open coding:                           Inline.             (line    6)
  * OpenACC accelerator programming:       C Dialect Options.  (line  325)
! * OpenACC accelerator programming <1>:   C Dialect Options.  (line  333)
! * OpenMP parallel:                       C Dialect Options.  (line  339)
! * OpenMP SIMD:                           C Dialect Options.  (line  347)
  * OpenRISC Options:                      OpenRISC Options.   (line    6)
  * operand constraints, asm:              Constraints.        (line    6)
  * optimize function attribute:           Common Function Attributes.
!                                                              (line  884)
  * optimize options:                      Optimize Options.   (line    6)
  * options to control diagnostics formatting: Diagnostic Message Formatting Options.
                                                               (line    6)
*************** Keyword Index
*** 66212,66218 ****
  * partial_save function attribute, NDS32: NDS32 Function Attributes.
                                                               (line   31)
  * patchable_function_entry function attribute: Common Function Attributes.
!                                                              (line  905)
  * path GCC_COLORS capability:            Diagnostic Message Formatting Options.
                                                               (line   86)
  * pcs function attribute, ARM:           ARM Function Attributes.
--- 66254,66260 ----
  * partial_save function attribute, NDS32: NDS32 Function Attributes.
                                                               (line   31)
  * patchable_function_entry function attribute: Common Function Attributes.
!                                                              (line  910)
  * path GCC_COLORS capability:            Diagnostic Message Formatting Options.
                                                               (line   86)
  * pcs function attribute, ARM:           ARM Function Attributes.
*************** Keyword Index
*** 66310,66316 ****
                                                               (line    6)
  * PRU Options:                           PRU Options.        (line    6)
  * pure function attribute:               Common Function Attributes.
!                                                              (line  923)
  * push address instruction:              Simple Constraints. (line  152)
  * putchar:                               Other Builtins.     (line    6)
  * puts:                                  Other Builtins.     (line    6)
--- 66352,66358 ----
                                                               (line    6)
  * PRU Options:                           PRU Options.        (line    6)
  * pure function attribute:               Common Function Attributes.
!                                                              (line  928)
  * push address instruction:              Simple Constraints. (line  152)
  * putchar:                               Other Builtins.     (line    6)
  * puts:                                  Other Builtins.     (line    6)
*************** Keyword Index
*** 66323,66332 ****
  * r fixed-suffix:                        Fixed-Point.        (line    6)
  * R fixed-suffix:                        Fixed-Point.        (line    6)
  * r in constraint:                       Simple Constraints. (line   64)
! * RAMPD:                                 AVR Options.        (line  430)
! * RAMPX:                                 AVR Options.        (line  430)
! * RAMPY:                                 AVR Options.        (line  430)
! * RAMPZ:                                 AVR Options.        (line  430)
  * range1 GCC_COLORS capability:          Diagnostic Message Formatting Options.
                                                               (line   92)
  * range2 GCC_COLORS capability:          Diagnostic Message Formatting Options.
--- 66365,66374 ----
  * r fixed-suffix:                        Fixed-Point.        (line    6)
  * R fixed-suffix:                        Fixed-Point.        (line    6)
  * r in constraint:                       Simple Constraints. (line   64)
! * RAMPD:                                 AVR Options.        (line  428)
! * RAMPX:                                 AVR Options.        (line  428)
! * RAMPY:                                 AVR Options.        (line  428)
! * RAMPZ:                                 AVR Options.        (line  428)
  * range1 GCC_COLORS capability:          Diagnostic Message Formatting Options.
                                                               (line   92)
  * range2 GCC_COLORS capability:          Diagnostic Message Formatting Options.
*************** Keyword Index
*** 66374,66382 ****
  * restricted this pointer:               Restricted Pointers.
                                                               (line    6)
  * returns_nonnull function attribute:    Common Function Attributes.
!                                                              (line  970)
  * returns_twice function attribute:      Common Function Attributes.
!                                                              (line  980)
  * rindex:                                Other Builtins.     (line    6)
  * rint:                                  Other Builtins.     (line    6)
  * rintf:                                 Other Builtins.     (line    6)
--- 66416,66424 ----
  * restricted this pointer:               Restricted Pointers.
                                                               (line    6)
  * returns_nonnull function attribute:    Common Function Attributes.
!                                                              (line  975)
  * returns_twice function attribute:      Common Function Attributes.
!                                                              (line  985)
  * rindex:                                Other Builtins.     (line    6)
  * rint:                                  Other Builtins.     (line    6)
  * rintf:                                 Other Builtins.     (line    6)
*************** Keyword Index
*** 66430,66444 ****
                                                               (line    9)
  * search path:                           Directory Options.  (line    6)
  * section function attribute:            Common Function Attributes.
!                                                              (line  989)
  * section variable attribute:            Common Variable Attributes.
                                                               (line  292)
  * secure_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   54)
  * selectany variable attribute:          Microsoft Windows Variable Attributes.
                                                               (line   16)
  * sentinel function attribute:           Common Function Attributes.
!                                                              (line 1006)
  * setjmp:                                Global Register Variables.
                                                               (line   92)
  * setjmp incompatibilities:              Incompatibilities.  (line   39)
--- 66472,66486 ----
                                                               (line    9)
  * search path:                           Directory Options.  (line    6)
  * section function attribute:            Common Function Attributes.
!                                                              (line  994)
  * section variable attribute:            Common Variable Attributes.
                                                               (line  292)
  * secure_call function attribute, ARC:   ARC Function Attributes.
!                                                              (line   53)
  * selectany variable attribute:          Microsoft Windows Variable Attributes.
                                                               (line   16)
  * sentinel function attribute:           Common Function Attributes.
!                                                              (line 1011)
  * setjmp:                                Global Register Variables.
                                                               (line   92)
  * setjmp incompatibilities:              Incompatibilities.  (line   39)
*************** Keyword Index
*** 66452,66458 ****
  * shortcall function attribute, PowerPC: PowerPC Function Attributes.
                                                               (line   10)
  * short_call function attribute, ARC:    ARC Function Attributes.
!                                                              (line   27)
  * short_call function attribute, ARM:    ARM Function Attributes.
                                                               (line   38)
  * short_call function attribute, Epiphany: Epiphany Function Attributes.
--- 66494,66500 ----
  * shortcall function attribute, PowerPC: PowerPC Function Attributes.
                                                               (line   10)
  * short_call function attribute, ARC:    ARC Function Attributes.
!                                                              (line   26)
  * short_call function attribute, ARM:    ARM Function Attributes.
                                                               (line   38)
  * short_call function attribute, Epiphany: Epiphany Function Attributes.
*************** Keyword Index
*** 66477,66485 ****
  * significand:                           Other Builtins.     (line    6)
  * significandf:                          Other Builtins.     (line    6)
  * significandl:                          Other Builtins.     (line    6)
! * SIMD:                                  C Dialect Options.  (line  349)
  * simd function attribute:               Common Function Attributes.
!                                                              (line 1033)
  * simple constraints:                    Simple Constraints. (line    6)
  * sin:                                   Other Builtins.     (line    6)
  * sincos:                                Other Builtins.     (line    6)
--- 66519,66527 ----
  * significand:                           Other Builtins.     (line    6)
  * significandf:                          Other Builtins.     (line    6)
  * significandl:                          Other Builtins.     (line    6)
! * SIMD:                                  C Dialect Options.  (line  347)
  * simd function attribute:               Common Function Attributes.
!                                                              (line 1038)
  * simple constraints:                    Simple Constraints. (line    6)
  * sin:                                   Other Builtins.     (line    6)
  * sincos:                                Other Builtins.     (line    6)
*************** Keyword Index
*** 66494,66504 ****
  * smaller data references:               M32R/D Options.     (line   57)
  * smaller data references <1>:           Nios II Options.    (line    9)
  * smaller data references (PowerPC):     RS/6000 and PowerPC Options.
!                                                              (line  714)
  * snprintf:                              Other Builtins.     (line    6)
  * Solaris 2 options:                     Solaris 2 Options.  (line    6)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                              (line  177)
  * SPARC options:                         SPARC Options.      (line    6)
  * Spec Files:                            Spec Files.         (line    6)
  * specified registers:                   Explicit Register Variables.
--- 66536,66546 ----
  * smaller data references:               M32R/D Options.     (line   57)
  * smaller data references <1>:           Nios II Options.    (line    9)
  * smaller data references (PowerPC):     RS/6000 and PowerPC Options.
!                                                              (line  713)
  * snprintf:                              Other Builtins.     (line    6)
  * Solaris 2 options:                     Solaris 2 Options.  (line    6)
  * SOURCE_DATE_EPOCH:                     Environment Variables.
!                                                              (line  176)
  * SPARC options:                         SPARC Options.      (line    6)
  * Spec Files:                            Spec Files.         (line    6)
  * specified registers:                   Explicit Register Variables.
*************** Keyword Index
*** 66522,66528 ****
  * sseregparm function attribute, x86:    x86 Function Attributes.
                                                               (line   93)
  * stack_protect function attribute:      Common Function Attributes.
!                                                              (line 1052)
  * Statement Attributes:                  Statement Attributes.
                                                               (line    6)
  * statements inside expressions:         Statement Exprs.    (line    6)
--- 66564,66570 ----
  * sseregparm function attribute, x86:    x86 Function Attributes.
                                                               (line   93)
  * stack_protect function attribute:      Common Function Attributes.
!                                                              (line 1057)
  * Statement Attributes:                  Statement Attributes.
                                                               (line    6)
  * statements inside expressions:         Statement Exprs.    (line    6)
*************** Keyword Index
*** 66565,66576 ****
  * subscripting and function values:      Subscripting.       (line    6)
  * suffixes for C++ source:               Invoking G++.       (line    6)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                              (line  171)
  * suppressing warnings:                  Warning Options.    (line    6)
  * surprises in C++:                      C++ Misunderstandings.
                                                               (line    6)
  * symver function attribute:             Common Function Attributes.
!                                                              (line 1096)
  * syntax checking:                       Warning Options.    (line   13)
  * syscall_linkage function attribute, IA-64: IA-64 Function Attributes.
                                                               (line    9)
--- 66607,66618 ----
  * subscripting and function values:      Subscripting.       (line    6)
  * suffixes for C++ source:               Invoking G++.       (line    6)
  * SUNPRO_DEPENDENCIES:                   Environment Variables.
!                                                              (line  170)
  * suppressing warnings:                  Warning Options.    (line    6)
  * surprises in C++:                      C++ Misunderstandings.
                                                               (line    6)
  * symver function attribute:             Common Function Attributes.
!                                                              (line 1101)
  * syntax checking:                       Warning Options.    (line   13)
  * syscall_linkage function attribute, IA-64: IA-64 Function Attributes.
                                                               (line    9)
*************** Keyword Index
*** 66584,66590 ****
  * tanhl:                                 Other Builtins.     (line    6)
  * tanl:                                  Other Builtins.     (line    6)
  * target function attribute:             Common Function Attributes.
!                                                              (line 1057)
  * target function attribute <1>:         ARM Function Attributes.
                                                               (line   77)
  * target function attribute <2>:         Nios II Function Attributes.
--- 66626,66632 ----
  * tanhl:                                 Other Builtins.     (line    6)
  * tanl:                                  Other Builtins.     (line    6)
  * target function attribute:             Common Function Attributes.
!                                                              (line 1062)
  * target function attribute <1>:         ARM Function Attributes.
                                                               (line   77)
  * target function attribute <2>:         Nios II Function Attributes.
*************** Keyword Index
*** 66832,66838 ****
                                                               (line  501)
  * target-dependent options:              Submodel Options.   (line    6)
  * target_clones function attribute:      Common Function Attributes.
!                                                              (line 1126)
  * TC1:                                   Standards.          (line   13)
  * TC2:                                   Standards.          (line   13)
  * TC3:                                   Standards.          (line   13)
--- 66874,66880 ----
                                                               (line  501)
  * target-dependent options:              Submodel Options.   (line    6)
  * target_clones function attribute:      Common Function Attributes.
!                                                              (line 1131)
  * TC1:                                   Standards.          (line   13)
  * TC2:                                   Standards.          (line   13)
  * TC3:                                   Standards.          (line   13)
*************** Keyword Index
*** 66925,66931 ****
  * unresolved references and -nodefaultlibs: Link Options.    (line  154)
  * unresolved references and -nostdlib:   Link Options.       (line  154)
  * unused function attribute:             Common Function Attributes.
!                                                              (line 1153)
  * unused label attribute:                Label Attributes.   (line   31)
  * unused type attribute:                 Common Type Attributes.
                                                               (line  410)
--- 66967,66973 ----
  * unresolved references and -nodefaultlibs: Link Options.    (line  154)
  * unresolved references and -nostdlib:   Link Options.       (line  154)
  * unused function attribute:             Common Function Attributes.
!                                                              (line 1158)
  * unused label attribute:                Label Attributes.   (line   31)
  * unused type attribute:                 Common Type Attributes.
                                                               (line  410)
*************** Keyword Index
*** 66940,66946 ****
  * urls:                                  Diagnostic Message Formatting Options.
                                                               (line  129)
  * used function attribute:               Common Function Attributes.
!                                                              (line 1158)
  * used variable attribute:               Common Variable Attributes.
                                                               (line  351)
  * User stack pointer in interrupts on the Blackfin: Blackfin Function Attributes.
--- 66982,66988 ----
  * urls:                                  Diagnostic Message Formatting Options.
                                                               (line  129)
  * used function attribute:               Common Function Attributes.
!                                                              (line 1163)
  * used variable attribute:               Common Variable Attributes.
                                                               (line  351)
  * User stack pointer in interrupts on the Blackfin: Blackfin Function Attributes.
*************** Keyword Index
*** 66983,66989 ****
  * vfprintf:                              Other Builtins.     (line    6)
  * vfscanf:                               Other Builtins.     (line    6)
  * visibility function attribute:         Common Function Attributes.
!                                                              (line 1168)
  * visibility type attribute:             Common Type Attributes.
                                                               (line  446)
  * visibility variable attribute:         Common Variable Attributes.
--- 67025,67031 ----
  * vfprintf:                              Other Builtins.     (line    6)
  * vfscanf:                               Other Builtins.     (line    6)
  * visibility function attribute:         Common Function Attributes.
!                                                              (line 1173)
  * visibility type attribute:             Common Type Attributes.
                                                               (line  446)
  * visibility variable attribute:         Common Variable Attributes.
*************** Keyword Index
*** 67037,67056 ****
                                                               (line  106)
  * warn_unused type attribute:            C++ Attributes.     (line   71)
  * warn_unused_result function attribute: Common Function Attributes.
!                                                              (line 1268)
  * weak function attribute:               Common Function Attributes.
!                                                              (line 1285)
  * weak variable attribute:               Common Variable Attributes.
                                                               (line  393)
  * weakref function attribute:            Common Function Attributes.
!                                                              (line 1297)
  * whitespace:                            Incompatibilities.  (line  112)
  * Windows Options for x86:               x86 Windows Options.
                                                               (line    6)
  * X in constraint:                       Simple Constraints. (line  122)
  * X3.159-1989:                           Standards.          (line   13)
  * x86 named address spaces:              Named Address Spaces.
!                                                              (line  170)
  * x86 Options:                           x86 Options.        (line    6)
  * x86 Windows Options:                   x86 Windows Options.
                                                               (line    6)
--- 67079,67098 ----
                                                               (line  106)
  * warn_unused type attribute:            C++ Attributes.     (line   71)
  * warn_unused_result function attribute: Common Function Attributes.
!                                                              (line 1273)
  * weak function attribute:               Common Function Attributes.
!                                                              (line 1290)
  * weak variable attribute:               Common Variable Attributes.
                                                               (line  393)
  * weakref function attribute:            Common Function Attributes.
!                                                              (line 1302)
  * whitespace:                            Incompatibilities.  (line  112)
  * Windows Options for x86:               x86 Windows Options.
                                                               (line    6)
  * X in constraint:                       Simple Constraints. (line  122)
  * X3.159-1989:                           Standards.          (line   13)
  * x86 named address spaces:              Named Address Spaces.
!                                                              (line  169)
  * x86 Options:                           x86 Options.        (line    6)
  * x86 Windows Options:                   x86 Windows Options.
                                                               (line    6)
*************** Keyword Index
*** 67075,67500 ****
  
  Tag Table:
  Node: Top2135
! Node: G++ and GCC4093
! Node: Standards6153
! Node: Invoking GCC19770
! Node: Option Summary24946
! Node: Overall Options80062
! Node: Invoking G++95390
! Node: C Dialect Options96913
! Node: C++ Dialect Options116145
! Node: Objective-C and Objective-C++ Dialect Options165287
! Node: Diagnostic Message Formatting Options176683
! Node: Warning Options202404
! Ref: Wtrigraphs298464
! Node: Static Analyzer Options334149
! Node: Debugging Options346858
! Node: Optimize Options366107
! Ref: Type-punning435676
! Node: Instrumentation Options543157
! Node: Preprocessor Options583339
! Ref: dashMF588186
! Ref: fdollars-in-identifiers592765
! Node: Assembler Options605145
! Node: Link Options605836
! Ref: Link Options-Footnote-1622712
! Node: Directory Options623048
! Node: Code Gen Options631451
! Node: Developer Options659816
! Node: Submodel Options701730
! Node: AArch64 Options703540
! Ref: aarch64-feature-modifiers718180
! Node: Adapteva Epiphany Options723292
! Node: AMD GCN Options729244
! Node: ARC Options730138
! Node: ARM Options751364
! Node: AVR Options792094
! Node: Blackfin Options818616
! Node: C6X Options826508
! Node: CRIS Options828051
! Node: CR16 Options831790
! Node: C-SKY Options832702
! Node: Darwin Options837562
! Node: DEC Alpha Options845003
! Node: eBPF Options856619
! Node: FR30 Options857901
! Node: FT32 Options858461
! Node: FRV Options859407
! Node: GNU/Linux Options866171
! Node: H8/300 Options867552
! Node: HPPA Options869004
! Node: IA-64 Options878536
! Node: LM32 Options886664
! Node: M32C Options887187
! Node: M32R/D Options888460
! Node: M680x0 Options892005
! Node: MCore Options906080
! Node: MeP Options907582
! Node: MicroBlaze Options911542
! Node: MIPS Options914632
! Node: MMIX Options951171
! Node: MN10300 Options953648
! Node: Moxie Options956191
! Node: MSP430 Options956678
! Node: NDS32 Options963774
! Node: Nios II Options965944
! Node: Nvidia PTX Options978106
! Node: OpenRISC Options980575
! Node: PDP-11 Options983095
! Node: picoChip Options984344
! Node: PowerPC Options986482
! Node: PRU Options986702
! Node: RISC-V Options988911
! Node: RL78 Options994415
! Node: RS/6000 and PowerPC Options998190
! Node: RX Options1039190
! Node: S/390 and zSeries Options1047792
! Node: Score Options1058571
! Node: SH Options1059420
! Node: Solaris 2 Options1074560
! Node: SPARC Options1075798
! Node: System V Options1091424
! Node: TILE-Gx Options1092252
! Node: TILEPro Options1093270
! Node: V850 Options1093774
! Node: VAX Options1100461
! Node: Visium Options1100999
! Node: VMS Options1103307
! Node: VxWorks Options1104123
! Node: x86 Options1105275
! Node: x86 Windows Options1168028
! Node: Xstormy16 Options1170833
! Node: Xtensa Options1171127
! Node: zSeries Options1176276
! Node: Spec Files1176472
! Node: Environment Variables1198640
! Node: Precompiled Headers1207366
! Node: C Implementation1213555
! Node: Translation implementation1215245
! Node: Environment implementation1215836
! Node: Identifiers implementation1216390
! Node: Characters implementation1217476
! Node: Integers implementation1221126
! Node: Floating point implementation1223175
! Node: Arrays and pointers implementation1226238
! Ref: Arrays and pointers implementation-Footnote-11227698
! Node: Hints implementation1227824
! Node: Structures unions enumerations and bit-fields implementation1229319
! Node: Qualifiers implementation1231543
! Node: Declarators implementation1233604
! Node: Statements implementation1233945
! Node: Preprocessing directives implementation1234271
! Node: Library functions implementation1236592
! Node: Architecture implementation1237241
! Node: Locale-specific behavior implementation1238886
! Node: C++ Implementation1239191
! Node: Conditionally-supported behavior1240474
! Node: Exception handling1241091
! Node: C Extensions1241558
! Node: Statement Exprs1246762
! Node: Local Labels1252134
! Node: Labels as Values1255107
! Ref: Labels as Values-Footnote-11257634
! Node: Nested Functions1257819
! Node: Nonlocal Gotos1261773
! Node: Constructing Calls1264039
! Node: Typeof1268754
! Node: Conditionals1272683
! Node: __int1281273572
! Node: Long Long1274097
! Node: Complex1275588
! Node: Floating Types1278356
! Node: Half-Precision1281823
! Node: Decimal Float1284234
! Node: Hex Floats1286088
! Node: Fixed-Point1287162
! Node: Named Address Spaces1290420
! Ref: AVR Named Address Spaces1291101
! Node: Zero Length1297713
! Node: Empty Structures1301894
! Node: Variable Length1302300
! Node: Variadic Macros1305018
! Node: Escaped Newlines1307396
! Node: Subscripting1308257
! Node: Pointer Arith1308982
! Node: Variadic Pointer Args1309559
! Node: Pointers to Arrays1310284
! Node: Initializers1311037
! Node: Compound Literals1311538
! Node: Designated Inits1315105
! Node: Case Ranges1319029
! Node: Cast to Union1319710
! Node: Mixed Declarations1321433
! Node: Function Attributes1321943
! Node: Common Function Attributes1326399
! Node: AArch64 Function Attributes1391240
! Node: AMD GCN Function Attributes1397434
! Node: ARC Function Attributes1400487
! Node: ARM Function Attributes1403424
! Node: AVR Function Attributes1408563
! Node: Blackfin Function Attributes1413098
! Node: BPF Function Attributes1415595
! Node: CR16 Function Attributes1416183
! Node: C-SKY Function Attributes1416702
! Node: Epiphany Function Attributes1418001
! Node: H8/300 Function Attributes1420756
! Node: IA-64 Function Attributes1421954
! Node: M32C Function Attributes1422996
! Node: M32R/D Function Attributes1425334
! Node: m68k Function Attributes1426808
! Node: MCORE Function Attributes1427752
! Node: MeP Function Attributes1428563
! Node: MicroBlaze Function Attributes1429864
! Node: Microsoft Windows Function Attributes1431371
! Node: MIPS Function Attributes1435940
! Node: MSP430 Function Attributes1441558
! Node: NDS32 Function Attributes1445637
! Node: Nios II Function Attributes1448061
! Node: Nvidia PTX Function Attributes1449358
! Node: PowerPC Function Attributes1449973
! Node: RISC-V Function Attributes1456747
! Node: RL78 Function Attributes1458163
! Node: RX Function Attributes1459402
! Node: S/390 Function Attributes1461949
! Node: SH Function Attributes1463777
! Node: Symbian OS Function Attributes1467205
! Node: V850 Function Attributes1467541
! Node: Visium Function Attributes1468086
! Node: x86 Function Attributes1468614
! Node: Xstormy16 Function Attributes1491103
! Node: Variable Attributes1491610
! Node: Common Variable Attributes1493143
! Node: ARC Variable Attributes1511273
! Node: AVR Variable Attributes1511655
! Node: Blackfin Variable Attributes1516817
! Node: H8/300 Variable Attributes1517675
! Node: IA-64 Variable Attributes1518748
! Node: M32R/D Variable Attributes1519499
! Node: MeP Variable Attributes1520282
! Node: Microsoft Windows Variable Attributes1522375
! Node: MSP430 Variable Attributes1524828
! Node: Nvidia PTX Variable Attributes1526782
! Node: PowerPC Variable Attributes1527399
! Node: RL78 Variable Attributes1527956
! Node: V850 Variable Attributes1528375
! Node: x86 Variable Attributes1529008
! Node: Xstormy16 Variable Attributes1530064
! Node: Type Attributes1530634
! Node: Common Type Attributes1532298
! Node: ARC Type Attributes1553791
! Node: ARM Type Attributes1554263
! Node: MeP Type Attributes1555045
! Node: PowerPC Type Attributes1555447
! Node: x86 Type Attributes1556436
! Node: Label Attributes1557428
! Node: Enumerator Attributes1559361
! Node: Statement Attributes1560680
! Node: Attribute Syntax1562163
! Node: Function Prototypes1573421
! Node: C++ Comments1575201
! Node: Dollar Signs1575720
! Node: Character Escapes1576185
! Node: Alignment1576469
! Node: Inline1578122
! Node: Volatiles1582939
! Node: Using Assembly Language with C1585838
! Node: Basic Asm1587075
! Node: Extended Asm1592525
! Ref: Volatile1596624
! Ref: AssemblerTemplate1600744
! Ref: OutputOperands1604984
! Ref: FlagOutputOperands1611947
! Ref: InputOperands1614894
! Ref: Clobbers and Scratch Registers1619162
! Ref: GotoLabels1627803
! Ref: x86Operandmodifiers1629938
! Ref: x86floatingpointasmoperands1633095
! Node: Constraints1636424
! Node: Simple Constraints1637530
! Node: Multi-Alternative1644844
! Node: Modifiers1646519
! Node: Machine Constraints1649317
! Node: Asm Labels1705542
! Node: Explicit Register Variables1707162
! Ref: Explicit Reg Vars1707376
! Node: Global Register Variables1707985
! Ref: Global Reg Vars1708193
! Node: Local Register Variables1712975
! Ref: Local Reg Vars1713195
! Node: Size of an asm1716823
! Node: Alternate Keywords1718301
! Node: Incomplete Enums1719806
! Node: Function Names1720563
! Node: Return Address1722467
! Node: Vector Extensions1727054
! Node: Offsetof1736819
! Node: __sync Builtins1737652
! Node: __atomic Builtins1744095
! Node: Integer Overflow Builtins1757720
! Node: x86 specific memory model extensions for transactional memory1764203
! Node: Object Size Checking1765469
! Node: Other Builtins1771725
! Node: Target Builtins1821176
! Node: AArch64 Built-in Functions1822924
! Node: Alpha Built-in Functions1823379
! Node: Altera Nios II Built-in Functions1826427
! Node: ARC Built-in Functions1830796
! Node: ARC SIMD Built-in Functions1836008
! Node: ARM iWMMXt Built-in Functions1844904
! Node: ARM C Language Extensions (ACLE)1851900
! Node: ARM Floating Point Status and Control Intrinsics1853177
! Node: ARM ARMv8-M Security Extensions1853662
! Node: AVR Built-in Functions1854942
! Node: Blackfin Built-in Functions1858703
! Node: BPF Built-in Functions1859321
! Node: FR-V Built-in Functions1860221
! Node: Argument Types1861084
! Node: Directly-mapped Integer Functions1862838
! Node: Directly-mapped Media Functions1863922
! Node: Raw read/write Functions1872128
! Node: Other Built-in Functions1873036
! Node: MIPS DSP Built-in Functions1874222
! Node: MIPS Paired-Single Support1886719
! Node: MIPS Loongson Built-in Functions1888218
! Node: Paired-Single Arithmetic1894740
! Node: Paired-Single Built-in Functions1895688
! Node: MIPS-3D Built-in Functions1898355
! Node: MIPS SIMD Architecture (MSA) Support1903749
! Node: MIPS SIMD Architecture Built-in Functions1906589
! Node: Other MIPS Built-in Functions1933443
! Node: MSP430 Built-in Functions1934452
! Node: NDS32 Built-in Functions1935853
! Node: picoChip Built-in Functions1937146
! Node: Basic PowerPC Built-in Functions1938495
! Node: Basic PowerPC Built-in Functions Available on all Configurations1939295
! Node: Basic PowerPC Built-in Functions Available on ISA 2.051947804
! Node: Basic PowerPC Built-in Functions Available on ISA 2.061952639
! Node: Basic PowerPC Built-in Functions Available on ISA 2.071954719
! Node: Basic PowerPC Built-in Functions Available on ISA 3.01955573
! Node: PowerPC AltiVec/VSX Built-in Functions1962489
! Node: PowerPC AltiVec Built-in Functions on ISA 2.051966171
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.062055409
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.072079854
! Node: PowerPC AltiVec Built-in Functions Available on ISA 3.02101058
! Node: PowerPC Hardware Transactional Memory Built-in Functions2136194
! Node: PowerPC Atomic Memory Operation Functions2144709
! Node: PowerPC Matrix-Multiply Assist Built-in Functions2147272
! Node: RISC-V Built-in Functions2153272
! Node: RX Built-in Functions2153710
! Node: S/390 System z Built-in Functions2157712
! Node: SH Built-in Functions2162942
! Node: SPARC VIS Built-in Functions2164670
! Node: TI C6X Built-in Functions2173202
! Node: TILE-Gx Built-in Functions2174233
! Node: TILEPro Built-in Functions2175352
! Node: x86 Built-in Functions2176452
! Node: x86 transactional memory intrinsics2240361
! Node: x86 control-flow protection intrinsics2243628
! Node: Target Format Checks2245399
! Node: Solaris Format Checks2245831
! Node: Darwin Format Checks2246257
! Node: Pragmas2247220
! Node: AArch64 Pragmas2248161
! Node: ARM Pragmas2248618
! Node: M32C Pragmas2249245
! Node: MeP Pragmas2250317
! Node: PRU Pragmas2252369
! Node: RS/6000 and PowerPC Pragmas2252947
! Node: S/390 Pragmas2253687
! Node: Darwin Pragmas2254253
! Node: Solaris Pragmas2255306
! Node: Symbol-Renaming Pragmas2256470
! Node: Structure-Layout Pragmas2258107
! Node: Weak Pragmas2260387
! Node: Diagnostic Pragmas2261122
! Node: Visibility Pragmas2265313
! Node: Push/Pop Macro Pragmas2265998
! Node: Function Specific Option Pragmas2266971
! Node: Loop-Specific Pragmas2268937
! Node: Unnamed Fields2270537
! Node: Thread-Local2272734
! Node: C99 Thread-Local Edits2274840
! Node: C++98 Thread-Local Edits2276838
! Node: Binary constants2280283
! Node: C++ Extensions2280954
! Node: C++ Volatiles2282584
! Node: Restricted Pointers2284932
! Node: Vague Linkage2286523
! Node: C++ Interface2290146
! Ref: C++ Interface-Footnote-12293943
! Node: Template Instantiation2294081
! Node: Bound member functions2300172
! Node: C++ Attributes2301704
! Node: Function Multiversioning2305776
! Node: Type Traits2307583
! Node: C++ Concepts2314533
! Node: Deprecated Features2316039
! Node: Backwards Compatibility2317864
! Node: Objective-C2318936
! Node: GNU Objective-C runtime API2319543
! Node: Modern GNU Objective-C runtime API2320550
! Node: Traditional GNU Objective-C runtime API2322986
! Node: Executing code before main2323713
! Node: What you can and what you cannot do in +load2326457
! Node: Type encoding2328827
! Node: Legacy type encoding2333968
! Node: @encode2335058
! Node: Method signatures2335603
! Node: Garbage Collection2337595
! Node: Constant string objects2340285
! Node: compatibility_alias2342794
! Node: Exceptions2343519
! Node: Synchronization2346229
! Node: Fast enumeration2347413
! Node: Using fast enumeration2347725
! Node: c99-like fast enumeration syntax2348936
! Node: Fast enumeration details2349639
! Node: Fast enumeration protocol2351979
! Node: Messaging with the GNU Objective-C runtime2355131
! Node: Dynamically registering methods2356503
! Node: Forwarding hook2358194
! Node: Compatibility2361234
! Node: Gcov2367790
! Node: Gcov Intro2368325
! Node: Invoking Gcov2371043
! Node: Gcov and Optimization2393878
! Node: Gcov Data Files2397621
! Node: Cross-profiling2399030
! Node: Gcov-tool2400884
! Node: Gcov-tool Intro2401309
! Node: Invoking Gcov-tool2403279
! Node: Gcov-dump2405857
! Node: Gcov-dump Intro2406180
! Node: Invoking Gcov-dump2406447
! Node: lto-dump2407048
! Node: lto-dump Intro2407347
! Node: Invoking lto-dump2407597
! Node: Trouble2408693
! Node: Actual Bugs2410110
! Node: Interoperation2410557
! Node: Incompatibilities2417448
! Node: Fixed Headers2425600
! Node: Standard Libraries2427258
! Node: Disappointments2428630
! Node: C++ Misunderstandings2432989
! Node: Static Definitions2433800
! Node: Name lookup2434853
! Ref: Name lookup-Footnote-12439634
! Node: Temporaries2439823
! Node: Copy Assignment2441799
! Node: Non-bugs2443606
! Node: Warnings and Errors2454112
! Node: Bugs2455874
! Node: Bug Criteria2456341
! Node: Bug Reporting2458551
! Node: Service2458769
! Node: Contributing2459589
! Node: Funding2460330
! Node: GNU Project2462820
! Node: Copying2463466
! Node: GNU Free Documentation License2500974
! Node: Contributors2526092
! Node: Option Index2567065
! Node: Keyword Index2846471
  
  End Tag Table
--- 67117,67547 ----
  
  Tag Table:
  Node: Top2135
! Node: G++ and GCC4105
! Node: Standards6165
! Node: Invoking GCC19782
! Node: Option Summary24958
! Node: Overall Options80110
! Node: Invoking G++95438
! Node: C Dialect Options96961
! Node: C++ Dialect Options116193
! Node: Objective-C and Objective-C++ Dialect Options165335
! Node: Diagnostic Message Formatting Options176731
! Node: Warning Options202452
! Ref: Wtrigraphs298530
! Node: Static Analyzer Options334215
! Node: Debugging Options346924
! Node: Optimize Options366173
! Ref: Type-punning435742
! Node: Instrumentation Options543223
! Node: Preprocessor Options583639
! Ref: dashMF588486
! Ref: fdollars-in-identifiers593065
! Node: Assembler Options605445
! Node: Link Options606136
! Ref: Link Options-Footnote-1623012
! Node: Directory Options623348
! Node: Code Gen Options631751
! Node: Developer Options660116
! Node: Submodel Options702030
! Node: AArch64 Options703840
! Ref: aarch64-feature-modifiers719636
! Node: Adapteva Epiphany Options724748
! Node: AMD GCN Options730700
! Node: ARC Options731594
! Node: ARM Options752820
! Node: AVR Options793943
! Node: Blackfin Options820466
! Node: C6X Options828358
! Node: CRIS Options829901
! Node: CR16 Options833640
! Node: C-SKY Options834552
! Node: Darwin Options839412
! Node: DEC Alpha Options846853
! Node: eBPF Options858469
! Node: FR30 Options859751
! Node: FT32 Options860311
! Node: FRV Options861257
! Node: GNU/Linux Options868021
! Node: H8/300 Options869402
! Node: HPPA Options870854
! Node: IA-64 Options880386
! Node: LM32 Options888514
! Node: M32C Options889037
! Node: M32R/D Options890310
! Node: M680x0 Options893855
! Node: MCore Options907930
! Node: MeP Options909432
! Node: MicroBlaze Options913392
! Node: MIPS Options916482
! Node: MMIX Options953021
! Node: MN10300 Options955498
! Node: Moxie Options958041
! Node: MSP430 Options958528
! Node: NDS32 Options965624
! Node: Nios II Options967794
! Node: Nvidia PTX Options979956
! Node: OpenRISC Options982425
! Node: PDP-11 Options984945
! Node: picoChip Options986194
! Node: PowerPC Options988332
! Node: PRU Options988552
! Node: RISC-V Options990761
! Node: RL78 Options996265
! Node: RS/6000 and PowerPC Options1000040
! Node: RX Options1041023
! Node: S/390 and zSeries Options1049625
! Node: Score Options1060404
! Node: SH Options1061253
! Node: Solaris 2 Options1076393
! Node: SPARC Options1077631
! Node: System V Options1093283
! Node: TILE-Gx Options1094111
! Node: TILEPro Options1095129
! Node: V850 Options1095633
! Node: VAX Options1102320
! Node: Visium Options1102858
! Node: VMS Options1105166
! Node: VxWorks Options1105982
! Node: x86 Options1107134
! Node: x86 Windows Options1169887
! Node: Xstormy16 Options1172692
! Node: Xtensa Options1172986
! Node: zSeries Options1178135
! Node: Spec Files1178331
! Node: Environment Variables1200490
! Node: Precompiled Headers1209216
! Node: C Implementation1215405
! Node: Translation implementation1217095
! Node: Environment implementation1217686
! Node: Identifiers implementation1218240
! Node: Characters implementation1219326
! Node: Integers implementation1222976
! Node: Floating point implementation1225025
! Node: Arrays and pointers implementation1228088
! Ref: Arrays and pointers implementation-Footnote-11229548
! Node: Hints implementation1229674
! Node: Structures unions enumerations and bit-fields implementation1231169
! Node: Qualifiers implementation1233393
! Node: Declarators implementation1235454
! Node: Statements implementation1235795
! Node: Preprocessing directives implementation1236121
! Node: Library functions implementation1238442
! Node: Architecture implementation1239091
! Node: Locale-specific behavior implementation1240736
! Node: C++ Implementation1241041
! Node: Conditionally-supported behavior1242324
! Node: Exception handling1242941
! Node: C Extensions1243408
! Node: Statement Exprs1248612
! Node: Local Labels1253984
! Node: Labels as Values1256957
! Ref: Labels as Values-Footnote-11259484
! Node: Nested Functions1259669
! Node: Nonlocal Gotos1263623
! Node: Constructing Calls1265889
! Node: Typeof1270604
! Node: Conditionals1274533
! Node: __int1281275422
! Node: Long Long1275947
! Node: Complex1277438
! Node: Floating Types1280206
! Node: Half-Precision1283673
! Node: Decimal Float1286084
! Node: Hex Floats1287938
! Node: Fixed-Point1289012
! Node: Named Address Spaces1292270
! Ref: AVR Named Address Spaces1292951
! Node: Zero Length1299563
! Node: Empty Structures1303744
! Node: Variable Length1304150
! Node: Variadic Macros1306868
! Node: Escaped Newlines1309246
! Node: Subscripting1310107
! Node: Pointer Arith1310832
! Node: Variadic Pointer Args1311409
! Node: Pointers to Arrays1312134
! Node: Initializers1312887
! Node: Compound Literals1313388
! Node: Designated Inits1316955
! Node: Case Ranges1320879
! Node: Cast to Union1321560
! Node: Mixed Declarations1323283
! Node: Function Attributes1323793
! Node: Common Function Attributes1328249
! Node: AArch64 Function Attributes1393353
! Node: AMD GCN Function Attributes1399547
! Node: ARC Function Attributes1402600
! Node: ARM Function Attributes1405537
! Node: AVR Function Attributes1410676
! Node: Blackfin Function Attributes1415211
! Node: BPF Function Attributes1417708
! Node: CR16 Function Attributes1418296
! Node: C-SKY Function Attributes1418815
! Node: Epiphany Function Attributes1420114
! Node: H8/300 Function Attributes1422869
! Node: IA-64 Function Attributes1424067
! Node: M32C Function Attributes1425109
! Node: M32R/D Function Attributes1427447
! Node: m68k Function Attributes1428921
! Node: MCORE Function Attributes1429865
! Node: MeP Function Attributes1430676
! Node: MicroBlaze Function Attributes1431977
! Node: Microsoft Windows Function Attributes1433484
! Node: MIPS Function Attributes1438053
! Node: MSP430 Function Attributes1443671
! Node: NDS32 Function Attributes1447750
! Node: Nios II Function Attributes1450174
! Node: Nvidia PTX Function Attributes1451471
! Node: PowerPC Function Attributes1452086
! Node: RISC-V Function Attributes1458860
! Node: RL78 Function Attributes1460276
! Node: RX Function Attributes1461515
! Node: S/390 Function Attributes1464062
! Node: SH Function Attributes1465890
! Node: Symbian OS Function Attributes1469318
! Node: V850 Function Attributes1469654
! Node: Visium Function Attributes1470199
! Node: x86 Function Attributes1470727
! Node: Xstormy16 Function Attributes1493216
! Node: Variable Attributes1493723
! Node: Common Variable Attributes1495256
! Node: ARC Variable Attributes1513386
! Node: AVR Variable Attributes1513768
! Node: Blackfin Variable Attributes1518930
! Node: H8/300 Variable Attributes1519788
! Node: IA-64 Variable Attributes1520861
! Node: M32R/D Variable Attributes1521612
! Node: MeP Variable Attributes1522395
! Node: Microsoft Windows Variable Attributes1524488
! Node: MSP430 Variable Attributes1526941
! Node: Nvidia PTX Variable Attributes1528895
! Node: PowerPC Variable Attributes1529512
! Node: RL78 Variable Attributes1530069
! Node: V850 Variable Attributes1530488
! Node: x86 Variable Attributes1531121
! Node: Xstormy16 Variable Attributes1532177
! Node: Type Attributes1532747
! Node: Common Type Attributes1534411
! Node: ARC Type Attributes1555904
! Node: ARM Type Attributes1556376
! Node: MeP Type Attributes1557158
! Node: PowerPC Type Attributes1557560
! Node: x86 Type Attributes1558549
! Node: Label Attributes1559541
! Node: Enumerator Attributes1561474
! Node: Statement Attributes1562793
! Node: Attribute Syntax1564276
! Node: Function Prototypes1575534
! Node: C++ Comments1577314
! Node: Dollar Signs1577833
! Node: Character Escapes1578298
! Node: Alignment1578582
! Node: Inline1580235
! Node: Volatiles1585052
! Node: Using Assembly Language with C1587951
! Node: Basic Asm1589188
! Node: Extended Asm1594638
! Ref: Volatile1598737
! Ref: AssemblerTemplate1602857
! Ref: OutputOperands1607097
! Ref: FlagOutputOperands1614060
! Ref: InputOperands1617007
! Ref: Clobbers and Scratch Registers1621275
! Ref: GotoLabels1629916
! Ref: x86Operandmodifiers1632051
! Ref: x86floatingpointasmoperands1635208
! Node: Constraints1638537
! Node: Simple Constraints1639643
! Node: Multi-Alternative1646957
! Node: Modifiers1648632
! Node: Machine Constraints1651430
! Node: Asm Labels1707655
! Node: Explicit Register Variables1709275
! Ref: Explicit Reg Vars1709489
! Node: Global Register Variables1710098
! Ref: Global Reg Vars1710306
! Node: Local Register Variables1715088
! Ref: Local Reg Vars1715308
! Node: Size of an asm1718936
! Node: Alternate Keywords1720414
! Node: Incomplete Enums1721919
! Node: Function Names1722676
! Node: Return Address1724580
! Node: Vector Extensions1729167
! Node: Offsetof1738932
! Node: __sync Builtins1739765
! Node: __atomic Builtins1746208
! Node: Integer Overflow Builtins1759833
! Node: x86 specific memory model extensions for transactional memory1766316
! Node: Object Size Checking1767582
! Node: Other Builtins1773838
! Node: Target Builtins1823289
! Node: AArch64 Built-in Functions1825037
! Node: Alpha Built-in Functions1825492
! Node: Altera Nios II Built-in Functions1828540
! Node: ARC Built-in Functions1832909
! Node: ARC SIMD Built-in Functions1838121
! Node: ARM iWMMXt Built-in Functions1847017
! Node: ARM C Language Extensions (ACLE)1854013
! Node: ARM Floating Point Status and Control Intrinsics1855290
! Node: ARM ARMv8-M Security Extensions1855775
! Node: AVR Built-in Functions1857055
! Node: Blackfin Built-in Functions1860816
! Node: BPF Built-in Functions1861434
! Node: FR-V Built-in Functions1862334
! Node: Argument Types1863197
! Node: Directly-mapped Integer Functions1864951
! Node: Directly-mapped Media Functions1866035
! Node: Raw read/write Functions1874241
! Node: Other Built-in Functions1875149
! Node: MIPS DSP Built-in Functions1876335
! Node: MIPS Paired-Single Support1888832
! Node: MIPS Loongson Built-in Functions1890331
! Node: Paired-Single Arithmetic1896853
! Node: Paired-Single Built-in Functions1897801
! Node: MIPS-3D Built-in Functions1900468
! Node: MIPS SIMD Architecture (MSA) Support1905862
! Node: MIPS SIMD Architecture Built-in Functions1908702
! Node: Other MIPS Built-in Functions1935556
! Node: MSP430 Built-in Functions1936565
! Node: NDS32 Built-in Functions1937966
! Node: picoChip Built-in Functions1939259
! Node: Basic PowerPC Built-in Functions1940608
! Node: Basic PowerPC Built-in Functions Available on all Configurations1941408
! Node: Basic PowerPC Built-in Functions Available on ISA 2.051949917
! Node: Basic PowerPC Built-in Functions Available on ISA 2.061954752
! Node: Basic PowerPC Built-in Functions Available on ISA 2.071956832
! Node: Basic PowerPC Built-in Functions Available on ISA 3.01957686
! Node: PowerPC AltiVec/VSX Built-in Functions1964602
! Node: PowerPC AltiVec Built-in Functions on ISA 2.051968284
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.062057522
! Node: PowerPC AltiVec Built-in Functions Available on ISA 2.072081967
! Node: PowerPC AltiVec Built-in Functions Available on ISA 3.02103171
! Node: PowerPC Hardware Transactional Memory Built-in Functions2138307
! Node: PowerPC Atomic Memory Operation Functions2146822
! Node: PowerPC Matrix-Multiply Assist Built-in Functions2149385
! Node: RISC-V Built-in Functions2155517
! Node: RX Built-in Functions2155955
! Node: S/390 System z Built-in Functions2159957
! Node: SH Built-in Functions2165187
! Node: SPARC VIS Built-in Functions2166915
! Node: TI C6X Built-in Functions2175447
! Node: TILE-Gx Built-in Functions2176478
! Node: TILEPro Built-in Functions2177597
! Node: x86 Built-in Functions2178697
! Node: x86 transactional memory intrinsics2242606
! Node: x86 control-flow protection intrinsics2245873
! Node: Target Format Checks2247644
! Node: Solaris Format Checks2248076
! Node: Darwin Format Checks2248502
! Node: Pragmas2249465
! Node: AArch64 Pragmas2250406
! Node: ARM Pragmas2250863
! Node: M32C Pragmas2251490
! Node: MeP Pragmas2252562
! Node: PRU Pragmas2254614
! Node: RS/6000 and PowerPC Pragmas2255192
! Node: S/390 Pragmas2255932
! Node: Darwin Pragmas2256498
! Node: Solaris Pragmas2257551
! Node: Symbol-Renaming Pragmas2258715
! Node: Structure-Layout Pragmas2260352
! Node: Weak Pragmas2262632
! Node: Diagnostic Pragmas2263367
! Node: Visibility Pragmas2267558
! Node: Push/Pop Macro Pragmas2268243
! Node: Function Specific Option Pragmas2269216
! Node: Loop-Specific Pragmas2271182
! Node: Unnamed Fields2272782
! Node: Thread-Local2274979
! Node: C99 Thread-Local Edits2277085
! Node: C++98 Thread-Local Edits2279083
! Node: Binary constants2282528
! Node: C++ Extensions2283199
! Node: C++ Volatiles2284829
! Node: Restricted Pointers2287177
! Node: Vague Linkage2288768
! Node: C++ Interface2292391
! Ref: C++ Interface-Footnote-12296188
! Node: Template Instantiation2296326
! Node: Bound member functions2302417
! Node: C++ Attributes2303949
! Node: Function Multiversioning2308021
! Node: Type Traits2309828
! Node: C++ Concepts2316778
! Node: Deprecated Features2318284
! Node: Backwards Compatibility2320109
! Node: Objective-C2321181
! Node: GNU Objective-C runtime API2321788
! Node: Modern GNU Objective-C runtime API2322795
! Node: Traditional GNU Objective-C runtime API2325231
! Node: Executing code before main2325958
! Node: What you can and what you cannot do in +load2328702
! Node: Type encoding2331072
! Node: Legacy type encoding2336213
! Node: @encode2337303
! Node: Method signatures2337848
! Node: Garbage Collection2339840
! Node: Constant string objects2342530
! Node: compatibility_alias2345039
! Node: Exceptions2345764
! Node: Synchronization2348474
! Node: Fast enumeration2349658
! Node: Using fast enumeration2349970
! Node: c99-like fast enumeration syntax2351181
! Node: Fast enumeration details2351884
! Node: Fast enumeration protocol2354224
! Node: Messaging with the GNU Objective-C runtime2357376
! Node: Dynamically registering methods2358748
! Node: Forwarding hook2360439
! Node: Compatibility2363479
! Node: Gcov2370035
! Node: Gcov Intro2370570
! Node: Invoking Gcov2373288
! Node: Gcov and Optimization2396123
! Node: Gcov Data Files2399866
! Node: Cross-profiling2401275
! Node: Gcov-tool2403129
! Node: Gcov-tool Intro2403554
! Node: Invoking Gcov-tool2405524
! Node: Gcov-dump2408102
! Node: Gcov-dump Intro2408425
! Node: Invoking Gcov-dump2408692
! Node: lto-dump2409293
! Node: lto-dump Intro2409592
! Node: Invoking lto-dump2409842
! Node: Trouble2410938
! Node: Actual Bugs2412355
! Node: Interoperation2412802
! Node: Incompatibilities2419693
! Node: Fixed Headers2427845
! Node: Standard Libraries2429503
! Node: Disappointments2430875
! Node: C++ Misunderstandings2435234
! Node: Static Definitions2436045
! Node: Name lookup2437098
! Ref: Name lookup-Footnote-12441879
! Node: Temporaries2442068
! Node: Copy Assignment2444044
! Node: Non-bugs2445879
! Node: Warnings and Errors2456385
! Node: Bugs2458147
! Node: Bug Criteria2458614
! Node: Bug Reporting2460824
! Node: Service2461042
! Node: Contributing2461862
! Node: Funding2462603
! Node: GNU Project2465093
! Node: Copying2465739
! Node: GNU Free Documentation License2503247
! Node: Contributors2528365
! Node: Option Index2569338
! Node: Keyword Index2848817
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/gcc/doc/gccinstall.info gcc-10.4.0/gcc/doc/gccinstall.info
*** gcc-10.3.0/gcc/doc/gccinstall.info	Thu Apr  8 12:06:41 2021
--- gcc-10.4.0/gcc/doc/gccinstall.info	Tue Jun 28 09:09:20 2022
***************
*** 1,4 ****
! This is gccinstall.info, produced by makeinfo version 6.5 from
  install.texi.
  
  Copyright (C) 1988-2020 Free Software Foundation, Inc.
--- 1,4 ----
! This is gccinstall.info, produced by makeinfo version 6.8 from
  install.texi.
  
  Copyright (C) 1988-2020 Free Software Foundation, Inc.
*************** option.
*** 840,845 ****
--- 840,849 ----
  '--with-ld=PATHNAME'
       Same as '--with-as' but for the linker.
  
+ '--with-dsymutil=PATHNAME'
+      Same as '--with-as' but for the debug linker (only used on Darwin
+      platforms so far).
+ 
  '--with-stabs'
       Specify that stabs debugging information should be used instead of
       whatever format the host normally uses.  Normally GCC uses the same
*************** Concept Index
*** 4819,4825 ****
  * Menu:
  
  * Binaries:                              Binaries.           (line    6)
! * build_configargs:                      Configuration.      (line 1699)
  * Configuration:                         Configuration.      (line    6)
  * configurations supported by GCC:       Configurations.     (line    6)
  * Downloading GCC:                       Downloading the source.
--- 4823,4829 ----
  * Menu:
  
  * Binaries:                              Binaries.           (line    6)
! * build_configargs:                      Configuration.      (line 1702)
  * Configuration:                         Configuration.      (line    6)
  * configurations supported by GCC:       Configurations.     (line    6)
  * Downloading GCC:                       Downloading the source.
*************** Concept Index
*** 4829,4835 ****
  * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line    6)
  * Host specific installation:            Specific.           (line    6)
! * host_configargs:                       Configuration.      (line 1703)
  * Installing GCC: Binaries:              Binaries.           (line    6)
  * Installing GCC: Building:              Building.           (line    6)
  * Installing GCC: Configuration:         Configuration.      (line    6)
--- 4833,4839 ----
  * FDL, GNU Free Documentation License:   GNU Free Documentation License.
                                                               (line    6)
  * Host specific installation:            Specific.           (line    6)
! * host_configargs:                       Configuration.      (line 1706)
  * Installing GCC: Binaries:              Binaries.           (line    6)
  * Installing GCC: Building:              Building.           (line    6)
  * Installing GCC: Configuration:         Configuration.      (line    6)
*************** Concept Index
*** 4839,4845 ****
  * Specific installation notes:           Specific.           (line    6)
  * Target specific installation:          Specific.           (line    6)
  * Target specific installation notes:    Specific.           (line    6)
! * target_configargs:                     Configuration.      (line 1707)
  * Testing:                               Testing.            (line    6)
  * Testsuite:                             Testing.            (line    6)
  
--- 4843,4849 ----
  * Specific installation notes:           Specific.           (line    6)
  * Target specific installation:          Specific.           (line    6)
  * Target specific installation notes:    Specific.           (line    6)
! * target_configargs:                     Configuration.      (line 1710)
  * Testing:                               Testing.            (line    6)
  * Testsuite:                             Testing.            (line    6)
  
*************** Node: Configuration17158
*** 4855,4952 ****
  Ref: with-gnu-as33246
  Ref: with-as34141
  Ref: with-gnu-ld35550
! Ref: WithAixSoname58229
! Ref: AixLdCommand58890
! Node: Building100321
! Node: Testing116190
! Node: Final install124077
! Node: Binaries129377
! Node: Specific130484
! Ref: aarch64-x-x130991
! Ref: alpha-x-x133011
! Ref: amd64-x-solaris2133225
! Ref: amdgcn-x-amdhsa133307
! Ref: arc-x-elf32133833
! Ref: arc-linux-uclibc134009
! Ref: arm-x-eabi134150
! Ref: avr134403
! Ref: bfin134984
! Ref: cr16135247
! Ref: cris135663
! Ref: dos136361
! Ref: epiphany-x-elf136684
! Ref: x-x-freebsd136789
! Ref: ft32-x-elf138589
! Ref: h8300-hms138687
! Ref: hppa-hp-hpux139039
! Ref: hppa-hp-hpux10141411
! Ref: hppa-hp-hpux11141824
! Ref: x-x-linux-gnu147226
! Ref: ix86-x-linux147419
! Ref: ix86-x-solaris2147732
! Ref: ia64-x-linux148808
! Ref: ia64-x-hpux149578
! Ref: x-ibm-aix150133
! Ref: TransferAixShobj153795
! Ref: iq2000-x-elf157605
! Ref: lm32-x-elf157745
! Ref: lm32-x-uclinux157849
! Ref: m32c-x-elf157977
! Ref: m32r-x-elf158079
! Ref: m68k-x-x158181
! Ref: m68k-x-uclinux159219
! Ref: microblaze-x-elf159464
! Ref: mips-x-x159583
! Ref: moxie-x-elf161493
! Ref: msp430-x-elf161540
! Ref: nds32le-x-elf162097
! Ref: nds32be-x-elf162169
! Ref: nvptx-x-none162238
! Ref: or1k-x-elf162801
! Ref: or1k-x-linux162932
! Ref: powerpc-x-x163013
! Ref: powerpc-x-darwin163204
! Ref: powerpc-x-elf163698
! Ref: powerpc-x-linux-gnu163783
! Ref: powerpc-x-netbsd163878
! Ref: powerpc-x-eabisim163966
! Ref: powerpc-x-eabi164092
! Ref: powerpcle-x-elf164168
! Ref: powerpcle-x-eabisim164260
! Ref: powerpcle-x-eabi164393
! Ref: rl78-x-elf164476
! Ref: riscv32-x-elf164582
! Ref: riscv32-x-linux164771
! Ref: riscv64-x-elf164928
! Ref: riscv64-x-linux165117
! Ref: rx-x-elf165274
! Ref: s390-x-linux165320
! Ref: s390x-x-linux165392
! Ref: s390x-ibm-tpf165479
! Ref: x-x-solaris2165610
! Ref: sparc-x-x168717
! Ref: sparc-sun-solaris2169219
! Ref: sparc-x-linux170362
! Ref: sparc64-x-solaris2170393
! Ref: sparcv9-x-solaris2171111
! Ref: c6x-x-x171198
! Ref: tilegx-*-linux171290
! Ref: tilegxbe-*-linux171432
! Ref: tilepro-*-linux171575
! Ref: visium-x-elf171696
! Ref: x-x-vxworks171804
! Ref: x86-64-x-x173327
! Ref: x86-64-x-solaris2173655
! Ref: xtensa-x-elf174305
! Ref: xtensa-x-linux174976
! Ref: windows175317
! Ref: x-x-cygwin177158
! Ref: x-x-mingw32177711
! Ref: older177937
! Ref: elf180054
! Node: Old180312
! Node: Configurations183445
! Node: GNU Free Documentation License186983
! Node: Concept Index212111
  
  End Tag Table
--- 4859,4961 ----
  Ref: with-gnu-as33246
  Ref: with-as34141
  Ref: with-gnu-ld35550
! Ref: WithAixSoname58352
! Ref: AixLdCommand59013
! Node: Building100444
! Node: Testing116313
! Node: Final install124200
! Node: Binaries129500
! Node: Specific130607
! Ref: aarch64-x-x131114
! Ref: alpha-x-x133134
! Ref: amd64-x-solaris2133348
! Ref: amdgcn-x-amdhsa133430
! Ref: arc-x-elf32133956
! Ref: arc-linux-uclibc134132
! Ref: arm-x-eabi134273
! Ref: avr134526
! Ref: bfin135107
! Ref: cr16135370
! Ref: cris135786
! Ref: dos136484
! Ref: epiphany-x-elf136807
! Ref: x-x-freebsd136912
! Ref: ft32-x-elf138712
! Ref: h8300-hms138810
! Ref: hppa-hp-hpux139162
! Ref: hppa-hp-hpux10141534
! Ref: hppa-hp-hpux11141947
! Ref: x-x-linux-gnu147349
! Ref: ix86-x-linux147542
! Ref: ix86-x-solaris2147855
! Ref: ia64-x-linux148931
! Ref: ia64-x-hpux149701
! Ref: x-ibm-aix150256
! Ref: TransferAixShobj153918
! Ref: iq2000-x-elf157728
! Ref: lm32-x-elf157868
! Ref: lm32-x-uclinux157972
! Ref: m32c-x-elf158100
! Ref: m32r-x-elf158202
! Ref: m68k-x-x158304
! Ref: m68k-x-uclinux159342
! Ref: microblaze-x-elf159587
! Ref: mips-x-x159706
! Ref: moxie-x-elf161616
! Ref: msp430-x-elf161663
! Ref: nds32le-x-elf162220
! Ref: nds32be-x-elf162292
! Ref: nvptx-x-none162361
! Ref: or1k-x-elf162924
! Ref: or1k-x-linux163055
! Ref: powerpc-x-x163136
! Ref: powerpc-x-darwin163327
! Ref: powerpc-x-elf163821
! Ref: powerpc-x-linux-gnu163906
! Ref: powerpc-x-netbsd164001
! Ref: powerpc-x-eabisim164089
! Ref: powerpc-x-eabi164215
! Ref: powerpcle-x-elf164291
! Ref: powerpcle-x-eabisim164383
! Ref: powerpcle-x-eabi164516
! Ref: rl78-x-elf164599
! Ref: riscv32-x-elf164705
! Ref: riscv32-x-linux164894
! Ref: riscv64-x-elf165051
! Ref: riscv64-x-linux165240
! Ref: rx-x-elf165397
! Ref: s390-x-linux165443
! Ref: s390x-x-linux165515
! Ref: s390x-ibm-tpf165602
! Ref: x-x-solaris2165733
! Ref: sparc-x-x168840
! Ref: sparc-sun-solaris2169342
! Ref: sparc-x-linux170485
! Ref: sparc64-x-solaris2170516
! Ref: sparcv9-x-solaris2171234
! Ref: c6x-x-x171321
! Ref: tilegx-*-linux171413
! Ref: tilegxbe-*-linux171555
! Ref: tilepro-*-linux171698
! Ref: visium-x-elf171819
! Ref: x-x-vxworks171927
! Ref: x86-64-x-x173450
! Ref: x86-64-x-solaris2173778
! Ref: xtensa-x-elf174428
! Ref: xtensa-x-linux175099
! Ref: windows175440
! Ref: x-x-cygwin177281
! Ref: x-x-mingw32177834
! Ref: older178060
! Ref: elf180177
! Node: Old180435
! Node: Configurations183568
! Node: GNU Free Documentation License187106
! Node: Concept Index212234
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/gcc/doc/gccint.info gcc-10.4.0/gcc/doc/gccint.info
*** gcc-10.3.0/gcc/doc/gccint.info	Thu Apr  8 12:06:45 2021
--- gcc-10.4.0/gcc/doc/gccint.info	Tue Jun 28 09:09:30 2022
***************
*** 1,4 ****
! This is gccint.info, produced by makeinfo version 6.5 from gccint.texi.
  
  Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
--- 1,4 ----
! This is gccint.info, produced by makeinfo version 6.8 from gccint.texi.
  
  Copyright (C) 1988-2020 Free Software Foundation, Inc.
  
*************** Copies published by the Free Software Fo
*** 47,53 ****
  development.
  
  
! File: gccint.info,  Node: Top,  Next: Contributing
  
  Introduction
  ************
--- 47,53 ----
  development.
  
  
! File: gccint.info,  Node: Top,  Next: Contributing,  Up: (dir)
  
  Introduction
  ************
*************** Introduction
*** 55,61 ****
  This manual documents the internals of the GNU compilers, including how
  to port them to new targets and some information about how to write
  front ends for new languages.  It corresponds to the compilers (GCC)
! version 10.3.0.  The use of the GNU compilers is documented in a
  separate manual.  *Note Introduction: (gcc)Top.
  
   This manual is mainly a reference manual rather than a tutorial.  It
--- 55,61 ----
  This manual documents the internals of the GNU compilers, including how
  to port them to new targets and some information about how to write
  front ends for new languages.  It corresponds to the compilers (GCC)
! version 10.4.0.  The use of the GNU compilers is documented in a
  separate manual.  *Note Introduction: (gcc)Top.
  
   This manual is mainly a reference manual rather than a tutorial.  It
*************** File: gccint.info,  Node: GIMPLE_CALL,
*** 13893,13899 ****
       call needs no further simplification.  All the call flags in
       'call_expr' are copied over to the new 'GIMPLE_CALL'.
  
!  -- GIMPLE function: gcall *gimple_build_call_vec (tree fn, 'vec<tree>'
            args)
       Identical to 'gimple_build_call' but the arguments are stored in a
       'vec<tree>'.
--- 13893,13899 ----
       call needs no further simplification.  All the call flags in
       'call_expr' are copied over to the new 'GIMPLE_CALL'.
  
!  -- GIMPLE function: gcall *gimple_build_call_vec (tree fn, vec<tree>
            args)
       Identical to 'gimple_build_call' but the arguments are stored in a
       'vec<tree>'.
*************** File: gccint.info,  Node: GIMPLE_SWITCH,
*** 14700,14706 ****
  -----------------------
  
   -- GIMPLE function: gswitch *gimple_build_switch (tree index, tree
!           default_label, 'vec'<tree> *args)
       Build a 'GIMPLE_SWITCH' statement.  'INDEX' is the index variable
       to switch on, and 'DEFAULT_LABEL' represents the default label.
       'ARGS' is a vector of 'CASE_LABEL_EXPR' trees that contain the
--- 14700,14706 ----
  -----------------------
  
   -- GIMPLE function: gswitch *gimple_build_switch (tree index, tree
!           default_label, vec<tree> *args)
       Build a 'GIMPLE_SWITCH' statement.  'INDEX' is the index variable
       to switch on, and 'DEFAULT_LABEL' represents the default label.
       'ARGS' is a vector of 'CASE_LABEL_EXPR' trees that contain the
*************** and termination functions:
*** 39649,39654 ****
--- 39649,39662 ----
       collecting constructors and destructors to be run at startup and
       exit.  It is false if we must use 'collect2'.
  
+  -- Target Hook: bool TARGET_DTORS_FROM_CXA_ATEXIT
+      This value is true if the target wants destructors to be queued to
+      be run from __cxa_atexit.  If this is the case then, for each
+      priority level, a new constructor will be entered that registers
+      the destructors for that level with __cxa_atexit (and there will be
+      no destructors emitted).  It is false the method implied by
+      'have_ctors_dtors' is used.
+ 
   -- Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx SYMBOL, int PRIORITY)
       If defined, a function that outputs assembler code to arrange to
       call the function referenced by SYMBOL at initialization time.
*************** alphabetical order.
*** 47669,47675 ****
  
     * Ralf Corsepius for SH testing and minor bug fixing.
  
!    * Franc,ois-Xavier Coudert for contributions to GNU Fortran.
  
     * Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
--- 47677,47683 ----
  
     * Ralf Corsepius for SH testing and minor bug fixing.
  
!    * François-Xavier Coudert for contributions to GNU Fortran.
  
     * Stan Cox for care and feeding of the x86 port and lots of behind
       the scenes hacking.
*************** alphabetical order.
*** 47712,47718 ****
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    * Franc,ois Dumont for his work on libstdc++-v3, especially
       maintaining and improving 'debug-mode' and associative and
       unordered containers.
  
--- 47720,47726 ----
       disbursement, configuration architecture, libio maintenance, and
       early math work.
  
!    * François Dumont for his work on libstdc++-v3, especially
       maintaining and improving 'debug-mode' and associative and
       unordered containers.
  
*************** alphabetical order.
*** 47971,47983 ****
  
     * Weiwen Liu for testing and various bug fixes.
  
!    * Manuel Lo'pez-Iba'n~ez for improving '-Wconversion' and many other
       diagnostics fixes and improvements.
  
     * Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    * Martin von Lo"wis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
--- 47979,47991 ----
  
     * Weiwen Liu for testing and various bug fixes.
  
!    * Manuel López-Ibáñez for improving '-Wconversion' and many other
       diagnostics fixes and improvements.
  
     * Dave Love for his ongoing work with the Fortran front end and
       runtime libraries.
  
!    * Martin von Löwis for internal consistency checking infrastructure,
       various C++ improvements including namespace support, and tons of
       assistance with libstdc++/compiler merges.
  
*************** alphabetical order.
*** 48169,48175 ****
  
     * Craig Rodrigues for processing tons of bug reports.
  
!    * Ola Ro"nnerup for work on mt_alloc.
  
     * Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
--- 48177,48183 ----
  
     * Craig Rodrigues for processing tons of bug reports.
  
!    * Ola Rönnerup for work on mt_alloc.
  
     * Gavin Romig-Koch for lots of behind the scenes MIPS work.
  
*************** alphabetical order.
*** 48183,48189 ****
  
     * Paul Rubin wrote most of the preprocessor.
  
!    * Pe'tur Runo'lfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
     * Chip Salzenberg for libstdc++ patches and improvements to locales,
--- 48191,48197 ----
  
     * Paul Rubin wrote most of the preprocessor.
  
!    * Pétur Runólfsson for major performance improvements in C++
       formatted I/O and large file support in C++ filebuf.
  
     * Chip Salzenberg for libstdc++ patches and improvements to locales,
*************** alphabetical order.
*** 48204,48210 ****
  
     * William Schelter did most of the work on the Intel 80386 support.
  
!    * Tobias Schlu"ter for work on GNU Fortran.
  
     * Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
--- 48212,48218 ----
  
     * William Schelter did most of the work on the Intel 80386 support.
  
!    * Tobias Schlüter for work on GNU Fortran.
  
     * Bernd Schmidt for various code generation improvements and major
       work in the reload pass, serving as release manager for GCC 2.95.3,
*************** contributions to testing:
*** 48701,48707 ****
  
     * Robert A. French
  
!    * Jo"rgen Freyh
  
     * Mark K. Gardner
  
--- 48709,48715 ----
  
     * Robert A. French
  
!    * Jörgen Freyh
  
     * Mark K. Gardner
  
*************** Concept Index
*** 48924,48966 ****
  * __absvsi2:                             Integer library routines.
                                                               (line  105)
  * __addda3:                              Fixed-point fractional library routines.
!                                                              (line   52)
  * __adddf3:                              Soft float library routines.
                                                               (line   22)
  * __adddq3:                              Fixed-point fractional library routines.
!                                                              (line   39)
  * __addha3:                              Fixed-point fractional library routines.
!                                                              (line   49)
  * __addhq3:                              Fixed-point fractional library routines.
!                                                              (line   37)
  * __addqq3:                              Fixed-point fractional library routines.
!                                                              (line   35)
  * __addsa3:                              Fixed-point fractional library routines.
!                                                              (line   51)
  * __addsf3:                              Soft float library routines.
                                                               (line   21)
  * __addsq3:                              Fixed-point fractional library routines.
!                                                              (line   38)
  * __addta3:                              Fixed-point fractional library routines.
!                                                              (line   53)
  * __addtf3:                              Soft float library routines.
                                                               (line   23)
  * __adduda3:                             Fixed-point fractional library routines.
!                                                              (line   59)
  * __addudq3:                             Fixed-point fractional library routines.
!                                                              (line   47)
  * __adduha3:                             Fixed-point fractional library routines.
!                                                              (line   55)
  * __adduhq3:                             Fixed-point fractional library routines.
!                                                              (line   43)
  * __adduqq3:                             Fixed-point fractional library routines.
!                                                              (line   41)
  * __addusa3:                             Fixed-point fractional library routines.
!                                                              (line   57)
  * __addusq3:                             Fixed-point fractional library routines.
!                                                              (line   45)
  * __adduta3:                             Fixed-point fractional library routines.
!                                                              (line   61)
  * __addvdi3:                             Integer library routines.
                                                               (line  110)
  * __addvsi3:                             Integer library routines.
--- 48932,48974 ----
  * __absvsi2:                             Integer library routines.
                                                               (line  105)
  * __addda3:                              Fixed-point fractional library routines.
!                                                              (line   44)
  * __adddf3:                              Soft float library routines.
                                                               (line   22)
  * __adddq3:                              Fixed-point fractional library routines.
!                                                              (line   31)
  * __addha3:                              Fixed-point fractional library routines.
!                                                              (line   41)
  * __addhq3:                              Fixed-point fractional library routines.
!                                                              (line   29)
  * __addqq3:                              Fixed-point fractional library routines.
!                                                              (line   27)
  * __addsa3:                              Fixed-point fractional library routines.
!                                                              (line   43)
  * __addsf3:                              Soft float library routines.
                                                               (line   21)
  * __addsq3:                              Fixed-point fractional library routines.
!                                                              (line   30)
  * __addta3:                              Fixed-point fractional library routines.
!                                                              (line   45)
  * __addtf3:                              Soft float library routines.
                                                               (line   23)
  * __adduda3:                             Fixed-point fractional library routines.
!                                                              (line   51)
  * __addudq3:                             Fixed-point fractional library routines.
!                                                              (line   39)
  * __adduha3:                             Fixed-point fractional library routines.
!                                                              (line   47)
  * __adduhq3:                             Fixed-point fractional library routines.
!                                                              (line   35)
  * __adduqq3:                             Fixed-point fractional library routines.
!                                                              (line   33)
  * __addusa3:                             Fixed-point fractional library routines.
!                                                              (line   49)
  * __addusq3:                             Fixed-point fractional library routines.
!                                                              (line   37)
  * __adduta3:                             Fixed-point fractional library routines.
!                                                              (line   53)
  * __addvdi3:                             Integer library routines.
                                                               (line  110)
  * __addvsi3:                             Integer library routines.
*************** Concept Index
*** 48968,49030 ****
  * __addxf3:                              Soft float library routines.
                                                               (line   25)
  * __ashlda3:                             Fixed-point fractional library routines.
!                                                              (line  358)
  * __ashldi3:                             Integer library routines.
                                                               (line   13)
  * __ashldq3:                             Fixed-point fractional library routines.
!                                                              (line  346)
  * __ashlha3:                             Fixed-point fractional library routines.
!                                                              (line  356)
  * __ashlhq3:                             Fixed-point fractional library routines.
!                                                              (line  344)
  * __ashlqq3:                             Fixed-point fractional library routines.
!                                                              (line  343)
  * __ashlsa3:                             Fixed-point fractional library routines.
!                                                              (line  357)
  * __ashlsi3:                             Integer library routines.
                                                               (line   12)
  * __ashlsq3:                             Fixed-point fractional library routines.
!                                                              (line  345)
  * __ashlta3:                             Fixed-point fractional library routines.
!                                                              (line  359)
  * __ashlti3:                             Integer library routines.
                                                               (line   14)
  * __ashluda3:                            Fixed-point fractional library routines.
!                                                              (line  365)
  * __ashludq3:                            Fixed-point fractional library routines.
!                                                              (line  354)
  * __ashluha3:                            Fixed-point fractional library routines.
!                                                              (line  361)
  * __ashluhq3:                            Fixed-point fractional library routines.
!                                                              (line  350)
  * __ashluqq3:                            Fixed-point fractional library routines.
!                                                              (line  348)
  * __ashlusa3:                            Fixed-point fractional library routines.
!                                                              (line  363)
  * __ashlusq3:                            Fixed-point fractional library routines.
!                                                              (line  352)
  * __ashluta3:                            Fixed-point fractional library routines.
!                                                              (line  367)
  * __ashrda3:                             Fixed-point fractional library routines.
!                                                              (line  378)
  * __ashrdi3:                             Integer library routines.
                                                               (line   18)
  * __ashrdq3:                             Fixed-point fractional library routines.
!                                                              (line  374)
  * __ashrha3:                             Fixed-point fractional library routines.
!                                                              (line  376)
  * __ashrhq3:                             Fixed-point fractional library routines.
!                                                              (line  372)
  * __ashrqq3:                             Fixed-point fractional library routines.
!                                                              (line  371)
  * __ashrsa3:                             Fixed-point fractional library routines.
!                                                              (line  377)
  * __ashrsi3:                             Integer library routines.
                                                               (line   17)
  * __ashrsq3:                             Fixed-point fractional library routines.
!                                                              (line  373)
  * __ashrta3:                             Fixed-point fractional library routines.
!                                                              (line  379)
  * __ashrti3:                             Integer library routines.
                                                               (line   19)
  * __bid_adddd3:                          Decimal float library routines.
--- 48976,49038 ----
  * __addxf3:                              Soft float library routines.
                                                               (line   25)
  * __ashlda3:                             Fixed-point fractional library routines.
!                                                              (line  350)
  * __ashldi3:                             Integer library routines.
                                                               (line   13)
  * __ashldq3:                             Fixed-point fractional library routines.
!                                                              (line  338)
  * __ashlha3:                             Fixed-point fractional library routines.
!                                                              (line  348)
  * __ashlhq3:                             Fixed-point fractional library routines.
!                                                              (line  336)
  * __ashlqq3:                             Fixed-point fractional library routines.
!                                                              (line  335)
  * __ashlsa3:                             Fixed-point fractional library routines.
!                                                              (line  349)
  * __ashlsi3:                             Integer library routines.
                                                               (line   12)
  * __ashlsq3:                             Fixed-point fractional library routines.
!                                                              (line  337)
  * __ashlta3:                             Fixed-point fractional library routines.
!                                                              (line  351)
  * __ashlti3:                             Integer library routines.
                                                               (line   14)
  * __ashluda3:                            Fixed-point fractional library routines.
!                                                              (line  357)
  * __ashludq3:                            Fixed-point fractional library routines.
!                                                              (line  346)
  * __ashluha3:                            Fixed-point fractional library routines.
!                                                              (line  353)
  * __ashluhq3:                            Fixed-point fractional library routines.
!                                                              (line  342)
  * __ashluqq3:                            Fixed-point fractional library routines.
!                                                              (line  340)
  * __ashlusa3:                            Fixed-point fractional library routines.
!                                                              (line  355)
  * __ashlusq3:                            Fixed-point fractional library routines.
!                                                              (line  344)
  * __ashluta3:                            Fixed-point fractional library routines.
!                                                              (line  359)
  * __ashrda3:                             Fixed-point fractional library routines.
!                                                              (line  370)
  * __ashrdi3:                             Integer library routines.
                                                               (line   18)
  * __ashrdq3:                             Fixed-point fractional library routines.
!                                                              (line  366)
  * __ashrha3:                             Fixed-point fractional library routines.
!                                                              (line  368)
  * __ashrhq3:                             Fixed-point fractional library routines.
!                                                              (line  364)
  * __ashrqq3:                             Fixed-point fractional library routines.
!                                                              (line  363)
  * __ashrsa3:                             Fixed-point fractional library routines.
!                                                              (line  369)
  * __ashrsi3:                             Integer library routines.
                                                               (line   17)
  * __ashrsq3:                             Fixed-point fractional library routines.
!                                                              (line  365)
  * __ashrta3:                             Fixed-point fractional library routines.
!                                                              (line  371)
  * __ashrti3:                             Integer library routines.
                                                               (line   19)
  * __bid_adddd3:                          Decimal float library routines.
*************** Concept Index
*** 49223,49269 ****
  * __clzti2:                              Integer library routines.
                                                               (line  131)
  * __cmpda2:                              Fixed-point fractional library routines.
!                                                              (line  458)
  * __cmpdf2:                              Soft float library routines.
                                                               (line  163)
  * __cmpdi2:                              Integer library routines.
                                                               (line   86)
  * __cmpdq2:                              Fixed-point fractional library routines.
!                                                              (line  447)
  * __cmpha2:                              Fixed-point fractional library routines.
!                                                              (line  456)
  * __cmphq2:                              Fixed-point fractional library routines.
!                                                              (line  445)
  * __cmpqq2:                              Fixed-point fractional library routines.
!                                                              (line  444)
  * __cmpsa2:                              Fixed-point fractional library routines.
!                                                              (line  457)
  * __cmpsf2:                              Soft float library routines.
                                                               (line  162)
  * __cmpsq2:                              Fixed-point fractional library routines.
!                                                              (line  446)
  * __cmpta2:                              Fixed-point fractional library routines.
!                                                              (line  459)
  * __cmptf2:                              Soft float library routines.
                                                               (line  164)
  * __cmpti2:                              Integer library routines.
                                                               (line   87)
  * __cmpuda2:                             Fixed-point fractional library routines.
!                                                              (line  464)
  * __cmpudq2:                             Fixed-point fractional library routines.
!                                                              (line  454)
  * __cmpuha2:                             Fixed-point fractional library routines.
!                                                              (line  461)
  * __cmpuhq2:                             Fixed-point fractional library routines.
!                                                              (line  451)
  * __cmpuqq2:                             Fixed-point fractional library routines.
!                                                              (line  449)
  * __cmpusa2:                             Fixed-point fractional library routines.
!                                                              (line  463)
  * __cmpusq2:                             Fixed-point fractional library routines.
!                                                              (line  452)
  * __cmputa2:                             Fixed-point fractional library routines.
!                                                              (line  466)
  * __CTOR_LIST__:                         Initialization.     (line   25)
  * __ctzdi2:                              Integer library routines.
                                                               (line  137)
--- 49231,49277 ----
  * __clzti2:                              Integer library routines.
                                                               (line  131)
  * __cmpda2:                              Fixed-point fractional library routines.
!                                                              (line  450)
  * __cmpdf2:                              Soft float library routines.
                                                               (line  163)
  * __cmpdi2:                              Integer library routines.
                                                               (line   86)
  * __cmpdq2:                              Fixed-point fractional library routines.
!                                                              (line  439)
  * __cmpha2:                              Fixed-point fractional library routines.
!                                                              (line  448)
  * __cmphq2:                              Fixed-point fractional library routines.
!                                                              (line  437)
  * __cmpqq2:                              Fixed-point fractional library routines.
!                                                              (line  436)
  * __cmpsa2:                              Fixed-point fractional library routines.
!                                                              (line  449)
  * __cmpsf2:                              Soft float library routines.
                                                               (line  162)
  * __cmpsq2:                              Fixed-point fractional library routines.
!                                                              (line  438)
  * __cmpta2:                              Fixed-point fractional library routines.
!                                                              (line  451)
  * __cmptf2:                              Soft float library routines.
                                                               (line  164)
  * __cmpti2:                              Integer library routines.
                                                               (line   87)
  * __cmpuda2:                             Fixed-point fractional library routines.
!                                                              (line  456)
  * __cmpudq2:                             Fixed-point fractional library routines.
!                                                              (line  446)
  * __cmpuha2:                             Fixed-point fractional library routines.
!                                                              (line  453)
  * __cmpuhq2:                             Fixed-point fractional library routines.
!                                                              (line  443)
  * __cmpuqq2:                             Fixed-point fractional library routines.
!                                                              (line  441)
  * __cmpusa2:                             Fixed-point fractional library routines.
!                                                              (line  455)
  * __cmpusq2:                             Fixed-point fractional library routines.
!                                                              (line  444)
  * __cmputa2:                             Fixed-point fractional library routines.
!                                                              (line  458)
  * __CTOR_LIST__:                         Initialization.     (line   25)
  * __ctzdi2:                              Integer library routines.
                                                               (line  137)
*************** Concept Index
*** 49272,49278 ****
  * __ctzti2:                              Integer library routines.
                                                               (line  138)
  * __divda3:                              Fixed-point fractional library routines.
!                                                              (line  234)
  * __divdc3:                              Soft float library routines.
                                                               (line  250)
  * __divdf3:                              Soft float library routines.
--- 49280,49286 ----
  * __ctzti2:                              Integer library routines.
                                                               (line  138)
  * __divda3:                              Fixed-point fractional library routines.
!                                                              (line  226)
  * __divdc3:                              Soft float library routines.
                                                               (line  250)
  * __divdf3:                              Soft float library routines.
*************** Concept Index
*** 49280,49294 ****
  * __divdi3:                              Integer library routines.
                                                               (line   24)
  * __divdq3:                              Fixed-point fractional library routines.
!                                                              (line  229)
  * __divha3:                              Fixed-point fractional library routines.
!                                                              (line  231)
  * __divhq3:                              Fixed-point fractional library routines.
!                                                              (line  227)
  * __divqq3:                              Fixed-point fractional library routines.
!                                                              (line  225)
  * __divsa3:                              Fixed-point fractional library routines.
!                                                              (line  233)
  * __divsc3:                              Soft float library routines.
                                                               (line  248)
  * __divsf3:                              Soft float library routines.
--- 49288,49302 ----
  * __divdi3:                              Integer library routines.
                                                               (line   24)
  * __divdq3:                              Fixed-point fractional library routines.
!                                                              (line  221)
  * __divha3:                              Fixed-point fractional library routines.
!                                                              (line  223)
  * __divhq3:                              Fixed-point fractional library routines.
!                                                              (line  219)
  * __divqq3:                              Fixed-point fractional library routines.
!                                                              (line  217)
  * __divsa3:                              Fixed-point fractional library routines.
!                                                              (line  225)
  * __divsc3:                              Soft float library routines.
                                                               (line  248)
  * __divsf3:                              Soft float library routines.
*************** Concept Index
*** 49296,49304 ****
  * __divsi3:                              Integer library routines.
                                                               (line   23)
  * __divsq3:                              Fixed-point fractional library routines.
!                                                              (line  228)
  * __divta3:                              Fixed-point fractional library routines.
!                                                              (line  235)
  * __divtc3:                              Soft float library routines.
                                                               (line  252)
  * __divtf3:                              Soft float library routines.
--- 49304,49312 ----
  * __divsi3:                              Integer library routines.
                                                               (line   23)
  * __divsq3:                              Fixed-point fractional library routines.
!                                                              (line  220)
  * __divta3:                              Fixed-point fractional library routines.
!                                                              (line  227)
  * __divtc3:                              Soft float library routines.
                                                               (line  252)
  * __divtf3:                              Soft float library routines.
*************** Concept Index
*** 49607,50859 ****
  * __floatuntixf:                         Soft float library routines.
                                                               (line  153)
  * __fractdadf:                           Fixed-point fractional library routines.
!                                                              (line  643)
  * __fractdadi:                           Fixed-point fractional library routines.
!                                                              (line  640)
  * __fractdadq:                           Fixed-point fractional library routines.
!                                                              (line  623)
  * __fractdaha2:                          Fixed-point fractional library routines.
!                                                              (line  624)
  * __fractdahi:                           Fixed-point fractional library routines.
!                                                              (line  638)
  * __fractdahq:                           Fixed-point fractional library routines.
!                                                              (line  621)
  * __fractdaqi:                           Fixed-point fractional library routines.
!                                                              (line  637)
  * __fractdaqq:                           Fixed-point fractional library routines.
!                                                              (line  620)
  * __fractdasa2:                          Fixed-point fractional library routines.
!                                                              (line  625)
  * __fractdasf:                           Fixed-point fractional library routines.
!                                                              (line  642)
  * __fractdasi:                           Fixed-point fractional library routines.
!                                                              (line  639)
  * __fractdasq:                           Fixed-point fractional library routines.
!                                                              (line  622)
  * __fractdata2:                          Fixed-point fractional library routines.
!                                                              (line  626)
  * __fractdati:                           Fixed-point fractional library routines.
!                                                              (line  641)
  * __fractdauda:                          Fixed-point fractional library routines.
!                                                              (line  634)
  * __fractdaudq:                          Fixed-point fractional library routines.
!                                                              (line  630)
  * __fractdauha:                          Fixed-point fractional library routines.
!                                                              (line  632)
  * __fractdauhq:                          Fixed-point fractional library routines.
!                                                              (line  628)
  * __fractdauqq:                          Fixed-point fractional library routines.
!                                                              (line  627)
  * __fractdausa:                          Fixed-point fractional library routines.
!                                                              (line  633)
  * __fractdausq:                          Fixed-point fractional library routines.
!                                                              (line  629)
  * __fractdauta:                          Fixed-point fractional library routines.
!                                                              (line  635)
  * __fractdfda:                           Fixed-point fractional library routines.
!                                                              (line 1032)
  * __fractdfdq:                           Fixed-point fractional library routines.
!                                                              (line 1029)
  * __fractdfha:                           Fixed-point fractional library routines.
!                                                              (line 1030)
  * __fractdfhq:                           Fixed-point fractional library routines.
!                                                              (line 1027)
  * __fractdfqq:                           Fixed-point fractional library routines.
!                                                              (line 1026)
  * __fractdfsa:                           Fixed-point fractional library routines.
!                                                              (line 1031)
  * __fractdfsq:                           Fixed-point fractional library routines.
!                                                              (line 1028)
  * __fractdfta:                           Fixed-point fractional library routines.
!                                                              (line 1033)
  * __fractdfuda:                          Fixed-point fractional library routines.
!                                                              (line 1040)
  * __fractdfudq:                          Fixed-point fractional library routines.
!                                                              (line 1037)
  * __fractdfuha:                          Fixed-point fractional library routines.
!                                                              (line 1038)
  * __fractdfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1035)
  * __fractdfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1034)
  * __fractdfusa:                          Fixed-point fractional library routines.
!                                                              (line 1039)
  * __fractdfusq:                          Fixed-point fractional library routines.
!                                                              (line 1036)
  * __fractdfuta:                          Fixed-point fractional library routines.
!                                                              (line 1041)
  * __fractdida:                           Fixed-point fractional library routines.
!                                                              (line  982)
  * __fractdidq:                           Fixed-point fractional library routines.
!                                                              (line  979)
  * __fractdiha:                           Fixed-point fractional library routines.
!                                                              (line  980)
  * __fractdihq:                           Fixed-point fractional library routines.
!                                                              (line  977)
  * __fractdiqq:                           Fixed-point fractional library routines.
!                                                              (line  976)
  * __fractdisa:                           Fixed-point fractional library routines.
!                                                              (line  981)
  * __fractdisq:                           Fixed-point fractional library routines.
!                                                              (line  978)
  * __fractdita:                           Fixed-point fractional library routines.
!                                                              (line  983)
  * __fractdiuda:                          Fixed-point fractional library routines.
!                                                              (line  990)
  * __fractdiudq:                          Fixed-point fractional library routines.
!                                                              (line  987)
  * __fractdiuha:                          Fixed-point fractional library routines.
!                                                              (line  988)
  * __fractdiuhq:                          Fixed-point fractional library routines.
!                                                              (line  985)
  * __fractdiuqq:                          Fixed-point fractional library routines.
!                                                              (line  984)
  * __fractdiusa:                          Fixed-point fractional library routines.
!                                                              (line  989)
  * __fractdiusq:                          Fixed-point fractional library routines.
!                                                              (line  986)
  * __fractdiuta:                          Fixed-point fractional library routines.
!                                                              (line  991)
  * __fractdqda:                           Fixed-point fractional library routines.
!                                                              (line  551)
  * __fractdqdf:                           Fixed-point fractional library routines.
!                                                              (line  573)
  * __fractdqdi:                           Fixed-point fractional library routines.
!                                                              (line  570)
  * __fractdqha:                           Fixed-point fractional library routines.
!                                                              (line  549)
  * __fractdqhi:                           Fixed-point fractional library routines.
!                                                              (line  568)
  * __fractdqhq2:                          Fixed-point fractional library routines.
!                                                              (line  547)
  * __fractdqqi:                           Fixed-point fractional library routines.
!                                                              (line  567)
  * __fractdqqq2:                          Fixed-point fractional library routines.
!                                                              (line  546)
  * __fractdqsa:                           Fixed-point fractional library routines.
!                                                              (line  550)
  * __fractdqsf:                           Fixed-point fractional library routines.
!                                                              (line  572)
  * __fractdqsi:                           Fixed-point fractional library routines.
!                                                              (line  569)
  * __fractdqsq2:                          Fixed-point fractional library routines.
!                                                              (line  548)
  * __fractdqta:                           Fixed-point fractional library routines.
!                                                              (line  552)
  * __fractdqti:                           Fixed-point fractional library routines.
-                                                              (line  571)
- * __fractdquda:                          Fixed-point fractional library routines.
                                                               (line  563)
  * __fractdqudq:                          Fixed-point fractional library routines.
!                                                              (line  558)
  * __fractdquha:                          Fixed-point fractional library routines.
!                                                              (line  560)
  * __fractdquhq:                          Fixed-point fractional library routines.
!                                                              (line  555)
  * __fractdquqq:                          Fixed-point fractional library routines.
!                                                              (line  553)
  * __fractdqusa:                          Fixed-point fractional library routines.
!                                                              (line  562)
  * __fractdqusq:                          Fixed-point fractional library routines.
!                                                              (line  556)
  * __fractdquta:                          Fixed-point fractional library routines.
!                                                              (line  565)
  * __fracthada2:                          Fixed-point fractional library routines.
!                                                              (line  579)
  * __fracthadf:                           Fixed-point fractional library routines.
!                                                              (line  597)
  * __fracthadi:                           Fixed-point fractional library routines.
!                                                              (line  594)
  * __fracthadq:                           Fixed-point fractional library routines.
!                                                              (line  577)
  * __fracthahi:                           Fixed-point fractional library routines.
!                                                              (line  592)
  * __fracthahq:                           Fixed-point fractional library routines.
!                                                              (line  575)
  * __fracthaqi:                           Fixed-point fractional library routines.
!                                                              (line  591)
  * __fracthaqq:                           Fixed-point fractional library routines.
!                                                              (line  574)
  * __fracthasa2:                          Fixed-point fractional library routines.
!                                                              (line  578)
  * __fracthasf:                           Fixed-point fractional library routines.
!                                                              (line  596)
  * __fracthasi:                           Fixed-point fractional library routines.
!                                                              (line  593)
  * __fracthasq:                           Fixed-point fractional library routines.
!                                                              (line  576)
  * __fracthata2:                          Fixed-point fractional library routines.
!                                                              (line  580)
  * __fracthati:                           Fixed-point fractional library routines.
!                                                              (line  595)
  * __fracthauda:                          Fixed-point fractional library routines.
!                                                              (line  588)
  * __fracthaudq:                          Fixed-point fractional library routines.
!                                                              (line  584)
  * __fracthauha:                          Fixed-point fractional library routines.
!                                                              (line  586)
  * __fracthauhq:                          Fixed-point fractional library routines.
!                                                              (line  582)
  * __fracthauqq:                          Fixed-point fractional library routines.
!                                                              (line  581)
  * __fracthausa:                          Fixed-point fractional library routines.
!                                                              (line  587)
  * __fracthausq:                          Fixed-point fractional library routines.
!                                                              (line  583)
  * __fracthauta:                          Fixed-point fractional library routines.
!                                                              (line  589)
  * __fracthida:                           Fixed-point fractional library routines.
!                                                              (line  950)
  * __fracthidq:                           Fixed-point fractional library routines.
!                                                              (line  947)
  * __fracthiha:                           Fixed-point fractional library routines.
!                                                              (line  948)
  * __fracthihq:                           Fixed-point fractional library routines.
!                                                              (line  945)
  * __fracthiqq:                           Fixed-point fractional library routines.
!                                                              (line  944)
  * __fracthisa:                           Fixed-point fractional library routines.
!                                                              (line  949)
  * __fracthisq:                           Fixed-point fractional library routines.
!                                                              (line  946)
  * __fracthita:                           Fixed-point fractional library routines.
!                                                              (line  951)
  * __fracthiuda:                          Fixed-point fractional library routines.
!                                                              (line  958)
  * __fracthiudq:                          Fixed-point fractional library routines.
!                                                              (line  955)
  * __fracthiuha:                          Fixed-point fractional library routines.
!                                                              (line  956)
  * __fracthiuhq:                          Fixed-point fractional library routines.
!                                                              (line  953)
  * __fracthiuqq:                          Fixed-point fractional library routines.
!                                                              (line  952)
  * __fracthiusa:                          Fixed-point fractional library routines.
!                                                              (line  957)
  * __fracthiusq:                          Fixed-point fractional library routines.
!                                                              (line  954)
  * __fracthiuta:                          Fixed-point fractional library routines.
!                                                              (line  959)
  * __fracthqda:                           Fixed-point fractional library routines.
!                                                              (line  505)
  * __fracthqdf:                           Fixed-point fractional library routines.
!                                                              (line  521)
  * __fracthqdi:                           Fixed-point fractional library routines.
!                                                              (line  518)
  * __fracthqdq2:                          Fixed-point fractional library routines.
!                                                              (line  502)
  * __fracthqha:                           Fixed-point fractional library routines.
!                                                              (line  503)
  * __fracthqhi:                           Fixed-point fractional library routines.
!                                                              (line  516)
  * __fracthqqi:                           Fixed-point fractional library routines.
!                                                              (line  515)
  * __fracthqqq2:                          Fixed-point fractional library routines.
!                                                              (line  500)
  * __fracthqsa:                           Fixed-point fractional library routines.
!                                                              (line  504)
  * __fracthqsf:                           Fixed-point fractional library routines.
!                                                              (line  520)
  * __fracthqsi:                           Fixed-point fractional library routines.
!                                                              (line  517)
  * __fracthqsq2:                          Fixed-point fractional library routines.
!                                                              (line  501)
  * __fracthqta:                           Fixed-point fractional library routines.
!                                                              (line  506)
  * __fracthqti:                           Fixed-point fractional library routines.
!                                                              (line  519)
  * __fracthquda:                          Fixed-point fractional library routines.
!                                                              (line  513)
  * __fracthqudq:                          Fixed-point fractional library routines.
!                                                              (line  510)
  * __fracthquha:                          Fixed-point fractional library routines.
!                                                              (line  511)
  * __fracthquhq:                          Fixed-point fractional library routines.
!                                                              (line  508)
  * __fracthquqq:                          Fixed-point fractional library routines.
!                                                              (line  507)
  * __fracthqusa:                          Fixed-point fractional library routines.
!                                                              (line  512)
  * __fracthqusq:                          Fixed-point fractional library routines.
!                                                              (line  509)
  * __fracthquta:                          Fixed-point fractional library routines.
!                                                              (line  514)
  * __fractqida:                           Fixed-point fractional library routines.
!                                                              (line  932)
  * __fractqidq:                           Fixed-point fractional library routines.
!                                                              (line  929)
  * __fractqiha:                           Fixed-point fractional library routines.
!                                                              (line  930)
  * __fractqihq:                           Fixed-point fractional library routines.
!                                                              (line  927)
  * __fractqiqq:                           Fixed-point fractional library routines.
!                                                              (line  926)
  * __fractqisa:                           Fixed-point fractional library routines.
!                                                              (line  931)
  * __fractqisq:                           Fixed-point fractional library routines.
!                                                              (line  928)
  * __fractqita:                           Fixed-point fractional library routines.
!                                                              (line  933)
  * __fractqiuda:                          Fixed-point fractional library routines.
!                                                              (line  941)
  * __fractqiudq:                          Fixed-point fractional library routines.
!                                                              (line  937)
  * __fractqiuha:                          Fixed-point fractional library routines.
!                                                              (line  939)
  * __fractqiuhq:                          Fixed-point fractional library routines.
!                                                              (line  935)
  * __fractqiuqq:                          Fixed-point fractional library routines.
!                                                              (line  934)
  * __fractqiusa:                          Fixed-point fractional library routines.
!                                                              (line  940)
  * __fractqiusq:                          Fixed-point fractional library routines.
!                                                              (line  936)
  * __fractqiuta:                          Fixed-point fractional library routines.
!                                                              (line  942)
  * __fractqqda:                           Fixed-point fractional library routines.
!                                                              (line  481)
  * __fractqqdf:                           Fixed-point fractional library routines.
!                                                              (line  499)
  * __fractqqdi:                           Fixed-point fractional library routines.
!                                                              (line  496)
  * __fractqqdq2:                          Fixed-point fractional library routines.
!                                                              (line  478)
  * __fractqqha:                           Fixed-point fractional library routines.
!                                                              (line  479)
  * __fractqqhi:                           Fixed-point fractional library routines.
!                                                              (line  494)
  * __fractqqhq2:                          Fixed-point fractional library routines.
!                                                              (line  476)
  * __fractqqqi:                           Fixed-point fractional library routines.
!                                                              (line  493)
  * __fractqqsa:                           Fixed-point fractional library routines.
!                                                              (line  480)
  * __fractqqsf:                           Fixed-point fractional library routines.
!                                                              (line  498)
  * __fractqqsi:                           Fixed-point fractional library routines.
!                                                              (line  495)
  * __fractqqsq2:                          Fixed-point fractional library routines.
!                                                              (line  477)
  * __fractqqta:                           Fixed-point fractional library routines.
!                                                              (line  482)
  * __fractqqti:                           Fixed-point fractional library routines.
!                                                              (line  497)
  * __fractqquda:                          Fixed-point fractional library routines.
!                                                              (line  490)
  * __fractqqudq:                          Fixed-point fractional library routines.
!                                                              (line  486)
  * __fractqquha:                          Fixed-point fractional library routines.
!                                                              (line  488)
  * __fractqquhq:                          Fixed-point fractional library routines.
!                                                              (line  484)
  * __fractqquqq:                          Fixed-point fractional library routines.
!                                                              (line  483)
  * __fractqqusa:                          Fixed-point fractional library routines.
!                                                              (line  489)
  * __fractqqusq:                          Fixed-point fractional library routines.
!                                                              (line  485)
  * __fractqquta:                          Fixed-point fractional library routines.
!                                                              (line  491)
  * __fractsada2:                          Fixed-point fractional library routines.
!                                                              (line  603)
  * __fractsadf:                           Fixed-point fractional library routines.
!                                                              (line  619)
  * __fractsadi:                           Fixed-point fractional library routines.
!                                                              (line  616)
  * __fractsadq:                           Fixed-point fractional library routines.
!                                                              (line  601)
  * __fractsaha2:                          Fixed-point fractional library routines.
!                                                              (line  602)
  * __fractsahi:                           Fixed-point fractional library routines.
!                                                              (line  614)
  * __fractsahq:                           Fixed-point fractional library routines.
!                                                              (line  599)
  * __fractsaqi:                           Fixed-point fractional library routines.
!                                                              (line  613)
  * __fractsaqq:                           Fixed-point fractional library routines.
!                                                              (line  598)
  * __fractsasf:                           Fixed-point fractional library routines.
!                                                              (line  618)
  * __fractsasi:                           Fixed-point fractional library routines.
!                                                              (line  615)
  * __fractsasq:                           Fixed-point fractional library routines.
!                                                              (line  600)
  * __fractsata2:                          Fixed-point fractional library routines.
!                                                              (line  604)
  * __fractsati:                           Fixed-point fractional library routines.
!                                                              (line  617)
  * __fractsauda:                          Fixed-point fractional library routines.
!                                                              (line  611)
  * __fractsaudq:                          Fixed-point fractional library routines.
!                                                              (line  608)
  * __fractsauha:                          Fixed-point fractional library routines.
!                                                              (line  609)
  * __fractsauhq:                          Fixed-point fractional library routines.
!                                                              (line  606)
  * __fractsauqq:                          Fixed-point fractional library routines.
!                                                              (line  605)
  * __fractsausa:                          Fixed-point fractional library routines.
!                                                              (line  610)
  * __fractsausq:                          Fixed-point fractional library routines.
!                                                              (line  607)
  * __fractsauta:                          Fixed-point fractional library routines.
!                                                              (line  612)
  * __fractsfda:                           Fixed-point fractional library routines.
!                                                              (line 1016)
  * __fractsfdq:                           Fixed-point fractional library routines.
!                                                              (line 1013)
  * __fractsfha:                           Fixed-point fractional library routines.
!                                                              (line 1014)
  * __fractsfhq:                           Fixed-point fractional library routines.
!                                                              (line 1011)
  * __fractsfqq:                           Fixed-point fractional library routines.
!                                                              (line 1010)
  * __fractsfsa:                           Fixed-point fractional library routines.
!                                                              (line 1015)
  * __fractsfsq:                           Fixed-point fractional library routines.
!                                                              (line 1012)
  * __fractsfta:                           Fixed-point fractional library routines.
!                                                              (line 1017)
  * __fractsfuda:                          Fixed-point fractional library routines.
!                                                              (line 1024)
  * __fractsfudq:                          Fixed-point fractional library routines.
!                                                              (line 1021)
  * __fractsfuha:                          Fixed-point fractional library routines.
!                                                              (line 1022)
  * __fractsfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1019)
  * __fractsfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1018)
  * __fractsfusa:                          Fixed-point fractional library routines.
!                                                              (line 1023)
  * __fractsfusq:                          Fixed-point fractional library routines.
!                                                              (line 1020)
  * __fractsfuta:                          Fixed-point fractional library routines.
!                                                              (line 1025)
  * __fractsida:                           Fixed-point fractional library routines.
!                                                              (line  966)
  * __fractsidq:                           Fixed-point fractional library routines.
!                                                              (line  963)
  * __fractsiha:                           Fixed-point fractional library routines.
!                                                              (line  964)
  * __fractsihq:                           Fixed-point fractional library routines.
!                                                              (line  961)
  * __fractsiqq:                           Fixed-point fractional library routines.
!                                                              (line  960)
  * __fractsisa:                           Fixed-point fractional library routines.
!                                                              (line  965)
  * __fractsisq:                           Fixed-point fractional library routines.
!                                                              (line  962)
  * __fractsita:                           Fixed-point fractional library routines.
!                                                              (line  967)
  * __fractsiuda:                          Fixed-point fractional library routines.
!                                                              (line  974)
  * __fractsiudq:                          Fixed-point fractional library routines.
!                                                              (line  971)
  * __fractsiuha:                          Fixed-point fractional library routines.
!                                                              (line  972)
  * __fractsiuhq:                          Fixed-point fractional library routines.
!                                                              (line  969)
  * __fractsiuqq:                          Fixed-point fractional library routines.
!                                                              (line  968)
  * __fractsiusa:                          Fixed-point fractional library routines.
!                                                              (line  973)
  * __fractsiusq:                          Fixed-point fractional library routines.
!                                                              (line  970)
  * __fractsiuta:                          Fixed-point fractional library routines.
!                                                              (line  975)
  * __fractsqda:                           Fixed-point fractional library routines.
!                                                              (line  527)
  * __fractsqdf:                           Fixed-point fractional library routines.
!                                                              (line  545)
  * __fractsqdi:                           Fixed-point fractional library routines.
!                                                              (line  542)
  * __fractsqdq2:                          Fixed-point fractional library routines.
!                                                              (line  524)
  * __fractsqha:                           Fixed-point fractional library routines.
!                                                              (line  525)
  * __fractsqhi:                           Fixed-point fractional library routines.
!                                                              (line  540)
  * __fractsqhq2:                          Fixed-point fractional library routines.
!                                                              (line  523)
  * __fractsqqi:                           Fixed-point fractional library routines.
!                                                              (line  539)
  * __fractsqqq2:                          Fixed-point fractional library routines.
!                                                              (line  522)
  * __fractsqsa:                           Fixed-point fractional library routines.
!                                                              (line  526)
  * __fractsqsf:                           Fixed-point fractional library routines.
!                                                              (line  544)
  * __fractsqsi:                           Fixed-point fractional library routines.
!                                                              (line  541)
  * __fractsqta:                           Fixed-point fractional library routines.
!                                                              (line  528)
  * __fractsqti:                           Fixed-point fractional library routines.
!                                                              (line  543)
  * __fractsquda:                          Fixed-point fractional library routines.
!                                                              (line  536)
  * __fractsqudq:                          Fixed-point fractional library routines.
!                                                              (line  532)
  * __fractsquha:                          Fixed-point fractional library routines.
!                                                              (line  534)
  * __fractsquhq:                          Fixed-point fractional library routines.
!                                                              (line  530)
  * __fractsquqq:                          Fixed-point fractional library routines.
!                                                              (line  529)
  * __fractsqusa:                          Fixed-point fractional library routines.
!                                                              (line  535)
  * __fractsqusq:                          Fixed-point fractional library routines.
!                                                              (line  531)
  * __fractsquta:                          Fixed-point fractional library routines.
!                                                              (line  537)
  * __fracttada2:                          Fixed-point fractional library routines.
!                                                              (line  650)
  * __fracttadf:                           Fixed-point fractional library routines.
!                                                              (line  671)
  * __fracttadi:                           Fixed-point fractional library routines.
!                                                              (line  668)
  * __fracttadq:                           Fixed-point fractional library routines.
!                                                              (line  647)
  * __fracttaha2:                          Fixed-point fractional library routines.
!                                                              (line  648)
  * __fracttahi:                           Fixed-point fractional library routines.
!                                                              (line  666)
  * __fracttahq:                           Fixed-point fractional library routines.
!                                                              (line  645)
  * __fracttaqi:                           Fixed-point fractional library routines.
!                                                              (line  665)
  * __fracttaqq:                           Fixed-point fractional library routines.
!                                                              (line  644)
  * __fracttasa2:                          Fixed-point fractional library routines.
!                                                              (line  649)
  * __fracttasf:                           Fixed-point fractional library routines.
!                                                              (line  670)
  * __fracttasi:                           Fixed-point fractional library routines.
!                                                              (line  667)
  * __fracttasq:                           Fixed-point fractional library routines.
!                                                              (line  646)
  * __fracttati:                           Fixed-point fractional library routines.
-                                                              (line  669)
- * __fracttauda:                          Fixed-point fractional library routines.
                                                               (line  661)
  * __fracttaudq:                          Fixed-point fractional library routines.
!                                                              (line  656)
  * __fracttauha:                          Fixed-point fractional library routines.
!                                                              (line  658)
  * __fracttauhq:                          Fixed-point fractional library routines.
!                                                              (line  653)
  * __fracttauqq:                          Fixed-point fractional library routines.
!                                                              (line  651)
  * __fracttausa:                          Fixed-point fractional library routines.
!                                                              (line  660)
  * __fracttausq:                          Fixed-point fractional library routines.
!                                                              (line  654)
  * __fracttauta:                          Fixed-point fractional library routines.
!                                                              (line  663)
  * __fracttida:                           Fixed-point fractional library routines.
!                                                              (line  998)
  * __fracttidq:                           Fixed-point fractional library routines.
!                                                              (line  995)
  * __fracttiha:                           Fixed-point fractional library routines.
!                                                              (line  996)
  * __fracttihq:                           Fixed-point fractional library routines.
!                                                              (line  993)
  * __fracttiqq:                           Fixed-point fractional library routines.
!                                                              (line  992)
  * __fracttisa:                           Fixed-point fractional library routines.
!                                                              (line  997)
  * __fracttisq:                           Fixed-point fractional library routines.
!                                                              (line  994)
  * __fracttita:                           Fixed-point fractional library routines.
!                                                              (line  999)
  * __fracttiuda:                          Fixed-point fractional library routines.
!                                                              (line 1007)
  * __fracttiudq:                          Fixed-point fractional library routines.
!                                                              (line 1003)
  * __fracttiuha:                          Fixed-point fractional library routines.
!                                                              (line 1005)
  * __fracttiuhq:                          Fixed-point fractional library routines.
!                                                              (line 1001)
  * __fracttiuqq:                          Fixed-point fractional library routines.
!                                                              (line 1000)
  * __fracttiusa:                          Fixed-point fractional library routines.
!                                                              (line 1006)
  * __fracttiusq:                          Fixed-point fractional library routines.
!                                                              (line 1002)
  * __fracttiuta:                          Fixed-point fractional library routines.
!                                                              (line 1008)
  * __fractudada:                          Fixed-point fractional library routines.
!                                                              (line  865)
  * __fractudadf:                          Fixed-point fractional library routines.
!                                                              (line  888)
  * __fractudadi:                          Fixed-point fractional library routines.
!                                                              (line  885)
  * __fractudadq:                          Fixed-point fractional library routines.
!                                                              (line  861)
  * __fractudaha:                          Fixed-point fractional library routines.
!                                                              (line  863)
  * __fractudahi:                          Fixed-point fractional library routines.
!                                                              (line  883)
  * __fractudahq:                          Fixed-point fractional library routines.
!                                                              (line  859)
  * __fractudaqi:                          Fixed-point fractional library routines.
!                                                              (line  882)
  * __fractudaqq:                          Fixed-point fractional library routines.
!                                                              (line  858)
  * __fractudasa:                          Fixed-point fractional library routines.
!                                                              (line  864)
  * __fractudasf:                          Fixed-point fractional library routines.
!                                                              (line  887)
  * __fractudasi:                          Fixed-point fractional library routines.
!                                                              (line  884)
  * __fractudasq:                          Fixed-point fractional library routines.
!                                                              (line  860)
  * __fractudata:                          Fixed-point fractional library routines.
!                                                              (line  866)
  * __fractudati:                          Fixed-point fractional library routines.
!                                                              (line  886)
  * __fractudaudq:                         Fixed-point fractional library routines.
!                                                              (line  874)
  * __fractudauha2:                        Fixed-point fractional library routines.
!                                                              (line  876)
  * __fractudauhq:                         Fixed-point fractional library routines.
!                                                              (line  870)
  * __fractudauqq:                         Fixed-point fractional library routines.
!                                                              (line  868)
  * __fractudausa2:                        Fixed-point fractional library routines.
!                                                              (line  878)
  * __fractudausq:                         Fixed-point fractional library routines.
!                                                              (line  872)
  * __fractudauta2:                        Fixed-point fractional library routines.
!                                                              (line  880)
  * __fractudqda:                          Fixed-point fractional library routines.
!                                                              (line  772)
  * __fractudqdf:                          Fixed-point fractional library routines.
!                                                              (line  798)
  * __fractudqdi:                          Fixed-point fractional library routines.
!                                                              (line  794)
  * __fractudqdq:                          Fixed-point fractional library routines.
!                                                              (line  767)
  * __fractudqha:                          Fixed-point fractional library routines.
!                                                              (line  769)
  * __fractudqhi:                          Fixed-point fractional library routines.
!                                                              (line  792)
  * __fractudqhq:                          Fixed-point fractional library routines.
!                                                              (line  764)
  * __fractudqqi:                          Fixed-point fractional library routines.
!                                                              (line  790)
  * __fractudqqq:                          Fixed-point fractional library routines.
!                                                              (line  762)
  * __fractudqsa:                          Fixed-point fractional library routines.
!                                                              (line  771)
  * __fractudqsf:                          Fixed-point fractional library routines.
!                                                              (line  797)
  * __fractudqsi:                          Fixed-point fractional library routines.
!                                                              (line  793)
  * __fractudqsq:                          Fixed-point fractional library routines.
!                                                              (line  765)
  * __fractudqta:                          Fixed-point fractional library routines.
!                                                              (line  774)
  * __fractudqti:                          Fixed-point fractional library routines.
!                                                              (line  795)
  * __fractudquda:                         Fixed-point fractional library routines.
!                                                              (line  786)
  * __fractudquha:                         Fixed-point fractional library routines.
!                                                              (line  782)
  * __fractudquhq2:                        Fixed-point fractional library routines.
!                                                              (line  778)
  * __fractudquqq2:                        Fixed-point fractional library routines.
!                                                              (line  776)
  * __fractudqusa:                         Fixed-point fractional library routines.
!                                                              (line  784)
  * __fractudqusq2:                        Fixed-point fractional library routines.
!                                                              (line  780)
  * __fractudquta:                         Fixed-point fractional library routines.
!                                                              (line  788)
  * __fractuhada:                          Fixed-point fractional library routines.
!                                                              (line  806)
  * __fractuhadf:                          Fixed-point fractional library routines.
!                                                              (line  829)
  * __fractuhadi:                          Fixed-point fractional library routines.
!                                                              (line  826)
  * __fractuhadq:                          Fixed-point fractional library routines.
!                                                              (line  802)
  * __fractuhaha:                          Fixed-point fractional library routines.
!                                                              (line  804)
  * __fractuhahi:                          Fixed-point fractional library routines.
!                                                              (line  824)
  * __fractuhahq:                          Fixed-point fractional library routines.
!                                                              (line  800)
  * __fractuhaqi:                          Fixed-point fractional library routines.
!                                                              (line  823)
  * __fractuhaqq:                          Fixed-point fractional library routines.
!                                                              (line  799)
  * __fractuhasa:                          Fixed-point fractional library routines.
!                                                              (line  805)
  * __fractuhasf:                          Fixed-point fractional library routines.
!                                                              (line  828)
  * __fractuhasi:                          Fixed-point fractional library routines.
!                                                              (line  825)
  * __fractuhasq:                          Fixed-point fractional library routines.
!                                                              (line  801)
  * __fractuhata:                          Fixed-point fractional library routines.
!                                                              (line  807)
  * __fractuhati:                          Fixed-point fractional library routines.
-                                                              (line  827)
- * __fractuhauda2:                        Fixed-point fractional library routines.
                                                               (line  819)
  * __fractuhaudq:                         Fixed-point fractional library routines.
!                                                              (line  815)
  * __fractuhauhq:                         Fixed-point fractional library routines.
!                                                              (line  811)
  * __fractuhauqq:                         Fixed-point fractional library routines.
!                                                              (line  809)
  * __fractuhausa2:                        Fixed-point fractional library routines.
!                                                              (line  817)
  * __fractuhausq:                         Fixed-point fractional library routines.
!                                                              (line  813)
  * __fractuhauta2:                        Fixed-point fractional library routines.
!                                                              (line  821)
  * __fractuhqda:                          Fixed-point fractional library routines.
!                                                              (line  709)
  * __fractuhqdf:                          Fixed-point fractional library routines.
!                                                              (line  730)
  * __fractuhqdi:                          Fixed-point fractional library routines.
!                                                              (line  727)
  * __fractuhqdq:                          Fixed-point fractional library routines.
!                                                              (line  706)
  * __fractuhqha:                          Fixed-point fractional library routines.
!                                                              (line  707)
  * __fractuhqhi:                          Fixed-point fractional library routines.
!                                                              (line  725)
  * __fractuhqhq:                          Fixed-point fractional library routines.
!                                                              (line  704)
  * __fractuhqqi:                          Fixed-point fractional library routines.
!                                                              (line  724)
  * __fractuhqqq:                          Fixed-point fractional library routines.
!                                                              (line  703)
  * __fractuhqsa:                          Fixed-point fractional library routines.
!                                                              (line  708)
  * __fractuhqsf:                          Fixed-point fractional library routines.
!                                                              (line  729)
  * __fractuhqsi:                          Fixed-point fractional library routines.
!                                                              (line  726)
  * __fractuhqsq:                          Fixed-point fractional library routines.
!                                                              (line  705)
  * __fractuhqta:                          Fixed-point fractional library routines.
!                                                              (line  710)
  * __fractuhqti:                          Fixed-point fractional library routines.
-                                                              (line  728)
- * __fractuhquda:                         Fixed-point fractional library routines.
                                                               (line  720)
  * __fractuhqudq2:                        Fixed-point fractional library routines.
!                                                              (line  715)
  * __fractuhquha:                         Fixed-point fractional library routines.
!                                                              (line  717)
  * __fractuhquqq2:                        Fixed-point fractional library routines.
!                                                              (line  711)
  * __fractuhqusa:                         Fixed-point fractional library routines.
!                                                              (line  719)
  * __fractuhqusq2:                        Fixed-point fractional library routines.
!                                                              (line  713)
  * __fractuhquta:                         Fixed-point fractional library routines.
!                                                              (line  722)
  * __fractunsdadi:                        Fixed-point fractional library routines.
!                                                              (line 1562)
  * __fractunsdahi:                        Fixed-point fractional library routines.
!                                                              (line 1560)
  * __fractunsdaqi:                        Fixed-point fractional library routines.
!                                                              (line 1559)
  * __fractunsdasi:                        Fixed-point fractional library routines.
!                                                              (line 1561)
  * __fractunsdati:                        Fixed-point fractional library routines.
!                                                              (line 1563)
  * __fractunsdida:                        Fixed-point fractional library routines.
!                                                              (line 1714)
  * __fractunsdidq:                        Fixed-point fractional library routines.
!                                                              (line 1711)
  * __fractunsdiha:                        Fixed-point fractional library routines.
!                                                              (line 1712)
  * __fractunsdihq:                        Fixed-point fractional library routines.
!                                                              (line 1709)
  * __fractunsdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1708)
  * __fractunsdisa:                        Fixed-point fractional library routines.
!                                                              (line 1713)
  * __fractunsdisq:                        Fixed-point fractional library routines.
!                                                              (line 1710)
  * __fractunsdita:                        Fixed-point fractional library routines.
!                                                              (line 1715)
  * __fractunsdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1726)
  * __fractunsdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1721)
  * __fractunsdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1723)
  * __fractunsdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1718)
  * __fractunsdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1716)
  * __fractunsdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1725)
  * __fractunsdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1719)
  * __fractunsdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1728)
  * __fractunsdqdi:                        Fixed-point fractional library routines.
!                                                              (line 1546)
  * __fractunsdqhi:                        Fixed-point fractional library routines.
!                                                              (line 1544)
  * __fractunsdqqi:                        Fixed-point fractional library routines.
!                                                              (line 1543)
  * __fractunsdqsi:                        Fixed-point fractional library routines.
!                                                              (line 1545)
  * __fractunsdqti:                        Fixed-point fractional library routines.
!                                                              (line 1547)
  * __fractunshadi:                        Fixed-point fractional library routines.
!                                                              (line 1552)
  * __fractunshahi:                        Fixed-point fractional library routines.
!                                                              (line 1550)
  * __fractunshaqi:                        Fixed-point fractional library routines.
!                                                              (line 1549)
  * __fractunshasi:                        Fixed-point fractional library routines.
!                                                              (line 1551)
  * __fractunshati:                        Fixed-point fractional library routines.
!                                                              (line 1553)
  * __fractunshida:                        Fixed-point fractional library routines.
!                                                              (line 1670)
  * __fractunshidq:                        Fixed-point fractional library routines.
!                                                              (line 1667)
  * __fractunshiha:                        Fixed-point fractional library routines.
!                                                              (line 1668)
  * __fractunshihq:                        Fixed-point fractional library routines.
!                                                              (line 1665)
  * __fractunshiqq:                        Fixed-point fractional library routines.
!                                                              (line 1664)
  * __fractunshisa:                        Fixed-point fractional library routines.
!                                                              (line 1669)
  * __fractunshisq:                        Fixed-point fractional library routines.
!                                                              (line 1666)
  * __fractunshita:                        Fixed-point fractional library routines.
!                                                              (line 1671)
  * __fractunshiuda:                       Fixed-point fractional library routines.
!                                                              (line 1682)
  * __fractunshiudq:                       Fixed-point fractional library routines.
!                                                              (line 1677)
  * __fractunshiuha:                       Fixed-point fractional library routines.
!                                                              (line 1679)
  * __fractunshiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1674)
  * __fractunshiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1672)
  * __fractunshiusa:                       Fixed-point fractional library routines.
!                                                              (line 1681)
  * __fractunshiusq:                       Fixed-point fractional library routines.
!                                                              (line 1675)
  * __fractunshiuta:                       Fixed-point fractional library routines.
!                                                              (line 1684)
  * __fractunshqdi:                        Fixed-point fractional library routines.
!                                                              (line 1536)
  * __fractunshqhi:                        Fixed-point fractional library routines.
!                                                              (line 1534)
  * __fractunshqqi:                        Fixed-point fractional library routines.
!                                                              (line 1533)
  * __fractunshqsi:                        Fixed-point fractional library routines.
!                                                              (line 1535)
  * __fractunshqti:                        Fixed-point fractional library routines.
!                                                              (line 1537)
  * __fractunsqida:                        Fixed-point fractional library routines.
!                                                              (line 1648)
  * __fractunsqidq:                        Fixed-point fractional library routines.
!                                                              (line 1645)
  * __fractunsqiha:                        Fixed-point fractional library routines.
!                                                              (line 1646)
  * __fractunsqihq:                        Fixed-point fractional library routines.
!                                                              (line 1643)
  * __fractunsqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1642)
  * __fractunsqisa:                        Fixed-point fractional library routines.
!                                                              (line 1647)
  * __fractunsqisq:                        Fixed-point fractional library routines.
!                                                              (line 1644)
  * __fractunsqita:                        Fixed-point fractional library routines.
!                                                              (line 1649)
  * __fractunsqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1660)
  * __fractunsqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1655)
  * __fractunsqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1657)
  * __fractunsqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1652)
  * __fractunsqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1650)
  * __fractunsqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1659)
  * __fractunsqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1653)
  * __fractunsqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1662)
  * __fractunsqqdi:                        Fixed-point fractional library routines.
!                                                              (line 1531)
  * __fractunsqqhi:                        Fixed-point fractional library routines.
!                                                              (line 1529)
  * __fractunsqqqi:                        Fixed-point fractional library routines.
!                                                              (line 1528)
  * __fractunsqqsi:                        Fixed-point fractional library routines.
!                                                              (line 1530)
  * __fractunsqqti:                        Fixed-point fractional library routines.
!                                                              (line 1532)
  * __fractunssadi:                        Fixed-point fractional library routines.
!                                                              (line 1557)
  * __fractunssahi:                        Fixed-point fractional library routines.
!                                                              (line 1555)
  * __fractunssaqi:                        Fixed-point fractional library routines.
!                                                              (line 1554)
  * __fractunssasi:                        Fixed-point fractional library routines.
!                                                              (line 1556)
  * __fractunssati:                        Fixed-point fractional library routines.
!                                                              (line 1558)
  * __fractunssida:                        Fixed-point fractional library routines.
!                                                              (line 1692)
  * __fractunssidq:                        Fixed-point fractional library routines.
!                                                              (line 1689)
  * __fractunssiha:                        Fixed-point fractional library routines.
!                                                              (line 1690)
  * __fractunssihq:                        Fixed-point fractional library routines.
!                                                              (line 1687)
  * __fractunssiqq:                        Fixed-point fractional library routines.
!                                                              (line 1686)
  * __fractunssisa:                        Fixed-point fractional library routines.
!                                                              (line 1691)
  * __fractunssisq:                        Fixed-point fractional library routines.
!                                                              (line 1688)
  * __fractunssita:                        Fixed-point fractional library routines.
!                                                              (line 1693)
  * __fractunssiuda:                       Fixed-point fractional library routines.
!                                                              (line 1704)
  * __fractunssiudq:                       Fixed-point fractional library routines.
!                                                              (line 1699)
  * __fractunssiuha:                       Fixed-point fractional library routines.
!                                                              (line 1701)
  * __fractunssiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1696)
  * __fractunssiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1694)
  * __fractunssiusa:                       Fixed-point fractional library routines.
!                                                              (line 1703)
  * __fractunssiusq:                       Fixed-point fractional library routines.
!                                                              (line 1697)
  * __fractunssiuta:                       Fixed-point fractional library routines.
!                                                              (line 1706)
  * __fractunssqdi:                        Fixed-point fractional library routines.
!                                                              (line 1541)
  * __fractunssqhi:                        Fixed-point fractional library routines.
!                                                              (line 1539)
  * __fractunssqqi:                        Fixed-point fractional library routines.
!                                                              (line 1538)
  * __fractunssqsi:                        Fixed-point fractional library routines.
!                                                              (line 1540)
  * __fractunssqti:                        Fixed-point fractional library routines.
!                                                              (line 1542)
  * __fractunstadi:                        Fixed-point fractional library routines.
!                                                              (line 1567)
  * __fractunstahi:                        Fixed-point fractional library routines.
!                                                              (line 1565)
  * __fractunstaqi:                        Fixed-point fractional library routines.
!                                                              (line 1564)
  * __fractunstasi:                        Fixed-point fractional library routines.
!                                                              (line 1566)
  * __fractunstati:                        Fixed-point fractional library routines.
!                                                              (line 1568)
  * __fractunstida:                        Fixed-point fractional library routines.
!                                                              (line 1737)
  * __fractunstidq:                        Fixed-point fractional library routines.
!                                                              (line 1733)
  * __fractunstiha:                        Fixed-point fractional library routines.
!                                                              (line 1735)
  * __fractunstihq:                        Fixed-point fractional library routines.
!                                                              (line 1731)
  * __fractunstiqq:                        Fixed-point fractional library routines.
!                                                              (line 1730)
  * __fractunstisa:                        Fixed-point fractional library routines.
!                                                              (line 1736)
  * __fractunstisq:                        Fixed-point fractional library routines.
!                                                              (line 1732)
  * __fractunstita:                        Fixed-point fractional library routines.
!                                                              (line 1738)
  * __fractunstiuda:                       Fixed-point fractional library routines.
!                                                              (line 1752)
  * __fractunstiudq:                       Fixed-point fractional library routines.
!                                                              (line 1746)
  * __fractunstiuha:                       Fixed-point fractional library routines.
!                                                              (line 1748)
  * __fractunstiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1742)
  * __fractunstiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1740)
  * __fractunstiusa:                       Fixed-point fractional library routines.
!                                                              (line 1750)
  * __fractunstiusq:                       Fixed-point fractional library routines.
!                                                              (line 1744)
  * __fractunstiuta:                       Fixed-point fractional library routines.
!                                                              (line 1754)
  * __fractunsudadi:                       Fixed-point fractional library routines.
!                                                              (line 1628)
  * __fractunsudahi:                       Fixed-point fractional library routines.
!                                                              (line 1624)
  * __fractunsudaqi:                       Fixed-point fractional library routines.
!                                                              (line 1622)
  * __fractunsudasi:                       Fixed-point fractional library routines.
!                                                              (line 1626)
  * __fractunsudati:                       Fixed-point fractional library routines.
!                                                              (line 1630)
  * __fractunsudqdi:                       Fixed-point fractional library routines.
!                                                              (line 1602)
  * __fractunsudqhi:                       Fixed-point fractional library routines.
!                                                              (line 1598)
  * __fractunsudqqi:                       Fixed-point fractional library routines.
!                                                              (line 1596)
  * __fractunsudqsi:                       Fixed-point fractional library routines.
!                                                              (line 1600)
  * __fractunsudqti:                       Fixed-point fractional library routines.
!                                                              (line 1604)
  * __fractunsuhadi:                       Fixed-point fractional library routines.
!                                                              (line 1612)
  * __fractunsuhahi:                       Fixed-point fractional library routines.
!                                                              (line 1608)
  * __fractunsuhaqi:                       Fixed-point fractional library routines.
!                                                              (line 1606)
  * __fractunsuhasi:                       Fixed-point fractional library routines.
!                                                              (line 1610)
  * __fractunsuhati:                       Fixed-point fractional library routines.
!                                                              (line 1614)
  * __fractunsuhqdi:                       Fixed-point fractional library routines.
!                                                              (line 1583)
  * __fractunsuhqhi:                       Fixed-point fractional library routines.
!                                                              (line 1581)
  * __fractunsuhqqi:                       Fixed-point fractional library routines.
!                                                              (line 1580)
  * __fractunsuhqsi:                       Fixed-point fractional library routines.
!                                                              (line 1582)
  * __fractunsuhqti:                       Fixed-point fractional library routines.
-                                                              (line 1584)
- * __fractunsuqqdi:                       Fixed-point fractional library routines.
                                                               (line 1576)
  * __fractunsuqqhi:                       Fixed-point fractional library routines.
!                                                              (line 1572)
  * __fractunsuqqqi:                       Fixed-point fractional library routines.
!                                                              (line 1570)
  * __fractunsuqqsi:                       Fixed-point fractional library routines.
!                                                              (line 1574)
  * __fractunsuqqti:                       Fixed-point fractional library routines.
!                                                              (line 1578)
  * __fractunsusadi:                       Fixed-point fractional library routines.
!                                                              (line 1619)
  * __fractunsusahi:                       Fixed-point fractional library routines.
!                                                              (line 1617)
  * __fractunsusaqi:                       Fixed-point fractional library routines.
!                                                              (line 1616)
  * __fractunsusasi:                       Fixed-point fractional library routines.
!                                                              (line 1618)
  * __fractunsusati:                       Fixed-point fractional library routines.
!                                                              (line 1620)
  * __fractunsusqdi:                       Fixed-point fractional library routines.
!                                                              (line 1592)
  * __fractunsusqhi:                       Fixed-point fractional library routines.
!                                                              (line 1588)
  * __fractunsusqqi:                       Fixed-point fractional library routines.
!                                                              (line 1586)
  * __fractunsusqsi:                       Fixed-point fractional library routines.
!                                                              (line 1590)
  * __fractunsusqti:                       Fixed-point fractional library routines.
!                                                              (line 1594)
  * __fractunsutadi:                       Fixed-point fractional library routines.
!                                                              (line 1638)
  * __fractunsutahi:                       Fixed-point fractional library routines.
!                                                              (line 1634)
  * __fractunsutaqi:                       Fixed-point fractional library routines.
!                                                              (line 1632)
  * __fractunsutasi:                       Fixed-point fractional library routines.
!                                                              (line 1636)
  * __fractunsutati:                       Fixed-point fractional library routines.
!                                                              (line 1640)
  * __fractuqqda:                          Fixed-point fractional library routines.
!                                                              (line  679)
  * __fractuqqdf:                          Fixed-point fractional library routines.
!                                                              (line  702)
  * __fractuqqdi:                          Fixed-point fractional library routines.
!                                                              (line  699)
  * __fractuqqdq:                          Fixed-point fractional library routines.
!                                                              (line  675)
  * __fractuqqha:                          Fixed-point fractional library routines.
!                                                              (line  677)
  * __fractuqqhi:                          Fixed-point fractional library routines.
!                                                              (line  697)
  * __fractuqqhq:                          Fixed-point fractional library routines.
!                                                              (line  673)
  * __fractuqqqi:                          Fixed-point fractional library routines.
!                                                              (line  696)
  * __fractuqqqq:                          Fixed-point fractional library routines.
!                                                              (line  672)
  * __fractuqqsa:                          Fixed-point fractional library routines.
!                                                              (line  678)
  * __fractuqqsf:                          Fixed-point fractional library routines.
!                                                              (line  701)
  * __fractuqqsi:                          Fixed-point fractional library routines.
!                                                              (line  698)
  * __fractuqqsq:                          Fixed-point fractional library routines.
!                                                              (line  674)
  * __fractuqqta:                          Fixed-point fractional library routines.
!                                                              (line  680)
  * __fractuqqti:                          Fixed-point fractional library routines.
-                                                              (line  700)
- * __fractuqquda:                         Fixed-point fractional library routines.
                                                               (line  692)
  * __fractuqqudq2:                        Fixed-point fractional library routines.
!                                                              (line  686)
  * __fractuqquha:                         Fixed-point fractional library routines.
!                                                              (line  688)
  * __fractuqquhq2:                        Fixed-point fractional library routines.
!                                                              (line  682)
  * __fractuqqusa:                         Fixed-point fractional library routines.
!                                                              (line  690)
  * __fractuqqusq2:                        Fixed-point fractional library routines.
!                                                              (line  684)
  * __fractuqquta:                         Fixed-point fractional library routines.
!                                                              (line  694)
  * __fractusada:                          Fixed-point fractional library routines.
!                                                              (line  836)
  * __fractusadf:                          Fixed-point fractional library routines.
!                                                              (line  857)
  * __fractusadi:                          Fixed-point fractional library routines.
!                                                              (line  854)
  * __fractusadq:                          Fixed-point fractional library routines.
!                                                              (line  833)
  * __fractusaha:                          Fixed-point fractional library routines.
!                                                              (line  834)
  * __fractusahi:                          Fixed-point fractional library routines.
!                                                              (line  852)
  * __fractusahq:                          Fixed-point fractional library routines.
!                                                              (line  831)
  * __fractusaqi:                          Fixed-point fractional library routines.
!                                                              (line  851)
  * __fractusaqq:                          Fixed-point fractional library routines.
!                                                              (line  830)
  * __fractusasa:                          Fixed-point fractional library routines.
!                                                              (line  835)
  * __fractusasf:                          Fixed-point fractional library routines.
!                                                              (line  856)
  * __fractusasi:                          Fixed-point fractional library routines.
!                                                              (line  853)
  * __fractusasq:                          Fixed-point fractional library routines.
!                                                              (line  832)
  * __fractusata:                          Fixed-point fractional library routines.
!                                                              (line  837)
  * __fractusati:                          Fixed-point fractional library routines.
-                                                              (line  855)
- * __fractusauda2:                        Fixed-point fractional library routines.
                                                               (line  847)
  * __fractusaudq:                         Fixed-point fractional library routines.
!                                                              (line  843)
  * __fractusauha2:                        Fixed-point fractional library routines.
!                                                              (line  845)
  * __fractusauhq:                         Fixed-point fractional library routines.
!                                                              (line  840)
  * __fractusauqq:                         Fixed-point fractional library routines.
!                                                              (line  838)
  * __fractusausq:                         Fixed-point fractional library routines.
!                                                              (line  841)
  * __fractusauta2:                        Fixed-point fractional library routines.
!                                                              (line  849)
  * __fractusqda:                          Fixed-point fractional library routines.
!                                                              (line  738)
  * __fractusqdf:                          Fixed-point fractional library routines.
!                                                              (line  761)
  * __fractusqdi:                          Fixed-point fractional library routines.
!                                                              (line  758)
  * __fractusqdq:                          Fixed-point fractional library routines.
!                                                              (line  734)
  * __fractusqha:                          Fixed-point fractional library routines.
!                                                              (line  736)
  * __fractusqhi:                          Fixed-point fractional library routines.
!                                                              (line  756)
  * __fractusqhq:                          Fixed-point fractional library routines.
!                                                              (line  732)
  * __fractusqqi:                          Fixed-point fractional library routines.
!                                                              (line  755)
  * __fractusqqq:                          Fixed-point fractional library routines.
!                                                              (line  731)
  * __fractusqsa:                          Fixed-point fractional library routines.
!                                                              (line  737)
  * __fractusqsf:                          Fixed-point fractional library routines.
!                                                              (line  760)
  * __fractusqsi:                          Fixed-point fractional library routines.
!                                                              (line  757)
  * __fractusqsq:                          Fixed-point fractional library routines.
!                                                              (line  733)
  * __fractusqta:                          Fixed-point fractional library routines.
!                                                              (line  739)
  * __fractusqti:                          Fixed-point fractional library routines.
-                                                              (line  759)
- * __fractusquda:                         Fixed-point fractional library routines.
                                                               (line  751)
  * __fractusqudq2:                        Fixed-point fractional library routines.
!                                                              (line  745)
  * __fractusquha:                         Fixed-point fractional library routines.
!                                                              (line  747)
  * __fractusquhq2:                        Fixed-point fractional library routines.
!                                                              (line  743)
  * __fractusquqq2:                        Fixed-point fractional library routines.
!                                                              (line  741)
  * __fractusqusa:                         Fixed-point fractional library routines.
!                                                              (line  749)
  * __fractusquta:                         Fixed-point fractional library routines.
!                                                              (line  753)
  * __fractutada:                          Fixed-point fractional library routines.
!                                                              (line  899)
  * __fractutadf:                          Fixed-point fractional library routines.
!                                                              (line  925)
  * __fractutadi:                          Fixed-point fractional library routines.
!                                                              (line  921)
  * __fractutadq:                          Fixed-point fractional library routines.
!                                                              (line  894)
  * __fractutaha:                          Fixed-point fractional library routines.
!                                                              (line  896)
  * __fractutahi:                          Fixed-point fractional library routines.
!                                                              (line  919)
  * __fractutahq:                          Fixed-point fractional library routines.
!                                                              (line  891)
  * __fractutaqi:                          Fixed-point fractional library routines.
!                                                              (line  917)
  * __fractutaqq:                          Fixed-point fractional library routines.
!                                                              (line  889)
  * __fractutasa:                          Fixed-point fractional library routines.
!                                                              (line  898)
  * __fractutasf:                          Fixed-point fractional library routines.
!                                                              (line  924)
  * __fractutasi:                          Fixed-point fractional library routines.
!                                                              (line  920)
  * __fractutasq:                          Fixed-point fractional library routines.
!                                                              (line  892)
  * __fractutata:                          Fixed-point fractional library routines.
!                                                              (line  901)
  * __fractutati:                          Fixed-point fractional library routines.
!                                                              (line  922)
  * __fractutauda2:                        Fixed-point fractional library routines.
!                                                              (line  915)
  * __fractutaudq:                         Fixed-point fractional library routines.
!                                                              (line  909)
  * __fractutauha2:                        Fixed-point fractional library routines.
!                                                              (line  911)
  * __fractutauhq:                         Fixed-point fractional library routines.
!                                                              (line  905)
  * __fractutauqq:                         Fixed-point fractional library routines.
!                                                              (line  903)
  * __fractutausa2:                        Fixed-point fractional library routines.
!                                                              (line  913)
  * __fractutausq:                         Fixed-point fractional library routines.
!                                                              (line  907)
  * __gedf2:                               Soft float library routines.
                                                               (line  205)
  * __gesf2:                               Soft float library routines.
--- 49615,50867 ----
  * __floatuntixf:                         Soft float library routines.
                                                               (line  153)
  * __fractdadf:                           Fixed-point fractional library routines.
!                                                              (line  635)
  * __fractdadi:                           Fixed-point fractional library routines.
!                                                              (line  632)
  * __fractdadq:                           Fixed-point fractional library routines.
!                                                              (line  615)
  * __fractdaha2:                          Fixed-point fractional library routines.
!                                                              (line  616)
  * __fractdahi:                           Fixed-point fractional library routines.
!                                                              (line  630)
  * __fractdahq:                           Fixed-point fractional library routines.
!                                                              (line  613)
  * __fractdaqi:                           Fixed-point fractional library routines.
!                                                              (line  629)
  * __fractdaqq:                           Fixed-point fractional library routines.
!                                                              (line  612)
  * __fractdasa2:                          Fixed-point fractional library routines.
!                                                              (line  617)
  * __fractdasf:                           Fixed-point fractional library routines.
!                                                              (line  634)
  * __fractdasi:                           Fixed-point fractional library routines.
!                                                              (line  631)
  * __fractdasq:                           Fixed-point fractional library routines.
!                                                              (line  614)
  * __fractdata2:                          Fixed-point fractional library routines.
!                                                              (line  618)
  * __fractdati:                           Fixed-point fractional library routines.
!                                                              (line  633)
  * __fractdauda:                          Fixed-point fractional library routines.
!                                                              (line  626)
  * __fractdaudq:                          Fixed-point fractional library routines.
!                                                              (line  622)
  * __fractdauha:                          Fixed-point fractional library routines.
!                                                              (line  624)
  * __fractdauhq:                          Fixed-point fractional library routines.
!                                                              (line  620)
  * __fractdauqq:                          Fixed-point fractional library routines.
!                                                              (line  619)
  * __fractdausa:                          Fixed-point fractional library routines.
!                                                              (line  625)
  * __fractdausq:                          Fixed-point fractional library routines.
!                                                              (line  621)
  * __fractdauta:                          Fixed-point fractional library routines.
!                                                              (line  627)
  * __fractdfda:                           Fixed-point fractional library routines.
!                                                              (line 1024)
  * __fractdfdq:                           Fixed-point fractional library routines.
!                                                              (line 1021)
  * __fractdfha:                           Fixed-point fractional library routines.
!                                                              (line 1022)
  * __fractdfhq:                           Fixed-point fractional library routines.
!                                                              (line 1019)
  * __fractdfqq:                           Fixed-point fractional library routines.
!                                                              (line 1018)
  * __fractdfsa:                           Fixed-point fractional library routines.
!                                                              (line 1023)
  * __fractdfsq:                           Fixed-point fractional library routines.
!                                                              (line 1020)
  * __fractdfta:                           Fixed-point fractional library routines.
!                                                              (line 1025)
  * __fractdfuda:                          Fixed-point fractional library routines.
!                                                              (line 1032)
  * __fractdfudq:                          Fixed-point fractional library routines.
!                                                              (line 1029)
  * __fractdfuha:                          Fixed-point fractional library routines.
!                                                              (line 1030)
  * __fractdfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1027)
  * __fractdfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1026)
  * __fractdfusa:                          Fixed-point fractional library routines.
!                                                              (line 1031)
  * __fractdfusq:                          Fixed-point fractional library routines.
!                                                              (line 1028)
  * __fractdfuta:                          Fixed-point fractional library routines.
!                                                              (line 1033)
  * __fractdida:                           Fixed-point fractional library routines.
!                                                              (line  974)
  * __fractdidq:                           Fixed-point fractional library routines.
!                                                              (line  971)
  * __fractdiha:                           Fixed-point fractional library routines.
!                                                              (line  972)
  * __fractdihq:                           Fixed-point fractional library routines.
!                                                              (line  969)
  * __fractdiqq:                           Fixed-point fractional library routines.
!                                                              (line  968)
  * __fractdisa:                           Fixed-point fractional library routines.
!                                                              (line  973)
  * __fractdisq:                           Fixed-point fractional library routines.
!                                                              (line  970)
  * __fractdita:                           Fixed-point fractional library routines.
!                                                              (line  975)
  * __fractdiuda:                          Fixed-point fractional library routines.
!                                                              (line  982)
  * __fractdiudq:                          Fixed-point fractional library routines.
!                                                              (line  979)
  * __fractdiuha:                          Fixed-point fractional library routines.
!                                                              (line  980)
  * __fractdiuhq:                          Fixed-point fractional library routines.
!                                                              (line  977)
  * __fractdiuqq:                          Fixed-point fractional library routines.
!                                                              (line  976)
  * __fractdiusa:                          Fixed-point fractional library routines.
!                                                              (line  981)
  * __fractdiusq:                          Fixed-point fractional library routines.
!                                                              (line  978)
  * __fractdiuta:                          Fixed-point fractional library routines.
!                                                              (line  983)
  * __fractdqda:                           Fixed-point fractional library routines.
!                                                              (line  543)
  * __fractdqdf:                           Fixed-point fractional library routines.
!                                                              (line  565)
  * __fractdqdi:                           Fixed-point fractional library routines.
!                                                              (line  562)
  * __fractdqha:                           Fixed-point fractional library routines.
!                                                              (line  541)
  * __fractdqhi:                           Fixed-point fractional library routines.
!                                                              (line  560)
  * __fractdqhq2:                          Fixed-point fractional library routines.
!                                                              (line  539)
  * __fractdqqi:                           Fixed-point fractional library routines.
!                                                              (line  559)
  * __fractdqqq2:                          Fixed-point fractional library routines.
!                                                              (line  538)
  * __fractdqsa:                           Fixed-point fractional library routines.
!                                                              (line  542)
  * __fractdqsf:                           Fixed-point fractional library routines.
!                                                              (line  564)
  * __fractdqsi:                           Fixed-point fractional library routines.
!                                                              (line  561)
  * __fractdqsq2:                          Fixed-point fractional library routines.
!                                                              (line  540)
  * __fractdqta:                           Fixed-point fractional library routines.
!                                                              (line  544)
  * __fractdqti:                           Fixed-point fractional library routines.
                                                               (line  563)
+ * __fractdquda:                          Fixed-point fractional library routines.
+                                                              (line  555)
  * __fractdqudq:                          Fixed-point fractional library routines.
!                                                              (line  550)
  * __fractdquha:                          Fixed-point fractional library routines.
!                                                              (line  552)
  * __fractdquhq:                          Fixed-point fractional library routines.
!                                                              (line  547)
  * __fractdquqq:                          Fixed-point fractional library routines.
!                                                              (line  545)
  * __fractdqusa:                          Fixed-point fractional library routines.
!                                                              (line  554)
  * __fractdqusq:                          Fixed-point fractional library routines.
!                                                              (line  548)
  * __fractdquta:                          Fixed-point fractional library routines.
!                                                              (line  557)
  * __fracthada2:                          Fixed-point fractional library routines.
!                                                              (line  571)
  * __fracthadf:                           Fixed-point fractional library routines.
!                                                              (line  589)
  * __fracthadi:                           Fixed-point fractional library routines.
!                                                              (line  586)
  * __fracthadq:                           Fixed-point fractional library routines.
!                                                              (line  569)
  * __fracthahi:                           Fixed-point fractional library routines.
!                                                              (line  584)
  * __fracthahq:                           Fixed-point fractional library routines.
!                                                              (line  567)
  * __fracthaqi:                           Fixed-point fractional library routines.
!                                                              (line  583)
  * __fracthaqq:                           Fixed-point fractional library routines.
!                                                              (line  566)
  * __fracthasa2:                          Fixed-point fractional library routines.
!                                                              (line  570)
  * __fracthasf:                           Fixed-point fractional library routines.
!                                                              (line  588)
  * __fracthasi:                           Fixed-point fractional library routines.
!                                                              (line  585)
  * __fracthasq:                           Fixed-point fractional library routines.
!                                                              (line  568)
  * __fracthata2:                          Fixed-point fractional library routines.
!                                                              (line  572)
  * __fracthati:                           Fixed-point fractional library routines.
!                                                              (line  587)
  * __fracthauda:                          Fixed-point fractional library routines.
!                                                              (line  580)
  * __fracthaudq:                          Fixed-point fractional library routines.
!                                                              (line  576)
  * __fracthauha:                          Fixed-point fractional library routines.
!                                                              (line  578)
  * __fracthauhq:                          Fixed-point fractional library routines.
!                                                              (line  574)
  * __fracthauqq:                          Fixed-point fractional library routines.
!                                                              (line  573)
  * __fracthausa:                          Fixed-point fractional library routines.
!                                                              (line  579)
  * __fracthausq:                          Fixed-point fractional library routines.
!                                                              (line  575)
  * __fracthauta:                          Fixed-point fractional library routines.
!                                                              (line  581)
  * __fracthida:                           Fixed-point fractional library routines.
!                                                              (line  942)
  * __fracthidq:                           Fixed-point fractional library routines.
!                                                              (line  939)
  * __fracthiha:                           Fixed-point fractional library routines.
!                                                              (line  940)
  * __fracthihq:                           Fixed-point fractional library routines.
!                                                              (line  937)
  * __fracthiqq:                           Fixed-point fractional library routines.
!                                                              (line  936)
  * __fracthisa:                           Fixed-point fractional library routines.
!                                                              (line  941)
  * __fracthisq:                           Fixed-point fractional library routines.
!                                                              (line  938)
  * __fracthita:                           Fixed-point fractional library routines.
!                                                              (line  943)
  * __fracthiuda:                          Fixed-point fractional library routines.
!                                                              (line  950)
  * __fracthiudq:                          Fixed-point fractional library routines.
!                                                              (line  947)
  * __fracthiuha:                          Fixed-point fractional library routines.
!                                                              (line  948)
  * __fracthiuhq:                          Fixed-point fractional library routines.
!                                                              (line  945)
  * __fracthiuqq:                          Fixed-point fractional library routines.
!                                                              (line  944)
  * __fracthiusa:                          Fixed-point fractional library routines.
!                                                              (line  949)
  * __fracthiusq:                          Fixed-point fractional library routines.
!                                                              (line  946)
  * __fracthiuta:                          Fixed-point fractional library routines.
!                                                              (line  951)
  * __fracthqda:                           Fixed-point fractional library routines.
!                                                              (line  497)
  * __fracthqdf:                           Fixed-point fractional library routines.
!                                                              (line  513)
  * __fracthqdi:                           Fixed-point fractional library routines.
!                                                              (line  510)
  * __fracthqdq2:                          Fixed-point fractional library routines.
!                                                              (line  494)
  * __fracthqha:                           Fixed-point fractional library routines.
!                                                              (line  495)
  * __fracthqhi:                           Fixed-point fractional library routines.
!                                                              (line  508)
  * __fracthqqi:                           Fixed-point fractional library routines.
!                                                              (line  507)
  * __fracthqqq2:                          Fixed-point fractional library routines.
!                                                              (line  492)
  * __fracthqsa:                           Fixed-point fractional library routines.
!                                                              (line  496)
  * __fracthqsf:                           Fixed-point fractional library routines.
!                                                              (line  512)
  * __fracthqsi:                           Fixed-point fractional library routines.
!                                                              (line  509)
  * __fracthqsq2:                          Fixed-point fractional library routines.
!                                                              (line  493)
  * __fracthqta:                           Fixed-point fractional library routines.
!                                                              (line  498)
  * __fracthqti:                           Fixed-point fractional library routines.
!                                                              (line  511)
  * __fracthquda:                          Fixed-point fractional library routines.
!                                                              (line  505)
  * __fracthqudq:                          Fixed-point fractional library routines.
!                                                              (line  502)
  * __fracthquha:                          Fixed-point fractional library routines.
!                                                              (line  503)
  * __fracthquhq:                          Fixed-point fractional library routines.
!                                                              (line  500)
  * __fracthquqq:                          Fixed-point fractional library routines.
!                                                              (line  499)
  * __fracthqusa:                          Fixed-point fractional library routines.
!                                                              (line  504)
  * __fracthqusq:                          Fixed-point fractional library routines.
!                                                              (line  501)
  * __fracthquta:                          Fixed-point fractional library routines.
!                                                              (line  506)
  * __fractqida:                           Fixed-point fractional library routines.
!                                                              (line  924)
  * __fractqidq:                           Fixed-point fractional library routines.
!                                                              (line  921)
  * __fractqiha:                           Fixed-point fractional library routines.
!                                                              (line  922)
  * __fractqihq:                           Fixed-point fractional library routines.
!                                                              (line  919)
  * __fractqiqq:                           Fixed-point fractional library routines.
!                                                              (line  918)
  * __fractqisa:                           Fixed-point fractional library routines.
!                                                              (line  923)
  * __fractqisq:                           Fixed-point fractional library routines.
!                                                              (line  920)
  * __fractqita:                           Fixed-point fractional library routines.
!                                                              (line  925)
  * __fractqiuda:                          Fixed-point fractional library routines.
!                                                              (line  933)
  * __fractqiudq:                          Fixed-point fractional library routines.
!                                                              (line  929)
  * __fractqiuha:                          Fixed-point fractional library routines.
!                                                              (line  931)
  * __fractqiuhq:                          Fixed-point fractional library routines.
!                                                              (line  927)
  * __fractqiuqq:                          Fixed-point fractional library routines.
!                                                              (line  926)
  * __fractqiusa:                          Fixed-point fractional library routines.
!                                                              (line  932)
  * __fractqiusq:                          Fixed-point fractional library routines.
!                                                              (line  928)
  * __fractqiuta:                          Fixed-point fractional library routines.
!                                                              (line  934)
  * __fractqqda:                           Fixed-point fractional library routines.
!                                                              (line  473)
  * __fractqqdf:                           Fixed-point fractional library routines.
!                                                              (line  491)
  * __fractqqdi:                           Fixed-point fractional library routines.
!                                                              (line  488)
  * __fractqqdq2:                          Fixed-point fractional library routines.
!                                                              (line  470)
  * __fractqqha:                           Fixed-point fractional library routines.
!                                                              (line  471)
  * __fractqqhi:                           Fixed-point fractional library routines.
!                                                              (line  486)
  * __fractqqhq2:                          Fixed-point fractional library routines.
!                                                              (line  468)
  * __fractqqqi:                           Fixed-point fractional library routines.
!                                                              (line  485)
  * __fractqqsa:                           Fixed-point fractional library routines.
!                                                              (line  472)
  * __fractqqsf:                           Fixed-point fractional library routines.
!                                                              (line  490)
  * __fractqqsi:                           Fixed-point fractional library routines.
!                                                              (line  487)
  * __fractqqsq2:                          Fixed-point fractional library routines.
!                                                              (line  469)
  * __fractqqta:                           Fixed-point fractional library routines.
!                                                              (line  474)
  * __fractqqti:                           Fixed-point fractional library routines.
!                                                              (line  489)
  * __fractqquda:                          Fixed-point fractional library routines.
!                                                              (line  482)
  * __fractqqudq:                          Fixed-point fractional library routines.
!                                                              (line  478)
  * __fractqquha:                          Fixed-point fractional library routines.
!                                                              (line  480)
  * __fractqquhq:                          Fixed-point fractional library routines.
!                                                              (line  476)
  * __fractqquqq:                          Fixed-point fractional library routines.
!                                                              (line  475)
  * __fractqqusa:                          Fixed-point fractional library routines.
!                                                              (line  481)
  * __fractqqusq:                          Fixed-point fractional library routines.
!                                                              (line  477)
  * __fractqquta:                          Fixed-point fractional library routines.
!                                                              (line  483)
  * __fractsada2:                          Fixed-point fractional library routines.
!                                                              (line  595)
  * __fractsadf:                           Fixed-point fractional library routines.
!                                                              (line  611)
  * __fractsadi:                           Fixed-point fractional library routines.
!                                                              (line  608)
  * __fractsadq:                           Fixed-point fractional library routines.
!                                                              (line  593)
  * __fractsaha2:                          Fixed-point fractional library routines.
!                                                              (line  594)
  * __fractsahi:                           Fixed-point fractional library routines.
!                                                              (line  606)
  * __fractsahq:                           Fixed-point fractional library routines.
!                                                              (line  591)
  * __fractsaqi:                           Fixed-point fractional library routines.
!                                                              (line  605)
  * __fractsaqq:                           Fixed-point fractional library routines.
!                                                              (line  590)
  * __fractsasf:                           Fixed-point fractional library routines.
!                                                              (line  610)
  * __fractsasi:                           Fixed-point fractional library routines.
!                                                              (line  607)
  * __fractsasq:                           Fixed-point fractional library routines.
!                                                              (line  592)
  * __fractsata2:                          Fixed-point fractional library routines.
!                                                              (line  596)
  * __fractsati:                           Fixed-point fractional library routines.
!                                                              (line  609)
  * __fractsauda:                          Fixed-point fractional library routines.
!                                                              (line  603)
  * __fractsaudq:                          Fixed-point fractional library routines.
!                                                              (line  600)
  * __fractsauha:                          Fixed-point fractional library routines.
!                                                              (line  601)
  * __fractsauhq:                          Fixed-point fractional library routines.
!                                                              (line  598)
  * __fractsauqq:                          Fixed-point fractional library routines.
!                                                              (line  597)
  * __fractsausa:                          Fixed-point fractional library routines.
!                                                              (line  602)
  * __fractsausq:                          Fixed-point fractional library routines.
!                                                              (line  599)
  * __fractsauta:                          Fixed-point fractional library routines.
!                                                              (line  604)
  * __fractsfda:                           Fixed-point fractional library routines.
!                                                              (line 1008)
  * __fractsfdq:                           Fixed-point fractional library routines.
!                                                              (line 1005)
  * __fractsfha:                           Fixed-point fractional library routines.
!                                                              (line 1006)
  * __fractsfhq:                           Fixed-point fractional library routines.
!                                                              (line 1003)
  * __fractsfqq:                           Fixed-point fractional library routines.
!                                                              (line 1002)
  * __fractsfsa:                           Fixed-point fractional library routines.
!                                                              (line 1007)
  * __fractsfsq:                           Fixed-point fractional library routines.
!                                                              (line 1004)
  * __fractsfta:                           Fixed-point fractional library routines.
!                                                              (line 1009)
  * __fractsfuda:                          Fixed-point fractional library routines.
!                                                              (line 1016)
  * __fractsfudq:                          Fixed-point fractional library routines.
!                                                              (line 1013)
  * __fractsfuha:                          Fixed-point fractional library routines.
!                                                              (line 1014)
  * __fractsfuhq:                          Fixed-point fractional library routines.
!                                                              (line 1011)
  * __fractsfuqq:                          Fixed-point fractional library routines.
!                                                              (line 1010)
  * __fractsfusa:                          Fixed-point fractional library routines.
!                                                              (line 1015)
  * __fractsfusq:                          Fixed-point fractional library routines.
!                                                              (line 1012)
  * __fractsfuta:                          Fixed-point fractional library routines.
!                                                              (line 1017)
  * __fractsida:                           Fixed-point fractional library routines.
!                                                              (line  958)
  * __fractsidq:                           Fixed-point fractional library routines.
!                                                              (line  955)
  * __fractsiha:                           Fixed-point fractional library routines.
!                                                              (line  956)
  * __fractsihq:                           Fixed-point fractional library routines.
!                                                              (line  953)
  * __fractsiqq:                           Fixed-point fractional library routines.
!                                                              (line  952)
  * __fractsisa:                           Fixed-point fractional library routines.
!                                                              (line  957)
  * __fractsisq:                           Fixed-point fractional library routines.
!                                                              (line  954)
  * __fractsita:                           Fixed-point fractional library routines.
!                                                              (line  959)
  * __fractsiuda:                          Fixed-point fractional library routines.
!                                                              (line  966)
  * __fractsiudq:                          Fixed-point fractional library routines.
!                                                              (line  963)
  * __fractsiuha:                          Fixed-point fractional library routines.
!                                                              (line  964)
  * __fractsiuhq:                          Fixed-point fractional library routines.
!                                                              (line  961)
  * __fractsiuqq:                          Fixed-point fractional library routines.
!                                                              (line  960)
  * __fractsiusa:                          Fixed-point fractional library routines.
!                                                              (line  965)
  * __fractsiusq:                          Fixed-point fractional library routines.
!                                                              (line  962)
  * __fractsiuta:                          Fixed-point fractional library routines.
!                                                              (line  967)
  * __fractsqda:                           Fixed-point fractional library routines.
!                                                              (line  519)
  * __fractsqdf:                           Fixed-point fractional library routines.
!                                                              (line  537)
  * __fractsqdi:                           Fixed-point fractional library routines.
!                                                              (line  534)
  * __fractsqdq2:                          Fixed-point fractional library routines.
!                                                              (line  516)
  * __fractsqha:                           Fixed-point fractional library routines.
!                                                              (line  517)
  * __fractsqhi:                           Fixed-point fractional library routines.
!                                                              (line  532)
  * __fractsqhq2:                          Fixed-point fractional library routines.
!                                                              (line  515)
  * __fractsqqi:                           Fixed-point fractional library routines.
!                                                              (line  531)
  * __fractsqqq2:                          Fixed-point fractional library routines.
!                                                              (line  514)
  * __fractsqsa:                           Fixed-point fractional library routines.
!                                                              (line  518)
  * __fractsqsf:                           Fixed-point fractional library routines.
!                                                              (line  536)
  * __fractsqsi:                           Fixed-point fractional library routines.
!                                                              (line  533)
  * __fractsqta:                           Fixed-point fractional library routines.
!                                                              (line  520)
  * __fractsqti:                           Fixed-point fractional library routines.
!                                                              (line  535)
  * __fractsquda:                          Fixed-point fractional library routines.
!                                                              (line  528)
  * __fractsqudq:                          Fixed-point fractional library routines.
!                                                              (line  524)
  * __fractsquha:                          Fixed-point fractional library routines.
!                                                              (line  526)
  * __fractsquhq:                          Fixed-point fractional library routines.
!                                                              (line  522)
  * __fractsquqq:                          Fixed-point fractional library routines.
!                                                              (line  521)
  * __fractsqusa:                          Fixed-point fractional library routines.
!                                                              (line  527)
  * __fractsqusq:                          Fixed-point fractional library routines.
!                                                              (line  523)
  * __fractsquta:                          Fixed-point fractional library routines.
!                                                              (line  529)
  * __fracttada2:                          Fixed-point fractional library routines.
!                                                              (line  642)
  * __fracttadf:                           Fixed-point fractional library routines.
!                                                              (line  663)
  * __fracttadi:                           Fixed-point fractional library routines.
!                                                              (line  660)
  * __fracttadq:                           Fixed-point fractional library routines.
!                                                              (line  639)
  * __fracttaha2:                          Fixed-point fractional library routines.
!                                                              (line  640)
  * __fracttahi:                           Fixed-point fractional library routines.
!                                                              (line  658)
  * __fracttahq:                           Fixed-point fractional library routines.
!                                                              (line  637)
  * __fracttaqi:                           Fixed-point fractional library routines.
!                                                              (line  657)
  * __fracttaqq:                           Fixed-point fractional library routines.
!                                                              (line  636)
  * __fracttasa2:                          Fixed-point fractional library routines.
!                                                              (line  641)
  * __fracttasf:                           Fixed-point fractional library routines.
!                                                              (line  662)
  * __fracttasi:                           Fixed-point fractional library routines.
!                                                              (line  659)
  * __fracttasq:                           Fixed-point fractional library routines.
!                                                              (line  638)
  * __fracttati:                           Fixed-point fractional library routines.
                                                               (line  661)
+ * __fracttauda:                          Fixed-point fractional library routines.
+                                                              (line  653)
  * __fracttaudq:                          Fixed-point fractional library routines.
!                                                              (line  648)
  * __fracttauha:                          Fixed-point fractional library routines.
!                                                              (line  650)
  * __fracttauhq:                          Fixed-point fractional library routines.
!                                                              (line  645)
  * __fracttauqq:                          Fixed-point fractional library routines.
!                                                              (line  643)
  * __fracttausa:                          Fixed-point fractional library routines.
!                                                              (line  652)
  * __fracttausq:                          Fixed-point fractional library routines.
!                                                              (line  646)
  * __fracttauta:                          Fixed-point fractional library routines.
!                                                              (line  655)
  * __fracttida:                           Fixed-point fractional library routines.
!                                                              (line  990)
  * __fracttidq:                           Fixed-point fractional library routines.
!                                                              (line  987)
  * __fracttiha:                           Fixed-point fractional library routines.
!                                                              (line  988)
  * __fracttihq:                           Fixed-point fractional library routines.
!                                                              (line  985)
  * __fracttiqq:                           Fixed-point fractional library routines.
!                                                              (line  984)
  * __fracttisa:                           Fixed-point fractional library routines.
!                                                              (line  989)
  * __fracttisq:                           Fixed-point fractional library routines.
!                                                              (line  986)
  * __fracttita:                           Fixed-point fractional library routines.
!                                                              (line  991)
  * __fracttiuda:                          Fixed-point fractional library routines.
!                                                              (line  999)
  * __fracttiudq:                          Fixed-point fractional library routines.
!                                                              (line  995)
  * __fracttiuha:                          Fixed-point fractional library routines.
!                                                              (line  997)
  * __fracttiuhq:                          Fixed-point fractional library routines.
!                                                              (line  993)
  * __fracttiuqq:                          Fixed-point fractional library routines.
!                                                              (line  992)
  * __fracttiusa:                          Fixed-point fractional library routines.
!                                                              (line  998)
  * __fracttiusq:                          Fixed-point fractional library routines.
!                                                              (line  994)
  * __fracttiuta:                          Fixed-point fractional library routines.
!                                                              (line 1000)
  * __fractudada:                          Fixed-point fractional library routines.
!                                                              (line  857)
  * __fractudadf:                          Fixed-point fractional library routines.
!                                                              (line  880)
  * __fractudadi:                          Fixed-point fractional library routines.
!                                                              (line  877)
  * __fractudadq:                          Fixed-point fractional library routines.
!                                                              (line  853)
  * __fractudaha:                          Fixed-point fractional library routines.
!                                                              (line  855)
  * __fractudahi:                          Fixed-point fractional library routines.
!                                                              (line  875)
  * __fractudahq:                          Fixed-point fractional library routines.
!                                                              (line  851)
  * __fractudaqi:                          Fixed-point fractional library routines.
!                                                              (line  874)
  * __fractudaqq:                          Fixed-point fractional library routines.
!                                                              (line  850)
  * __fractudasa:                          Fixed-point fractional library routines.
!                                                              (line  856)
  * __fractudasf:                          Fixed-point fractional library routines.
!                                                              (line  879)
  * __fractudasi:                          Fixed-point fractional library routines.
!                                                              (line  876)
  * __fractudasq:                          Fixed-point fractional library routines.
!                                                              (line  852)
  * __fractudata:                          Fixed-point fractional library routines.
!                                                              (line  858)
  * __fractudati:                          Fixed-point fractional library routines.
!                                                              (line  878)
  * __fractudaudq:                         Fixed-point fractional library routines.
!                                                              (line  866)
  * __fractudauha2:                        Fixed-point fractional library routines.
!                                                              (line  868)
  * __fractudauhq:                         Fixed-point fractional library routines.
!                                                              (line  862)
  * __fractudauqq:                         Fixed-point fractional library routines.
!                                                              (line  860)
  * __fractudausa2:                        Fixed-point fractional library routines.
!                                                              (line  870)
  * __fractudausq:                         Fixed-point fractional library routines.
!                                                              (line  864)
  * __fractudauta2:                        Fixed-point fractional library routines.
!                                                              (line  872)
  * __fractudqda:                          Fixed-point fractional library routines.
!                                                              (line  764)
  * __fractudqdf:                          Fixed-point fractional library routines.
!                                                              (line  790)
  * __fractudqdi:                          Fixed-point fractional library routines.
!                                                              (line  786)
  * __fractudqdq:                          Fixed-point fractional library routines.
!                                                              (line  759)
  * __fractudqha:                          Fixed-point fractional library routines.
!                                                              (line  761)
  * __fractudqhi:                          Fixed-point fractional library routines.
!                                                              (line  784)
  * __fractudqhq:                          Fixed-point fractional library routines.
!                                                              (line  756)
  * __fractudqqi:                          Fixed-point fractional library routines.
!                                                              (line  782)
  * __fractudqqq:                          Fixed-point fractional library routines.
!                                                              (line  754)
  * __fractudqsa:                          Fixed-point fractional library routines.
!                                                              (line  763)
  * __fractudqsf:                          Fixed-point fractional library routines.
!                                                              (line  789)
  * __fractudqsi:                          Fixed-point fractional library routines.
!                                                              (line  785)
  * __fractudqsq:                          Fixed-point fractional library routines.
!                                                              (line  757)
  * __fractudqta:                          Fixed-point fractional library routines.
!                                                              (line  766)
  * __fractudqti:                          Fixed-point fractional library routines.
!                                                              (line  787)
  * __fractudquda:                         Fixed-point fractional library routines.
!                                                              (line  778)
  * __fractudquha:                         Fixed-point fractional library routines.
!                                                              (line  774)
  * __fractudquhq2:                        Fixed-point fractional library routines.
!                                                              (line  770)
  * __fractudquqq2:                        Fixed-point fractional library routines.
!                                                              (line  768)
  * __fractudqusa:                         Fixed-point fractional library routines.
!                                                              (line  776)
  * __fractudqusq2:                        Fixed-point fractional library routines.
!                                                              (line  772)
  * __fractudquta:                         Fixed-point fractional library routines.
!                                                              (line  780)
  * __fractuhada:                          Fixed-point fractional library routines.
!                                                              (line  798)
  * __fractuhadf:                          Fixed-point fractional library routines.
!                                                              (line  821)
  * __fractuhadi:                          Fixed-point fractional library routines.
!                                                              (line  818)
  * __fractuhadq:                          Fixed-point fractional library routines.
!                                                              (line  794)
  * __fractuhaha:                          Fixed-point fractional library routines.
!                                                              (line  796)
  * __fractuhahi:                          Fixed-point fractional library routines.
!                                                              (line  816)
  * __fractuhahq:                          Fixed-point fractional library routines.
!                                                              (line  792)
  * __fractuhaqi:                          Fixed-point fractional library routines.
!                                                              (line  815)
  * __fractuhaqq:                          Fixed-point fractional library routines.
!                                                              (line  791)
  * __fractuhasa:                          Fixed-point fractional library routines.
!                                                              (line  797)
  * __fractuhasf:                          Fixed-point fractional library routines.
!                                                              (line  820)
  * __fractuhasi:                          Fixed-point fractional library routines.
!                                                              (line  817)
  * __fractuhasq:                          Fixed-point fractional library routines.
!                                                              (line  793)
  * __fractuhata:                          Fixed-point fractional library routines.
!                                                              (line  799)
  * __fractuhati:                          Fixed-point fractional library routines.
                                                               (line  819)
+ * __fractuhauda2:                        Fixed-point fractional library routines.
+                                                              (line  811)
  * __fractuhaudq:                         Fixed-point fractional library routines.
!                                                              (line  807)
  * __fractuhauhq:                         Fixed-point fractional library routines.
!                                                              (line  803)
  * __fractuhauqq:                         Fixed-point fractional library routines.
!                                                              (line  801)
  * __fractuhausa2:                        Fixed-point fractional library routines.
!                                                              (line  809)
  * __fractuhausq:                         Fixed-point fractional library routines.
!                                                              (line  805)
  * __fractuhauta2:                        Fixed-point fractional library routines.
!                                                              (line  813)
  * __fractuhqda:                          Fixed-point fractional library routines.
!                                                              (line  701)
  * __fractuhqdf:                          Fixed-point fractional library routines.
!                                                              (line  722)
  * __fractuhqdi:                          Fixed-point fractional library routines.
!                                                              (line  719)
  * __fractuhqdq:                          Fixed-point fractional library routines.
!                                                              (line  698)
  * __fractuhqha:                          Fixed-point fractional library routines.
!                                                              (line  699)
  * __fractuhqhi:                          Fixed-point fractional library routines.
!                                                              (line  717)
  * __fractuhqhq:                          Fixed-point fractional library routines.
!                                                              (line  696)
  * __fractuhqqi:                          Fixed-point fractional library routines.
!                                                              (line  716)
  * __fractuhqqq:                          Fixed-point fractional library routines.
!                                                              (line  695)
  * __fractuhqsa:                          Fixed-point fractional library routines.
!                                                              (line  700)
  * __fractuhqsf:                          Fixed-point fractional library routines.
!                                                              (line  721)
  * __fractuhqsi:                          Fixed-point fractional library routines.
!                                                              (line  718)
  * __fractuhqsq:                          Fixed-point fractional library routines.
!                                                              (line  697)
  * __fractuhqta:                          Fixed-point fractional library routines.
!                                                              (line  702)
  * __fractuhqti:                          Fixed-point fractional library routines.
                                                               (line  720)
+ * __fractuhquda:                         Fixed-point fractional library routines.
+                                                              (line  712)
  * __fractuhqudq2:                        Fixed-point fractional library routines.
!                                                              (line  707)
  * __fractuhquha:                         Fixed-point fractional library routines.
!                                                              (line  709)
  * __fractuhquqq2:                        Fixed-point fractional library routines.
!                                                              (line  703)
  * __fractuhqusa:                         Fixed-point fractional library routines.
!                                                              (line  711)
  * __fractuhqusq2:                        Fixed-point fractional library routines.
!                                                              (line  705)
  * __fractuhquta:                         Fixed-point fractional library routines.
!                                                              (line  714)
  * __fractunsdadi:                        Fixed-point fractional library routines.
!                                                              (line 1554)
  * __fractunsdahi:                        Fixed-point fractional library routines.
!                                                              (line 1552)
  * __fractunsdaqi:                        Fixed-point fractional library routines.
!                                                              (line 1551)
  * __fractunsdasi:                        Fixed-point fractional library routines.
!                                                              (line 1553)
  * __fractunsdati:                        Fixed-point fractional library routines.
!                                                              (line 1555)
  * __fractunsdida:                        Fixed-point fractional library routines.
!                                                              (line 1706)
  * __fractunsdidq:                        Fixed-point fractional library routines.
!                                                              (line 1703)
  * __fractunsdiha:                        Fixed-point fractional library routines.
!                                                              (line 1704)
  * __fractunsdihq:                        Fixed-point fractional library routines.
!                                                              (line 1701)
  * __fractunsdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1700)
  * __fractunsdisa:                        Fixed-point fractional library routines.
!                                                              (line 1705)
  * __fractunsdisq:                        Fixed-point fractional library routines.
!                                                              (line 1702)
  * __fractunsdita:                        Fixed-point fractional library routines.
!                                                              (line 1707)
  * __fractunsdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1718)
  * __fractunsdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1713)
  * __fractunsdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1715)
  * __fractunsdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1710)
  * __fractunsdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1708)
  * __fractunsdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1717)
  * __fractunsdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1711)
  * __fractunsdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1720)
  * __fractunsdqdi:                        Fixed-point fractional library routines.
!                                                              (line 1538)
  * __fractunsdqhi:                        Fixed-point fractional library routines.
!                                                              (line 1536)
  * __fractunsdqqi:                        Fixed-point fractional library routines.
!                                                              (line 1535)
  * __fractunsdqsi:                        Fixed-point fractional library routines.
!                                                              (line 1537)
  * __fractunsdqti:                        Fixed-point fractional library routines.
!                                                              (line 1539)
  * __fractunshadi:                        Fixed-point fractional library routines.
!                                                              (line 1544)
  * __fractunshahi:                        Fixed-point fractional library routines.
!                                                              (line 1542)
  * __fractunshaqi:                        Fixed-point fractional library routines.
!                                                              (line 1541)
  * __fractunshasi:                        Fixed-point fractional library routines.
!                                                              (line 1543)
  * __fractunshati:                        Fixed-point fractional library routines.
!                                                              (line 1545)
  * __fractunshida:                        Fixed-point fractional library routines.
!                                                              (line 1662)
  * __fractunshidq:                        Fixed-point fractional library routines.
!                                                              (line 1659)
  * __fractunshiha:                        Fixed-point fractional library routines.
!                                                              (line 1660)
  * __fractunshihq:                        Fixed-point fractional library routines.
!                                                              (line 1657)
  * __fractunshiqq:                        Fixed-point fractional library routines.
!                                                              (line 1656)
  * __fractunshisa:                        Fixed-point fractional library routines.
!                                                              (line 1661)
  * __fractunshisq:                        Fixed-point fractional library routines.
!                                                              (line 1658)
  * __fractunshita:                        Fixed-point fractional library routines.
!                                                              (line 1663)
  * __fractunshiuda:                       Fixed-point fractional library routines.
!                                                              (line 1674)
  * __fractunshiudq:                       Fixed-point fractional library routines.
!                                                              (line 1669)
  * __fractunshiuha:                       Fixed-point fractional library routines.
!                                                              (line 1671)
  * __fractunshiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1666)
  * __fractunshiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1664)
  * __fractunshiusa:                       Fixed-point fractional library routines.
!                                                              (line 1673)
  * __fractunshiusq:                       Fixed-point fractional library routines.
!                                                              (line 1667)
  * __fractunshiuta:                       Fixed-point fractional library routines.
!                                                              (line 1676)
  * __fractunshqdi:                        Fixed-point fractional library routines.
!                                                              (line 1528)
  * __fractunshqhi:                        Fixed-point fractional library routines.
!                                                              (line 1526)
  * __fractunshqqi:                        Fixed-point fractional library routines.
!                                                              (line 1525)
  * __fractunshqsi:                        Fixed-point fractional library routines.
!                                                              (line 1527)
  * __fractunshqti:                        Fixed-point fractional library routines.
!                                                              (line 1529)
  * __fractunsqida:                        Fixed-point fractional library routines.
!                                                              (line 1640)
  * __fractunsqidq:                        Fixed-point fractional library routines.
!                                                              (line 1637)
  * __fractunsqiha:                        Fixed-point fractional library routines.
!                                                              (line 1638)
  * __fractunsqihq:                        Fixed-point fractional library routines.
!                                                              (line 1635)
  * __fractunsqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1634)
  * __fractunsqisa:                        Fixed-point fractional library routines.
!                                                              (line 1639)
  * __fractunsqisq:                        Fixed-point fractional library routines.
!                                                              (line 1636)
  * __fractunsqita:                        Fixed-point fractional library routines.
!                                                              (line 1641)
  * __fractunsqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1652)
  * __fractunsqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1647)
  * __fractunsqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1649)
  * __fractunsqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1644)
  * __fractunsqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1642)
  * __fractunsqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1651)
  * __fractunsqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1645)
  * __fractunsqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1654)
  * __fractunsqqdi:                        Fixed-point fractional library routines.
!                                                              (line 1523)
  * __fractunsqqhi:                        Fixed-point fractional library routines.
!                                                              (line 1521)
  * __fractunsqqqi:                        Fixed-point fractional library routines.
!                                                              (line 1520)
  * __fractunsqqsi:                        Fixed-point fractional library routines.
!                                                              (line 1522)
  * __fractunsqqti:                        Fixed-point fractional library routines.
!                                                              (line 1524)
  * __fractunssadi:                        Fixed-point fractional library routines.
!                                                              (line 1549)
  * __fractunssahi:                        Fixed-point fractional library routines.
!                                                              (line 1547)
  * __fractunssaqi:                        Fixed-point fractional library routines.
!                                                              (line 1546)
  * __fractunssasi:                        Fixed-point fractional library routines.
!                                                              (line 1548)
  * __fractunssati:                        Fixed-point fractional library routines.
!                                                              (line 1550)
  * __fractunssida:                        Fixed-point fractional library routines.
!                                                              (line 1684)
  * __fractunssidq:                        Fixed-point fractional library routines.
!                                                              (line 1681)
  * __fractunssiha:                        Fixed-point fractional library routines.
!                                                              (line 1682)
  * __fractunssihq:                        Fixed-point fractional library routines.
!                                                              (line 1679)
  * __fractunssiqq:                        Fixed-point fractional library routines.
!                                                              (line 1678)
  * __fractunssisa:                        Fixed-point fractional library routines.
!                                                              (line 1683)
  * __fractunssisq:                        Fixed-point fractional library routines.
!                                                              (line 1680)
  * __fractunssita:                        Fixed-point fractional library routines.
!                                                              (line 1685)
  * __fractunssiuda:                       Fixed-point fractional library routines.
!                                                              (line 1696)
  * __fractunssiudq:                       Fixed-point fractional library routines.
!                                                              (line 1691)
  * __fractunssiuha:                       Fixed-point fractional library routines.
!                                                              (line 1693)
  * __fractunssiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1688)
  * __fractunssiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1686)
  * __fractunssiusa:                       Fixed-point fractional library routines.
!                                                              (line 1695)
  * __fractunssiusq:                       Fixed-point fractional library routines.
!                                                              (line 1689)
  * __fractunssiuta:                       Fixed-point fractional library routines.
!                                                              (line 1698)
  * __fractunssqdi:                        Fixed-point fractional library routines.
!                                                              (line 1533)
  * __fractunssqhi:                        Fixed-point fractional library routines.
!                                                              (line 1531)
  * __fractunssqqi:                        Fixed-point fractional library routines.
!                                                              (line 1530)
  * __fractunssqsi:                        Fixed-point fractional library routines.
!                                                              (line 1532)
  * __fractunssqti:                        Fixed-point fractional library routines.
!                                                              (line 1534)
  * __fractunstadi:                        Fixed-point fractional library routines.
!                                                              (line 1559)
  * __fractunstahi:                        Fixed-point fractional library routines.
!                                                              (line 1557)
  * __fractunstaqi:                        Fixed-point fractional library routines.
!                                                              (line 1556)
  * __fractunstasi:                        Fixed-point fractional library routines.
!                                                              (line 1558)
  * __fractunstati:                        Fixed-point fractional library routines.
!                                                              (line 1560)
  * __fractunstida:                        Fixed-point fractional library routines.
!                                                              (line 1729)
  * __fractunstidq:                        Fixed-point fractional library routines.
!                                                              (line 1725)
  * __fractunstiha:                        Fixed-point fractional library routines.
!                                                              (line 1727)
  * __fractunstihq:                        Fixed-point fractional library routines.
!                                                              (line 1723)
  * __fractunstiqq:                        Fixed-point fractional library routines.
!                                                              (line 1722)
  * __fractunstisa:                        Fixed-point fractional library routines.
!                                                              (line 1728)
  * __fractunstisq:                        Fixed-point fractional library routines.
!                                                              (line 1724)
  * __fractunstita:                        Fixed-point fractional library routines.
!                                                              (line 1730)
  * __fractunstiuda:                       Fixed-point fractional library routines.
!                                                              (line 1744)
  * __fractunstiudq:                       Fixed-point fractional library routines.
!                                                              (line 1738)
  * __fractunstiuha:                       Fixed-point fractional library routines.
!                                                              (line 1740)
  * __fractunstiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1734)
  * __fractunstiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1732)
  * __fractunstiusa:                       Fixed-point fractional library routines.
!                                                              (line 1742)
  * __fractunstiusq:                       Fixed-point fractional library routines.
!                                                              (line 1736)
  * __fractunstiuta:                       Fixed-point fractional library routines.
!                                                              (line 1746)
  * __fractunsudadi:                       Fixed-point fractional library routines.
!                                                              (line 1620)
  * __fractunsudahi:                       Fixed-point fractional library routines.
!                                                              (line 1616)
  * __fractunsudaqi:                       Fixed-point fractional library routines.
!                                                              (line 1614)
  * __fractunsudasi:                       Fixed-point fractional library routines.
!                                                              (line 1618)
  * __fractunsudati:                       Fixed-point fractional library routines.
!                                                              (line 1622)
  * __fractunsudqdi:                       Fixed-point fractional library routines.
!                                                              (line 1594)
  * __fractunsudqhi:                       Fixed-point fractional library routines.
!                                                              (line 1590)
  * __fractunsudqqi:                       Fixed-point fractional library routines.
!                                                              (line 1588)
  * __fractunsudqsi:                       Fixed-point fractional library routines.
!                                                              (line 1592)
  * __fractunsudqti:                       Fixed-point fractional library routines.
!                                                              (line 1596)
  * __fractunsuhadi:                       Fixed-point fractional library routines.
!                                                              (line 1604)
  * __fractunsuhahi:                       Fixed-point fractional library routines.
!                                                              (line 1600)
  * __fractunsuhaqi:                       Fixed-point fractional library routines.
!                                                              (line 1598)
  * __fractunsuhasi:                       Fixed-point fractional library routines.
!                                                              (line 1602)
  * __fractunsuhati:                       Fixed-point fractional library routines.
!                                                              (line 1606)
  * __fractunsuhqdi:                       Fixed-point fractional library routines.
!                                                              (line 1575)
  * __fractunsuhqhi:                       Fixed-point fractional library routines.
!                                                              (line 1573)
  * __fractunsuhqqi:                       Fixed-point fractional library routines.
!                                                              (line 1572)
  * __fractunsuhqsi:                       Fixed-point fractional library routines.
!                                                              (line 1574)
  * __fractunsuhqti:                       Fixed-point fractional library routines.
                                                               (line 1576)
+ * __fractunsuqqdi:                       Fixed-point fractional library routines.
+                                                              (line 1568)
  * __fractunsuqqhi:                       Fixed-point fractional library routines.
!                                                              (line 1564)
  * __fractunsuqqqi:                       Fixed-point fractional library routines.
!                                                              (line 1562)
  * __fractunsuqqsi:                       Fixed-point fractional library routines.
!                                                              (line 1566)
  * __fractunsuqqti:                       Fixed-point fractional library routines.
!                                                              (line 1570)
  * __fractunsusadi:                       Fixed-point fractional library routines.
!                                                              (line 1611)
  * __fractunsusahi:                       Fixed-point fractional library routines.
!                                                              (line 1609)
  * __fractunsusaqi:                       Fixed-point fractional library routines.
!                                                              (line 1608)
  * __fractunsusasi:                       Fixed-point fractional library routines.
!                                                              (line 1610)
  * __fractunsusati:                       Fixed-point fractional library routines.
!                                                              (line 1612)
  * __fractunsusqdi:                       Fixed-point fractional library routines.
!                                                              (line 1584)
  * __fractunsusqhi:                       Fixed-point fractional library routines.
!                                                              (line 1580)
  * __fractunsusqqi:                       Fixed-point fractional library routines.
!                                                              (line 1578)
  * __fractunsusqsi:                       Fixed-point fractional library routines.
!                                                              (line 1582)
  * __fractunsusqti:                       Fixed-point fractional library routines.
!                                                              (line 1586)
  * __fractunsutadi:                       Fixed-point fractional library routines.
!                                                              (line 1630)
  * __fractunsutahi:                       Fixed-point fractional library routines.
!                                                              (line 1626)
  * __fractunsutaqi:                       Fixed-point fractional library routines.
!                                                              (line 1624)
  * __fractunsutasi:                       Fixed-point fractional library routines.
!                                                              (line 1628)
  * __fractunsutati:                       Fixed-point fractional library routines.
!                                                              (line 1632)
  * __fractuqqda:                          Fixed-point fractional library routines.
!                                                              (line  671)
  * __fractuqqdf:                          Fixed-point fractional library routines.
!                                                              (line  694)
  * __fractuqqdi:                          Fixed-point fractional library routines.
!                                                              (line  691)
  * __fractuqqdq:                          Fixed-point fractional library routines.
!                                                              (line  667)
  * __fractuqqha:                          Fixed-point fractional library routines.
!                                                              (line  669)
  * __fractuqqhi:                          Fixed-point fractional library routines.
!                                                              (line  689)
  * __fractuqqhq:                          Fixed-point fractional library routines.
!                                                              (line  665)
  * __fractuqqqi:                          Fixed-point fractional library routines.
!                                                              (line  688)
  * __fractuqqqq:                          Fixed-point fractional library routines.
!                                                              (line  664)
  * __fractuqqsa:                          Fixed-point fractional library routines.
!                                                              (line  670)
  * __fractuqqsf:                          Fixed-point fractional library routines.
!                                                              (line  693)
  * __fractuqqsi:                          Fixed-point fractional library routines.
!                                                              (line  690)
  * __fractuqqsq:                          Fixed-point fractional library routines.
!                                                              (line  666)
  * __fractuqqta:                          Fixed-point fractional library routines.
!                                                              (line  672)
  * __fractuqqti:                          Fixed-point fractional library routines.
                                                               (line  692)
+ * __fractuqquda:                         Fixed-point fractional library routines.
+                                                              (line  684)
  * __fractuqqudq2:                        Fixed-point fractional library routines.
!                                                              (line  678)
  * __fractuqquha:                         Fixed-point fractional library routines.
!                                                              (line  680)
  * __fractuqquhq2:                        Fixed-point fractional library routines.
!                                                              (line  674)
  * __fractuqqusa:                         Fixed-point fractional library routines.
!                                                              (line  682)
  * __fractuqqusq2:                        Fixed-point fractional library routines.
!                                                              (line  676)
  * __fractuqquta:                         Fixed-point fractional library routines.
!                                                              (line  686)
  * __fractusada:                          Fixed-point fractional library routines.
!                                                              (line  828)
  * __fractusadf:                          Fixed-point fractional library routines.
!                                                              (line  849)
  * __fractusadi:                          Fixed-point fractional library routines.
!                                                              (line  846)
  * __fractusadq:                          Fixed-point fractional library routines.
!                                                              (line  825)
  * __fractusaha:                          Fixed-point fractional library routines.
!                                                              (line  826)
  * __fractusahi:                          Fixed-point fractional library routines.
!                                                              (line  844)
  * __fractusahq:                          Fixed-point fractional library routines.
!                                                              (line  823)
  * __fractusaqi:                          Fixed-point fractional library routines.
!                                                              (line  843)
  * __fractusaqq:                          Fixed-point fractional library routines.
!                                                              (line  822)
  * __fractusasa:                          Fixed-point fractional library routines.
!                                                              (line  827)
  * __fractusasf:                          Fixed-point fractional library routines.
!                                                              (line  848)
  * __fractusasi:                          Fixed-point fractional library routines.
!                                                              (line  845)
  * __fractusasq:                          Fixed-point fractional library routines.
!                                                              (line  824)
  * __fractusata:                          Fixed-point fractional library routines.
!                                                              (line  829)
  * __fractusati:                          Fixed-point fractional library routines.
                                                               (line  847)
+ * __fractusauda2:                        Fixed-point fractional library routines.
+                                                              (line  839)
  * __fractusaudq:                         Fixed-point fractional library routines.
!                                                              (line  835)
  * __fractusauha2:                        Fixed-point fractional library routines.
!                                                              (line  837)
  * __fractusauhq:                         Fixed-point fractional library routines.
!                                                              (line  832)
  * __fractusauqq:                         Fixed-point fractional library routines.
!                                                              (line  830)
  * __fractusausq:                         Fixed-point fractional library routines.
!                                                              (line  833)
  * __fractusauta2:                        Fixed-point fractional library routines.
!                                                              (line  841)
  * __fractusqda:                          Fixed-point fractional library routines.
!                                                              (line  730)
  * __fractusqdf:                          Fixed-point fractional library routines.
!                                                              (line  753)
  * __fractusqdi:                          Fixed-point fractional library routines.
!                                                              (line  750)
  * __fractusqdq:                          Fixed-point fractional library routines.
!                                                              (line  726)
  * __fractusqha:                          Fixed-point fractional library routines.
!                                                              (line  728)
  * __fractusqhi:                          Fixed-point fractional library routines.
!                                                              (line  748)
  * __fractusqhq:                          Fixed-point fractional library routines.
!                                                              (line  724)
  * __fractusqqi:                          Fixed-point fractional library routines.
!                                                              (line  747)
  * __fractusqqq:                          Fixed-point fractional library routines.
!                                                              (line  723)
  * __fractusqsa:                          Fixed-point fractional library routines.
!                                                              (line  729)
  * __fractusqsf:                          Fixed-point fractional library routines.
!                                                              (line  752)
  * __fractusqsi:                          Fixed-point fractional library routines.
!                                                              (line  749)
  * __fractusqsq:                          Fixed-point fractional library routines.
!                                                              (line  725)
  * __fractusqta:                          Fixed-point fractional library routines.
!                                                              (line  731)
  * __fractusqti:                          Fixed-point fractional library routines.
                                                               (line  751)
+ * __fractusquda:                         Fixed-point fractional library routines.
+                                                              (line  743)
  * __fractusqudq2:                        Fixed-point fractional library routines.
!                                                              (line  737)
  * __fractusquha:                         Fixed-point fractional library routines.
!                                                              (line  739)
  * __fractusquhq2:                        Fixed-point fractional library routines.
!                                                              (line  735)
  * __fractusquqq2:                        Fixed-point fractional library routines.
!                                                              (line  733)
  * __fractusqusa:                         Fixed-point fractional library routines.
!                                                              (line  741)
  * __fractusquta:                         Fixed-point fractional library routines.
!                                                              (line  745)
  * __fractutada:                          Fixed-point fractional library routines.
!                                                              (line  891)
  * __fractutadf:                          Fixed-point fractional library routines.
!                                                              (line  917)
  * __fractutadi:                          Fixed-point fractional library routines.
!                                                              (line  913)
  * __fractutadq:                          Fixed-point fractional library routines.
!                                                              (line  886)
  * __fractutaha:                          Fixed-point fractional library routines.
!                                                              (line  888)
  * __fractutahi:                          Fixed-point fractional library routines.
!                                                              (line  911)
  * __fractutahq:                          Fixed-point fractional library routines.
!                                                              (line  883)
  * __fractutaqi:                          Fixed-point fractional library routines.
!                                                              (line  909)
  * __fractutaqq:                          Fixed-point fractional library routines.
!                                                              (line  881)
  * __fractutasa:                          Fixed-point fractional library routines.
!                                                              (line  890)
  * __fractutasf:                          Fixed-point fractional library routines.
!                                                              (line  916)
  * __fractutasi:                          Fixed-point fractional library routines.
!                                                              (line  912)
  * __fractutasq:                          Fixed-point fractional library routines.
!                                                              (line  884)
  * __fractutata:                          Fixed-point fractional library routines.
!                                                              (line  893)
  * __fractutati:                          Fixed-point fractional library routines.
!                                                              (line  914)
  * __fractutauda2:                        Fixed-point fractional library routines.
!                                                              (line  907)
  * __fractutaudq:                         Fixed-point fractional library routines.
!                                                              (line  901)
  * __fractutauha2:                        Fixed-point fractional library routines.
!                                                              (line  903)
  * __fractutauhq:                         Fixed-point fractional library routines.
!                                                              (line  897)
  * __fractutauqq:                         Fixed-point fractional library routines.
!                                                              (line  895)
  * __fractutausa2:                        Fixed-point fractional library routines.
!                                                              (line  905)
  * __fractutausq:                         Fixed-point fractional library routines.
!                                                              (line  899)
  * __gedf2:                               Soft float library routines.
                                                               (line  205)
  * __gesf2:                               Soft float library routines.
*************** Concept Index
*** 50879,50899 ****
  * __lshrti3:                             Integer library routines.
                                                               (line   31)
  * __lshruda3:                            Fixed-point fractional library routines.
!                                                              (line  396)
  * __lshrudq3:                            Fixed-point fractional library routines.
!                                                              (line  390)
  * __lshruha3:                            Fixed-point fractional library routines.
!                                                              (line  392)
  * __lshruhq3:                            Fixed-point fractional library routines.
!                                                              (line  386)
  * __lshruqq3:                            Fixed-point fractional library routines.
!                                                              (line  384)
  * __lshrusa3:                            Fixed-point fractional library routines.
!                                                              (line  394)
  * __lshrusq3:                            Fixed-point fractional library routines.
!                                                              (line  388)
  * __lshruta3:                            Fixed-point fractional library routines.
!                                                              (line  398)
  * __ltdf2:                               Soft float library routines.
                                                               (line  211)
  * __ltsf2:                               Soft float library routines.
--- 50887,50907 ----
  * __lshrti3:                             Integer library routines.
                                                               (line   31)
  * __lshruda3:                            Fixed-point fractional library routines.
!                                                              (line  388)
  * __lshrudq3:                            Fixed-point fractional library routines.
!                                                              (line  382)
  * __lshruha3:                            Fixed-point fractional library routines.
!                                                              (line  384)
  * __lshruhq3:                            Fixed-point fractional library routines.
!                                                              (line  378)
  * __lshruqq3:                            Fixed-point fractional library routines.
!                                                              (line  376)
  * __lshrusa3:                            Fixed-point fractional library routines.
!                                                              (line  386)
  * __lshrusq3:                            Fixed-point fractional library routines.
!                                                              (line  380)
  * __lshruta3:                            Fixed-point fractional library routines.
!                                                              (line  390)
  * __ltdf2:                               Soft float library routines.
                                                               (line  211)
  * __ltsf2:                               Soft float library routines.
*************** Concept Index
*** 50914,50920 ****
  * __morestack_segments:                  Miscellaneous routines.
                                                               (line   44)
  * __mulda3:                              Fixed-point fractional library routines.
!                                                              (line  178)
  * __muldc3:                              Soft float library routines.
                                                               (line  239)
  * __muldf3:                              Soft float library routines.
--- 50922,50928 ----
  * __morestack_segments:                  Miscellaneous routines.
                                                               (line   44)
  * __mulda3:                              Fixed-point fractional library routines.
!                                                              (line  170)
  * __muldc3:                              Soft float library routines.
                                                               (line  239)
  * __muldf3:                              Soft float library routines.
*************** Concept Index
*** 50922,50936 ****
  * __muldi3:                              Integer library routines.
                                                               (line   42)
  * __muldq3:                              Fixed-point fractional library routines.
!                                                              (line  165)
  * __mulha3:                              Fixed-point fractional library routines.
!                                                              (line  175)
  * __mulhq3:                              Fixed-point fractional library routines.
!                                                              (line  163)
  * __mulqq3:                              Fixed-point fractional library routines.
!                                                              (line  161)
  * __mulsa3:                              Fixed-point fractional library routines.
!                                                              (line  177)
  * __mulsc3:                              Soft float library routines.
                                                               (line  237)
  * __mulsf3:                              Soft float library routines.
--- 50930,50944 ----
  * __muldi3:                              Integer library routines.
                                                               (line   42)
  * __muldq3:                              Fixed-point fractional library routines.
!                                                              (line  157)
  * __mulha3:                              Fixed-point fractional library routines.
!                                                              (line  167)
  * __mulhq3:                              Fixed-point fractional library routines.
!                                                              (line  155)
  * __mulqq3:                              Fixed-point fractional library routines.
!                                                              (line  153)
  * __mulsa3:                              Fixed-point fractional library routines.
!                                                              (line  169)
  * __mulsc3:                              Soft float library routines.
                                                               (line  237)
  * __mulsf3:                              Soft float library routines.
*************** Concept Index
*** 50938,50946 ****
  * __mulsi3:                              Integer library routines.
                                                               (line   41)
  * __mulsq3:                              Fixed-point fractional library routines.
!                                                              (line  164)
  * __multa3:                              Fixed-point fractional library routines.
!                                                              (line  179)
  * __multc3:                              Soft float library routines.
                                                               (line  241)
  * __multf3:                              Soft float library routines.
--- 50946,50954 ----
  * __mulsi3:                              Integer library routines.
                                                               (line   41)
  * __mulsq3:                              Fixed-point fractional library routines.
!                                                              (line  156)
  * __multa3:                              Fixed-point fractional library routines.
!                                                              (line  171)
  * __multc3:                              Soft float library routines.
                                                               (line  241)
  * __multf3:                              Soft float library routines.
*************** Concept Index
*** 50948,50968 ****
  * __multi3:                              Integer library routines.
                                                               (line   43)
  * __muluda3:                             Fixed-point fractional library routines.
!                                                              (line  185)
  * __muludq3:                             Fixed-point fractional library routines.
!                                                              (line  173)
  * __muluha3:                             Fixed-point fractional library routines.
!                                                              (line  181)
  * __muluhq3:                             Fixed-point fractional library routines.
!                                                              (line  169)
  * __muluqq3:                             Fixed-point fractional library routines.
!                                                              (line  167)
  * __mulusa3:                             Fixed-point fractional library routines.
!                                                              (line  183)
  * __mulusq3:                             Fixed-point fractional library routines.
!                                                              (line  171)
  * __muluta3:                             Fixed-point fractional library routines.
!                                                              (line  187)
  * __mulvdi3:                             Integer library routines.
                                                               (line  114)
  * __mulvsi3:                             Integer library routines.
--- 50956,50976 ----
  * __multi3:                              Integer library routines.
                                                               (line   43)
  * __muluda3:                             Fixed-point fractional library routines.
!                                                              (line  177)
  * __muludq3:                             Fixed-point fractional library routines.
!                                                              (line  165)
  * __muluha3:                             Fixed-point fractional library routines.
!                                                              (line  173)
  * __muluhq3:                             Fixed-point fractional library routines.
!                                                              (line  161)
  * __muluqq3:                             Fixed-point fractional library routines.
!                                                              (line  159)
  * __mulusa3:                             Fixed-point fractional library routines.
!                                                              (line  175)
  * __mulusq3:                             Fixed-point fractional library routines.
!                                                              (line  163)
  * __muluta3:                             Fixed-point fractional library routines.
!                                                              (line  179)
  * __mulvdi3:                             Integer library routines.
                                                               (line  114)
  * __mulvsi3:                             Integer library routines.
*************** Concept Index
*** 50974,51020 ****
  * __nedf2:                               Soft float library routines.
                                                               (line  199)
  * __negda2:                              Fixed-point fractional library routines.
!                                                              (line  306)
  * __negdf2:                              Soft float library routines.
                                                               (line   55)
  * __negdi2:                              Integer library routines.
                                                               (line   46)
  * __negdq2:                              Fixed-point fractional library routines.
!                                                              (line  296)
  * __negha2:                              Fixed-point fractional library routines.
!                                                              (line  304)
  * __neghq2:                              Fixed-point fractional library routines.
!                                                              (line  294)
  * __negqq2:                              Fixed-point fractional library routines.
!                                                              (line  293)
  * __negsa2:                              Fixed-point fractional library routines.
!                                                              (line  305)
  * __negsf2:                              Soft float library routines.
                                                               (line   54)
  * __negsq2:                              Fixed-point fractional library routines.
!                                                              (line  295)
  * __negta2:                              Fixed-point fractional library routines.
!                                                              (line  307)
  * __negtf2:                              Soft float library routines.
                                                               (line   56)
  * __negti2:                              Integer library routines.
                                                               (line   47)
  * __neguda2:                             Fixed-point fractional library routines.
!                                                              (line  311)
  * __negudq2:                             Fixed-point fractional library routines.
!                                                              (line  302)
  * __neguha2:                             Fixed-point fractional library routines.
!                                                              (line  308)
  * __neguhq2:                             Fixed-point fractional library routines.
!                                                              (line  299)
  * __neguqq2:                             Fixed-point fractional library routines.
!                                                              (line  297)
  * __negusa2:                             Fixed-point fractional library routines.
!                                                              (line  310)
  * __negusq2:                             Fixed-point fractional library routines.
!                                                              (line  300)
  * __neguta2:                             Fixed-point fractional library routines.
!                                                              (line  313)
  * __negvdi2:                             Integer library routines.
                                                               (line  118)
  * __negvsi2:                             Integer library routines.
--- 50982,51028 ----
  * __nedf2:                               Soft float library routines.
                                                               (line  199)
  * __negda2:                              Fixed-point fractional library routines.
!                                                              (line  298)
  * __negdf2:                              Soft float library routines.
                                                               (line   55)
  * __negdi2:                              Integer library routines.
                                                               (line   46)
  * __negdq2:                              Fixed-point fractional library routines.
!                                                              (line  288)
  * __negha2:                              Fixed-point fractional library routines.
!                                                              (line  296)
  * __neghq2:                              Fixed-point fractional library routines.
!                                                              (line  286)
  * __negqq2:                              Fixed-point fractional library routines.
!                                                              (line  285)
  * __negsa2:                              Fixed-point fractional library routines.
!                                                              (line  297)
  * __negsf2:                              Soft float library routines.
                                                               (line   54)
  * __negsq2:                              Fixed-point fractional library routines.
!                                                              (line  287)
  * __negta2:                              Fixed-point fractional library routines.
!                                                              (line  299)
  * __negtf2:                              Soft float library routines.
                                                               (line   56)
  * __negti2:                              Integer library routines.
                                                               (line   47)
  * __neguda2:                             Fixed-point fractional library routines.
!                                                              (line  303)
  * __negudq2:                             Fixed-point fractional library routines.
!                                                              (line  294)
  * __neguha2:                             Fixed-point fractional library routines.
!                                                              (line  300)
  * __neguhq2:                             Fixed-point fractional library routines.
!                                                              (line  291)
  * __neguqq2:                             Fixed-point fractional library routines.
!                                                              (line  289)
  * __negusa2:                             Fixed-point fractional library routines.
!                                                              (line  302)
  * __negusq2:                             Fixed-point fractional library routines.
!                                                              (line  292)
  * __neguta2:                             Fixed-point fractional library routines.
!                                                              (line  305)
  * __negvdi2:                             Integer library routines.
                                                               (line  118)
  * __negvsi2:                             Integer library routines.
*************** Concept Index
*** 51046,52048 ****
  * __powixf2:                             Soft float library routines.
                                                               (line  234)
  * __satfractdadq:                        Fixed-point fractional library routines.
!                                                              (line 1160)
  * __satfractdaha2:                       Fixed-point fractional library routines.
!                                                              (line 1161)
  * __satfractdahq:                        Fixed-point fractional library routines.
!                                                              (line 1158)
  * __satfractdaqq:                        Fixed-point fractional library routines.
!                                                              (line 1157)
  * __satfractdasa2:                       Fixed-point fractional library routines.
!                                                              (line 1162)
  * __satfractdasq:                        Fixed-point fractional library routines.
!                                                              (line 1159)
  * __satfractdata2:                       Fixed-point fractional library routines.
!                                                              (line 1163)
  * __satfractdauda:                       Fixed-point fractional library routines.
!                                                              (line 1173)
  * __satfractdaudq:                       Fixed-point fractional library routines.
!                                                              (line 1168)
  * __satfractdauha:                       Fixed-point fractional library routines.
!                                                              (line 1170)
  * __satfractdauhq:                       Fixed-point fractional library routines.
!                                                              (line 1166)
  * __satfractdauqq:                       Fixed-point fractional library routines.
!                                                              (line 1164)
  * __satfractdausa:                       Fixed-point fractional library routines.
!                                                              (line 1172)
  * __satfractdausq:                       Fixed-point fractional library routines.
!                                                              (line 1167)
  * __satfractdauta:                       Fixed-point fractional library routines.
!                                                              (line 1174)
  * __satfractdfda:                        Fixed-point fractional library routines.
!                                                              (line 1513)
  * __satfractdfdq:                        Fixed-point fractional library routines.
!                                                              (line 1510)
  * __satfractdfha:                        Fixed-point fractional library routines.
!                                                              (line 1511)
  * __satfractdfhq:                        Fixed-point fractional library routines.
!                                                              (line 1508)
  * __satfractdfqq:                        Fixed-point fractional library routines.
!                                                              (line 1507)
  * __satfractdfsa:                        Fixed-point fractional library routines.
!                                                              (line 1512)
  * __satfractdfsq:                        Fixed-point fractional library routines.
!                                                              (line 1509)
  * __satfractdfta:                        Fixed-point fractional library routines.
!                                                              (line 1514)
  * __satfractdfuda:                       Fixed-point fractional library routines.
!                                                              (line 1522)
  * __satfractdfudq:                       Fixed-point fractional library routines.
!                                                              (line 1518)
  * __satfractdfuha:                       Fixed-point fractional library routines.
!                                                              (line 1520)
  * __satfractdfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1516)
  * __satfractdfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1515)
  * __satfractdfusa:                       Fixed-point fractional library routines.
!                                                              (line 1521)
  * __satfractdfusq:                       Fixed-point fractional library routines.
!                                                              (line 1517)
  * __satfractdfuta:                       Fixed-point fractional library routines.
!                                                              (line 1523)
  * __satfractdida:                        Fixed-point fractional library routines.
!                                                              (line 1463)
  * __satfractdidq:                        Fixed-point fractional library routines.
!                                                              (line 1460)
  * __satfractdiha:                        Fixed-point fractional library routines.
!                                                              (line 1461)
  * __satfractdihq:                        Fixed-point fractional library routines.
!                                                              (line 1458)
  * __satfractdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1457)
  * __satfractdisa:                        Fixed-point fractional library routines.
!                                                              (line 1462)
  * __satfractdisq:                        Fixed-point fractional library routines.
!                                                              (line 1459)
  * __satfractdita:                        Fixed-point fractional library routines.
!                                                              (line 1464)
  * __satfractdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1471)
  * __satfractdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1468)
  * __satfractdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1469)
  * __satfractdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1466)
  * __satfractdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1465)
  * __satfractdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1470)
  * __satfractdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1467)
  * __satfractdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1472)
  * __satfractdqda:                        Fixed-point fractional library routines.
!                                                              (line 1105)
  * __satfractdqha:                        Fixed-point fractional library routines.
!                                                              (line 1103)
  * __satfractdqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1101)
  * __satfractdqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1100)
  * __satfractdqsa:                        Fixed-point fractional library routines.
!                                                              (line 1104)
  * __satfractdqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1102)
  * __satfractdqta:                        Fixed-point fractional library routines.
!                                                              (line 1106)
  * __satfractdquda:                       Fixed-point fractional library routines.
!                                                              (line 1117)
  * __satfractdqudq:                       Fixed-point fractional library routines.
!                                                              (line 1112)
  * __satfractdquha:                       Fixed-point fractional library routines.
!                                                              (line 1114)
  * __satfractdquhq:                       Fixed-point fractional library routines.
!                                                              (line 1109)
  * __satfractdquqq:                       Fixed-point fractional library routines.
!                                                              (line 1107)
  * __satfractdqusa:                       Fixed-point fractional library routines.
!                                                              (line 1116)
  * __satfractdqusq:                       Fixed-point fractional library routines.
!                                                              (line 1110)
  * __satfractdquta:                       Fixed-point fractional library routines.
!                                                              (line 1119)
  * __satfracthada2:                       Fixed-point fractional library routines.
!                                                              (line 1126)
  * __satfracthadq:                        Fixed-point fractional library routines.
!                                                              (line 1124)
  * __satfracthahq:                        Fixed-point fractional library routines.
!                                                              (line 1122)
  * __satfracthaqq:                        Fixed-point fractional library routines.
!                                                              (line 1121)
  * __satfracthasa2:                       Fixed-point fractional library routines.
!                                                              (line 1125)
  * __satfracthasq:                        Fixed-point fractional library routines.
!                                                              (line 1123)
  * __satfracthata2:                       Fixed-point fractional library routines.
!                                                              (line 1127)
  * __satfracthauda:                       Fixed-point fractional library routines.
!                                                              (line 1138)
  * __satfracthaudq:                       Fixed-point fractional library routines.
!                                                              (line 1133)
  * __satfracthauha:                       Fixed-point fractional library routines.
!                                                              (line 1135)
  * __satfracthauhq:                       Fixed-point fractional library routines.
!                                                              (line 1130)
  * __satfracthauqq:                       Fixed-point fractional library routines.
!                                                              (line 1128)
  * __satfracthausa:                       Fixed-point fractional library routines.
!                                                              (line 1137)
  * __satfracthausq:                       Fixed-point fractional library routines.
!                                                              (line 1131)
  * __satfracthauta:                       Fixed-point fractional library routines.
!                                                              (line 1140)
  * __satfracthida:                        Fixed-point fractional library routines.
!                                                              (line 1431)
  * __satfracthidq:                        Fixed-point fractional library routines.
!                                                              (line 1428)
  * __satfracthiha:                        Fixed-point fractional library routines.
!                                                              (line 1429)
  * __satfracthihq:                        Fixed-point fractional library routines.
!                                                              (line 1426)
  * __satfracthiqq:                        Fixed-point fractional library routines.
!                                                              (line 1425)
  * __satfracthisa:                        Fixed-point fractional library routines.
!                                                              (line 1430)
  * __satfracthisq:                        Fixed-point fractional library routines.
!                                                              (line 1427)
  * __satfracthita:                        Fixed-point fractional library routines.
!                                                              (line 1432)
  * __satfracthiuda:                       Fixed-point fractional library routines.
!                                                              (line 1439)
  * __satfracthiudq:                       Fixed-point fractional library routines.
!                                                              (line 1436)
  * __satfracthiuha:                       Fixed-point fractional library routines.
!                                                              (line 1437)
  * __satfracthiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1434)
  * __satfracthiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1433)
  * __satfracthiusa:                       Fixed-point fractional library routines.
!                                                              (line 1438)
  * __satfracthiusq:                       Fixed-point fractional library routines.
!                                                              (line 1435)
  * __satfracthiuta:                       Fixed-point fractional library routines.
!                                                              (line 1440)
  * __satfracthqda:                        Fixed-point fractional library routines.
!                                                              (line 1071)
  * __satfracthqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1068)
  * __satfracthqha:                        Fixed-point fractional library routines.
!                                                              (line 1069)
  * __satfracthqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1066)
  * __satfracthqsa:                        Fixed-point fractional library routines.
!                                                              (line 1070)
  * __satfracthqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1067)
  * __satfracthqta:                        Fixed-point fractional library routines.
!                                                              (line 1072)
  * __satfracthquda:                       Fixed-point fractional library routines.
!                                                              (line 1079)
  * __satfracthqudq:                       Fixed-point fractional library routines.
!                                                              (line 1076)
  * __satfracthquha:                       Fixed-point fractional library routines.
!                                                              (line 1077)
  * __satfracthquhq:                       Fixed-point fractional library routines.
!                                                              (line 1074)
  * __satfracthquqq:                       Fixed-point fractional library routines.
!                                                              (line 1073)
  * __satfracthqusa:                       Fixed-point fractional library routines.
!                                                              (line 1078)
  * __satfracthqusq:                       Fixed-point fractional library routines.
!                                                              (line 1075)
  * __satfracthquta:                       Fixed-point fractional library routines.
!                                                              (line 1080)
  * __satfractqida:                        Fixed-point fractional library routines.
!                                                              (line 1409)
  * __satfractqidq:                        Fixed-point fractional library routines.
!                                                              (line 1406)
  * __satfractqiha:                        Fixed-point fractional library routines.
!                                                              (line 1407)
  * __satfractqihq:                        Fixed-point fractional library routines.
!                                                              (line 1404)
  * __satfractqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1403)
  * __satfractqisa:                        Fixed-point fractional library routines.
!                                                              (line 1408)
  * __satfractqisq:                        Fixed-point fractional library routines.
!                                                              (line 1405)
  * __satfractqita:                        Fixed-point fractional library routines.
!                                                              (line 1410)
  * __satfractqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1421)
  * __satfractqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1416)
  * __satfractqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1418)
  * __satfractqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1413)
  * __satfractqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1411)
  * __satfractqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1420)
  * __satfractqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1414)
  * __satfractqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1423)
  * __satfractqqda:                        Fixed-point fractional library routines.
!                                                              (line 1050)
  * __satfractqqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1047)
  * __satfractqqha:                        Fixed-point fractional library routines.
!                                                              (line 1048)
  * __satfractqqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1045)
  * __satfractqqsa:                        Fixed-point fractional library routines.
!                                                              (line 1049)
  * __satfractqqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1046)
  * __satfractqqta:                        Fixed-point fractional library routines.
!                                                              (line 1051)
  * __satfractqquda:                       Fixed-point fractional library routines.
!                                                              (line 1062)
  * __satfractqqudq:                       Fixed-point fractional library routines.
!                                                              (line 1057)
  * __satfractqquha:                       Fixed-point fractional library routines.
!                                                              (line 1059)
  * __satfractqquhq:                       Fixed-point fractional library routines.
!                                                              (line 1054)
  * __satfractqquqq:                       Fixed-point fractional library routines.
!                                                              (line 1052)
  * __satfractqqusa:                       Fixed-point fractional library routines.
!                                                              (line 1061)
  * __satfractqqusq:                       Fixed-point fractional library routines.
!                                                              (line 1055)
  * __satfractqquta:                       Fixed-point fractional library routines.
!                                                              (line 1064)
  * __satfractsada2:                       Fixed-point fractional library routines.
!                                                              (line 1147)
  * __satfractsadq:                        Fixed-point fractional library routines.
!                                                              (line 1145)
  * __satfractsaha2:                       Fixed-point fractional library routines.
!                                                              (line 1146)
  * __satfractsahq:                        Fixed-point fractional library routines.
!                                                              (line 1143)
  * __satfractsaqq:                        Fixed-point fractional library routines.
!                                                              (line 1142)
  * __satfractsasq:                        Fixed-point fractional library routines.
!                                                              (line 1144)
  * __satfractsata2:                       Fixed-point fractional library routines.
!                                                              (line 1148)
  * __satfractsauda:                       Fixed-point fractional library routines.
!                                                              (line 1155)
  * __satfractsaudq:                       Fixed-point fractional library routines.
!                                                              (line 1152)
  * __satfractsauha:                       Fixed-point fractional library routines.
!                                                              (line 1153)
  * __satfractsauhq:                       Fixed-point fractional library routines.
!                                                              (line 1150)
  * __satfractsauqq:                       Fixed-point fractional library routines.
!                                                              (line 1149)
  * __satfractsausa:                       Fixed-point fractional library routines.
!                                                              (line 1154)
  * __satfractsausq:                       Fixed-point fractional library routines.
!                                                              (line 1151)
  * __satfractsauta:                       Fixed-point fractional library routines.
!                                                              (line 1156)
  * __satfractsfda:                        Fixed-point fractional library routines.
!                                                              (line 1497)
  * __satfractsfdq:                        Fixed-point fractional library routines.
!                                                              (line 1494)
  * __satfractsfha:                        Fixed-point fractional library routines.
!                                                              (line 1495)
  * __satfractsfhq:                        Fixed-point fractional library routines.
!                                                              (line 1492)
  * __satfractsfqq:                        Fixed-point fractional library routines.
!                                                              (line 1491)
  * __satfractsfsa:                        Fixed-point fractional library routines.
!                                                              (line 1496)
  * __satfractsfsq:                        Fixed-point fractional library routines.
!                                                              (line 1493)
  * __satfractsfta:                        Fixed-point fractional library routines.
!                                                              (line 1498)
  * __satfractsfuda:                       Fixed-point fractional library routines.
!                                                              (line 1505)
  * __satfractsfudq:                       Fixed-point fractional library routines.
!                                                              (line 1502)
  * __satfractsfuha:                       Fixed-point fractional library routines.
!                                                              (line 1503)
  * __satfractsfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1500)
  * __satfractsfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1499)
  * __satfractsfusa:                       Fixed-point fractional library routines.
!                                                              (line 1504)
  * __satfractsfusq:                       Fixed-point fractional library routines.
!                                                              (line 1501)
  * __satfractsfuta:                       Fixed-point fractional library routines.
!                                                              (line 1506)
  * __satfractsida:                        Fixed-point fractional library routines.
!                                                              (line 1447)
  * __satfractsidq:                        Fixed-point fractional library routines.
!                                                              (line 1444)
  * __satfractsiha:                        Fixed-point fractional library routines.
!                                                              (line 1445)
  * __satfractsihq:                        Fixed-point fractional library routines.
!                                                              (line 1442)
  * __satfractsiqq:                        Fixed-point fractional library routines.
!                                                              (line 1441)
  * __satfractsisa:                        Fixed-point fractional library routines.
!                                                              (line 1446)
  * __satfractsisq:                        Fixed-point fractional library routines.
!                                                              (line 1443)
  * __satfractsita:                        Fixed-point fractional library routines.
!                                                              (line 1448)
  * __satfractsiuda:                       Fixed-point fractional library routines.
!                                                              (line 1455)
  * __satfractsiudq:                       Fixed-point fractional library routines.
!                                                              (line 1452)
  * __satfractsiuha:                       Fixed-point fractional library routines.
!                                                              (line 1453)
  * __satfractsiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1450)
  * __satfractsiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1449)
  * __satfractsiusa:                       Fixed-point fractional library routines.
!                                                              (line 1454)
  * __satfractsiusq:                       Fixed-point fractional library routines.
!                                                              (line 1451)
  * __satfractsiuta:                       Fixed-point fractional library routines.
!                                                              (line 1456)
  * __satfractsqda:                        Fixed-point fractional library routines.
!                                                              (line 1086)
  * __satfractsqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1083)
  * __satfractsqha:                        Fixed-point fractional library routines.
!                                                              (line 1084)
  * __satfractsqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1082)
  * __satfractsqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1081)
  * __satfractsqsa:                        Fixed-point fractional library routines.
!                                                              (line 1085)
  * __satfractsqta:                        Fixed-point fractional library routines.
!                                                              (line 1087)
  * __satfractsquda:                       Fixed-point fractional library routines.
!                                                              (line 1097)
  * __satfractsqudq:                       Fixed-point fractional library routines.
!                                                              (line 1092)
  * __satfractsquha:                       Fixed-point fractional library routines.
!                                                              (line 1094)
  * __satfractsquhq:                       Fixed-point fractional library routines.
!                                                              (line 1090)
  * __satfractsquqq:                       Fixed-point fractional library routines.
!                                                              (line 1088)
  * __satfractsqusa:                       Fixed-point fractional library routines.
!                                                              (line 1096)
  * __satfractsqusq:                       Fixed-point fractional library routines.
!                                                              (line 1091)
  * __satfractsquta:                       Fixed-point fractional library routines.
!                                                              (line 1098)
  * __satfracttada2:                       Fixed-point fractional library routines.
!                                                              (line 1182)
  * __satfracttadq:                        Fixed-point fractional library routines.
!                                                              (line 1179)
  * __satfracttaha2:                       Fixed-point fractional library routines.
!                                                              (line 1180)
  * __satfracttahq:                        Fixed-point fractional library routines.
!                                                              (line 1177)
  * __satfracttaqq:                        Fixed-point fractional library routines.
!                                                              (line 1176)
  * __satfracttasa2:                       Fixed-point fractional library routines.
!                                                              (line 1181)
  * __satfracttasq:                        Fixed-point fractional library routines.
!                                                              (line 1178)
  * __satfracttauda:                       Fixed-point fractional library routines.
!                                                              (line 1193)
  * __satfracttaudq:                       Fixed-point fractional library routines.
!                                                              (line 1188)
  * __satfracttauha:                       Fixed-point fractional library routines.
!                                                              (line 1190)
  * __satfracttauhq:                       Fixed-point fractional library routines.
!                                                              (line 1185)
  * __satfracttauqq:                       Fixed-point fractional library routines.
!                                                              (line 1183)
  * __satfracttausa:                       Fixed-point fractional library routines.
!                                                              (line 1192)
  * __satfracttausq:                       Fixed-point fractional library routines.
!                                                              (line 1186)
  * __satfracttauta:                       Fixed-point fractional library routines.
!                                                              (line 1195)
  * __satfracttida:                        Fixed-point fractional library routines.
!                                                              (line 1479)
  * __satfracttidq:                        Fixed-point fractional library routines.
!                                                              (line 1476)
  * __satfracttiha:                        Fixed-point fractional library routines.
!                                                              (line 1477)
  * __satfracttihq:                        Fixed-point fractional library routines.
!                                                              (line 1474)
  * __satfracttiqq:                        Fixed-point fractional library routines.
!                                                              (line 1473)
  * __satfracttisa:                        Fixed-point fractional library routines.
!                                                              (line 1478)
  * __satfracttisq:                        Fixed-point fractional library routines.
!                                                              (line 1475)
  * __satfracttita:                        Fixed-point fractional library routines.
!                                                              (line 1480)
  * __satfracttiuda:                       Fixed-point fractional library routines.
!                                                              (line 1488)
  * __satfracttiudq:                       Fixed-point fractional library routines.
!                                                              (line 1484)
  * __satfracttiuha:                       Fixed-point fractional library routines.
!                                                              (line 1486)
  * __satfracttiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1482)
  * __satfracttiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1481)
  * __satfracttiusa:                       Fixed-point fractional library routines.
!                                                              (line 1487)
  * __satfracttiusq:                       Fixed-point fractional library routines.
!                                                              (line 1483)
  * __satfracttiuta:                       Fixed-point fractional library routines.
!                                                              (line 1489)
  * __satfractudada:                       Fixed-point fractional library routines.
!                                                              (line 1358)
  * __satfractudadq:                       Fixed-point fractional library routines.
!                                                              (line 1353)
  * __satfractudaha:                       Fixed-point fractional library routines.
!                                                              (line 1355)
  * __satfractudahq:                       Fixed-point fractional library routines.
!                                                              (line 1351)
  * __satfractudaqq:                       Fixed-point fractional library routines.
!                                                              (line 1349)
  * __satfractudasa:                       Fixed-point fractional library routines.
!                                                              (line 1357)
  * __satfractudasq:                       Fixed-point fractional library routines.
!                                                              (line 1352)
  * __satfractudata:                       Fixed-point fractional library routines.
!                                                              (line 1359)
  * __satfractudaudq:                      Fixed-point fractional library routines.
!                                                              (line 1367)
  * __satfractudauha2:                     Fixed-point fractional library routines.
!                                                              (line 1369)
  * __satfractudauhq:                      Fixed-point fractional library routines.
!                                                              (line 1363)
  * __satfractudauqq:                      Fixed-point fractional library routines.
!                                                              (line 1361)
  * __satfractudausa2:                     Fixed-point fractional library routines.
!                                                              (line 1371)
  * __satfractudausq:                      Fixed-point fractional library routines.
!                                                              (line 1365)
  * __satfractudauta2:                     Fixed-point fractional library routines.
!                                                              (line 1373)
  * __satfractudqda:                       Fixed-point fractional library routines.
!                                                              (line 1282)
  * __satfractudqdq:                       Fixed-point fractional library routines.
!                                                              (line 1277)
  * __satfractudqha:                       Fixed-point fractional library routines.
!                                                              (line 1279)
  * __satfractudqhq:                       Fixed-point fractional library routines.
!                                                              (line 1274)
  * __satfractudqqq:                       Fixed-point fractional library routines.
!                                                              (line 1272)
  * __satfractudqsa:                       Fixed-point fractional library routines.
!                                                              (line 1281)
  * __satfractudqsq:                       Fixed-point fractional library routines.
!                                                              (line 1275)
  * __satfractudqta:                       Fixed-point fractional library routines.
!                                                              (line 1284)
  * __satfractudquda:                      Fixed-point fractional library routines.
!                                                              (line 1296)
  * __satfractudquha:                      Fixed-point fractional library routines.
!                                                              (line 1292)
  * __satfractudquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1288)
  * __satfractudquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1286)
  * __satfractudqusa:                      Fixed-point fractional library routines.
!                                                              (line 1294)
  * __satfractudqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1290)
  * __satfractudquta:                      Fixed-point fractional library routines.
!                                                              (line 1298)
  * __satfractuhada:                       Fixed-point fractional library routines.
!                                                              (line 1310)
  * __satfractuhadq:                       Fixed-point fractional library routines.
!                                                              (line 1305)
  * __satfractuhaha:                       Fixed-point fractional library routines.
!                                                              (line 1307)
  * __satfractuhahq:                       Fixed-point fractional library routines.
!                                                              (line 1302)
  * __satfractuhaqq:                       Fixed-point fractional library routines.
!                                                              (line 1300)
  * __satfractuhasa:                       Fixed-point fractional library routines.
!                                                              (line 1309)
  * __satfractuhasq:                       Fixed-point fractional library routines.
!                                                              (line 1303)
  * __satfractuhata:                       Fixed-point fractional library routines.
!                                                              (line 1312)
  * __satfractuhauda2:                     Fixed-point fractional library routines.
!                                                              (line 1324)
  * __satfractuhaudq:                      Fixed-point fractional library routines.
!                                                              (line 1320)
  * __satfractuhauhq:                      Fixed-point fractional library routines.
!                                                              (line 1316)
  * __satfractuhauqq:                      Fixed-point fractional library routines.
!                                                              (line 1314)
  * __satfractuhausa2:                     Fixed-point fractional library routines.
!                                                              (line 1322)
  * __satfractuhausq:                      Fixed-point fractional library routines.
!                                                              (line 1318)
  * __satfractuhauta2:                     Fixed-point fractional library routines.
!                                                              (line 1326)
  * __satfractuhqda:                       Fixed-point fractional library routines.
!                                                              (line 1231)
  * __satfractuhqdq:                       Fixed-point fractional library routines.
!                                                              (line 1228)
  * __satfractuhqha:                       Fixed-point fractional library routines.
!                                                              (line 1229)
  * __satfractuhqhq:                       Fixed-point fractional library routines.
!                                                              (line 1226)
  * __satfractuhqqq:                       Fixed-point fractional library routines.
!                                                              (line 1225)
  * __satfractuhqsa:                       Fixed-point fractional library routines.
!                                                              (line 1230)
  * __satfractuhqsq:                       Fixed-point fractional library routines.
!                                                              (line 1227)
  * __satfractuhqta:                       Fixed-point fractional library routines.
!                                                              (line 1232)
  * __satfractuhquda:                      Fixed-point fractional library routines.
!                                                              (line 1242)
  * __satfractuhqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1237)
  * __satfractuhquha:                      Fixed-point fractional library routines.
!                                                              (line 1239)
  * __satfractuhquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1233)
  * __satfractuhqusa:                      Fixed-point fractional library routines.
!                                                              (line 1241)
  * __satfractuhqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1235)
  * __satfractuhquta:                      Fixed-point fractional library routines.
!                                                              (line 1244)
  * __satfractunsdida:                     Fixed-point fractional library routines.
!                                                              (line 1841)
  * __satfractunsdidq:                     Fixed-point fractional library routines.
!                                                              (line 1837)
  * __satfractunsdiha:                     Fixed-point fractional library routines.
!                                                              (line 1839)
  * __satfractunsdihq:                     Fixed-point fractional library routines.
!                                                              (line 1835)
  * __satfractunsdiqq:                     Fixed-point fractional library routines.
!                                                              (line 1834)
  * __satfractunsdisa:                     Fixed-point fractional library routines.
!                                                              (line 1840)
  * __satfractunsdisq:                     Fixed-point fractional library routines.
!                                                              (line 1836)
  * __satfractunsdita:                     Fixed-point fractional library routines.
!                                                              (line 1842)
  * __satfractunsdiuda:                    Fixed-point fractional library routines.
!                                                              (line 1856)
  * __satfractunsdiudq:                    Fixed-point fractional library routines.
!                                                              (line 1850)
  * __satfractunsdiuha:                    Fixed-point fractional library routines.
!                                                              (line 1852)
  * __satfractunsdiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1846)
  * __satfractunsdiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1844)
  * __satfractunsdiusa:                    Fixed-point fractional library routines.
!                                                              (line 1854)
  * __satfractunsdiusq:                    Fixed-point fractional library routines.
!                                                              (line 1848)
  * __satfractunsdiuta:                    Fixed-point fractional library routines.
!                                                              (line 1858)
  * __satfractunshida:                     Fixed-point fractional library routines.
!                                                              (line 1793)
  * __satfractunshidq:                     Fixed-point fractional library routines.
!                                                              (line 1789)
  * __satfractunshiha:                     Fixed-point fractional library routines.
!                                                              (line 1791)
  * __satfractunshihq:                     Fixed-point fractional library routines.
!                                                              (line 1787)
  * __satfractunshiqq:                     Fixed-point fractional library routines.
!                                                              (line 1786)
  * __satfractunshisa:                     Fixed-point fractional library routines.
!                                                              (line 1792)
  * __satfractunshisq:                     Fixed-point fractional library routines.
!                                                              (line 1788)
  * __satfractunshita:                     Fixed-point fractional library routines.
!                                                              (line 1794)
  * __satfractunshiuda:                    Fixed-point fractional library routines.
!                                                              (line 1808)
  * __satfractunshiudq:                    Fixed-point fractional library routines.
!                                                              (line 1802)
  * __satfractunshiuha:                    Fixed-point fractional library routines.
!                                                              (line 1804)
  * __satfractunshiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1798)
  * __satfractunshiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1796)
  * __satfractunshiusa:                    Fixed-point fractional library routines.
!                                                              (line 1806)
  * __satfractunshiusq:                    Fixed-point fractional library routines.
!                                                              (line 1800)
  * __satfractunshiuta:                    Fixed-point fractional library routines.
!                                                              (line 1810)
  * __satfractunsqida:                     Fixed-point fractional library routines.
!                                                              (line 1767)
  * __satfractunsqidq:                     Fixed-point fractional library routines.
!                                                              (line 1763)
  * __satfractunsqiha:                     Fixed-point fractional library routines.
!                                                              (line 1765)
  * __satfractunsqihq:                     Fixed-point fractional library routines.
!                                                              (line 1761)
  * __satfractunsqiqq:                     Fixed-point fractional library routines.
!                                                              (line 1760)
  * __satfractunsqisa:                     Fixed-point fractional library routines.
!                                                              (line 1766)
  * __satfractunsqisq:                     Fixed-point fractional library routines.
!                                                              (line 1762)
  * __satfractunsqita:                     Fixed-point fractional library routines.
!                                                              (line 1768)
  * __satfractunsqiuda:                    Fixed-point fractional library routines.
!                                                              (line 1782)
  * __satfractunsqiudq:                    Fixed-point fractional library routines.
!                                                              (line 1776)
  * __satfractunsqiuha:                    Fixed-point fractional library routines.
!                                                              (line 1778)
  * __satfractunsqiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1772)
  * __satfractunsqiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1770)
  * __satfractunsqiusa:                    Fixed-point fractional library routines.
!                                                              (line 1780)
  * __satfractunsqiusq:                    Fixed-point fractional library routines.
!                                                              (line 1774)
  * __satfractunsqiuta:                    Fixed-point fractional library routines.
!                                                              (line 1784)
  * __satfractunssida:                     Fixed-point fractional library routines.
!                                                              (line 1818)
  * __satfractunssidq:                     Fixed-point fractional library routines.
!                                                              (line 1815)
  * __satfractunssiha:                     Fixed-point fractional library routines.
!                                                              (line 1816)
  * __satfractunssihq:                     Fixed-point fractional library routines.
!                                                              (line 1813)
  * __satfractunssiqq:                     Fixed-point fractional library routines.
!                                                              (line 1812)
  * __satfractunssisa:                     Fixed-point fractional library routines.
!                                                              (line 1817)
  * __satfractunssisq:                     Fixed-point fractional library routines.
!                                                              (line 1814)
  * __satfractunssita:                     Fixed-point fractional library routines.
!                                                              (line 1819)
  * __satfractunssiuda:                    Fixed-point fractional library routines.
!                                                              (line 1830)
  * __satfractunssiudq:                    Fixed-point fractional library routines.
!                                                              (line 1825)
  * __satfractunssiuha:                    Fixed-point fractional library routines.
!                                                              (line 1827)
  * __satfractunssiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1822)
  * __satfractunssiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1820)
  * __satfractunssiusa:                    Fixed-point fractional library routines.
!                                                              (line 1829)
  * __satfractunssiusq:                    Fixed-point fractional library routines.
!                                                              (line 1823)
  * __satfractunssiuta:                    Fixed-point fractional library routines.
!                                                              (line 1832)
  * __satfractunstida:                     Fixed-point fractional library routines.
!                                                              (line 1870)
  * __satfractunstidq:                     Fixed-point fractional library routines.
!                                                              (line 1865)
  * __satfractunstiha:                     Fixed-point fractional library routines.
!                                                              (line 1867)
  * __satfractunstihq:                     Fixed-point fractional library routines.
!                                                              (line 1862)
  * __satfractunstiqq:                     Fixed-point fractional library routines.
!                                                              (line 1860)
  * __satfractunstisa:                     Fixed-point fractional library routines.
!                                                              (line 1869)
  * __satfractunstisq:                     Fixed-point fractional library routines.
!                                                              (line 1863)
  * __satfractunstita:                     Fixed-point fractional library routines.
!                                                              (line 1872)
  * __satfractunstiuda:                    Fixed-point fractional library routines.
!                                                              (line 1886)
  * __satfractunstiudq:                    Fixed-point fractional library routines.
!                                                              (line 1880)
  * __satfractunstiuha:                    Fixed-point fractional library routines.
!                                                              (line 1882)
  * __satfractunstiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1876)
  * __satfractunstiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1874)
  * __satfractunstiusa:                    Fixed-point fractional library routines.
!                                                              (line 1884)
  * __satfractunstiusq:                    Fixed-point fractional library routines.
!                                                              (line 1878)
  * __satfractunstiuta:                    Fixed-point fractional library routines.
!                                                              (line 1888)
  * __satfractuqqda:                       Fixed-point fractional library routines.
!                                                              (line 1207)
  * __satfractuqqdq:                       Fixed-point fractional library routines.
!                                                              (line 1202)
  * __satfractuqqha:                       Fixed-point fractional library routines.
!                                                              (line 1204)
  * __satfractuqqhq:                       Fixed-point fractional library routines.
!                                                              (line 1199)
  * __satfractuqqqq:                       Fixed-point fractional library routines.
!                                                              (line 1197)
  * __satfractuqqsa:                       Fixed-point fractional library routines.
!                                                              (line 1206)
  * __satfractuqqsq:                       Fixed-point fractional library routines.
!                                                              (line 1200)
  * __satfractuqqta:                       Fixed-point fractional library routines.
!                                                              (line 1209)
  * __satfractuqquda:                      Fixed-point fractional library routines.
!                                                              (line 1221)
  * __satfractuqqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1215)
  * __satfractuqquha:                      Fixed-point fractional library routines.
!                                                              (line 1217)
  * __satfractuqquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1211)
  * __satfractuqqusa:                      Fixed-point fractional library routines.
!                                                              (line 1219)
  * __satfractuqqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1213)
  * __satfractuqquta:                      Fixed-point fractional library routines.
!                                                              (line 1223)
  * __satfractusada:                       Fixed-point fractional library routines.
!                                                              (line 1334)
  * __satfractusadq:                       Fixed-point fractional library routines.
!                                                              (line 1331)
  * __satfractusaha:                       Fixed-point fractional library routines.
!                                                              (line 1332)
  * __satfractusahq:                       Fixed-point fractional library routines.
!                                                              (line 1329)
  * __satfractusaqq:                       Fixed-point fractional library routines.
!                                                              (line 1328)
  * __satfractusasa:                       Fixed-point fractional library routines.
!                                                              (line 1333)
  * __satfractusasq:                       Fixed-point fractional library routines.
!                                                              (line 1330)
  * __satfractusata:                       Fixed-point fractional library routines.
!                                                              (line 1335)
  * __satfractusauda2:                     Fixed-point fractional library routines.
!                                                              (line 1345)
  * __satfractusaudq:                      Fixed-point fractional library routines.
!                                                              (line 1341)
  * __satfractusauha2:                     Fixed-point fractional library routines.
!                                                              (line 1343)
  * __satfractusauhq:                      Fixed-point fractional library routines.
!                                                              (line 1338)
  * __satfractusauqq:                      Fixed-point fractional library routines.
!                                                              (line 1336)
  * __satfractusausq:                      Fixed-point fractional library routines.
!                                                              (line 1339)
  * __satfractusauta2:                     Fixed-point fractional library routines.
!                                                              (line 1347)
  * __satfractusqda:                       Fixed-point fractional library routines.
!                                                              (line 1255)
  * __satfractusqdq:                       Fixed-point fractional library routines.
!                                                              (line 1250)
  * __satfractusqha:                       Fixed-point fractional library routines.
!                                                              (line 1252)
  * __satfractusqhq:                       Fixed-point fractional library routines.
!                                                              (line 1248)
  * __satfractusqqq:                       Fixed-point fractional library routines.
!                                                              (line 1246)
  * __satfractusqsa:                       Fixed-point fractional library routines.
!                                                              (line 1254)
  * __satfractusqsq:                       Fixed-point fractional library routines.
!                                                              (line 1249)
  * __satfractusqta:                       Fixed-point fractional library routines.
!                                                              (line 1256)
  * __satfractusquda:                      Fixed-point fractional library routines.
!                                                              (line 1268)
  * __satfractusqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1262)
  * __satfractusquha:                      Fixed-point fractional library routines.
!                                                              (line 1264)
  * __satfractusquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1260)
  * __satfractusquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1258)
  * __satfractusqusa:                      Fixed-point fractional library routines.
!                                                              (line 1266)
  * __satfractusquta:                      Fixed-point fractional library routines.
!                                                              (line 1270)
  * __satfractutada:                       Fixed-point fractional library routines.
!                                                              (line 1385)
  * __satfractutadq:                       Fixed-point fractional library routines.
!                                                              (line 1380)
  * __satfractutaha:                       Fixed-point fractional library routines.
!                                                              (line 1382)
  * __satfractutahq:                       Fixed-point fractional library routines.
!                                                              (line 1377)
  * __satfractutaqq:                       Fixed-point fractional library routines.
!                                                              (line 1375)
  * __satfractutasa:                       Fixed-point fractional library routines.
!                                                              (line 1384)
  * __satfractutasq:                       Fixed-point fractional library routines.
!                                                              (line 1378)
  * __satfractutata:                       Fixed-point fractional library routines.
!                                                              (line 1387)
  * __satfractutauda2:                     Fixed-point fractional library routines.
!                                                              (line 1401)
  * __satfractutaudq:                      Fixed-point fractional library routines.
!                                                              (line 1395)
  * __satfractutauha2:                     Fixed-point fractional library routines.
!                                                              (line 1397)
  * __satfractutauhq:                      Fixed-point fractional library routines.
!                                                              (line 1391)
  * __satfractutauqq:                      Fixed-point fractional library routines.
!                                                              (line 1389)
  * __satfractutausa2:                     Fixed-point fractional library routines.
!                                                              (line 1399)
  * __satfractutausq:                      Fixed-point fractional library routines.
!                                                              (line 1393)
  * __splitstack_find:                     Miscellaneous routines.
                                                               (line   15)
  * __ssaddda3:                            Fixed-point fractional library routines.
!                                                              (line   74)
  * __ssadddq3:                            Fixed-point fractional library routines.
!                                                              (line   69)
  * __ssaddha3:                            Fixed-point fractional library routines.
!                                                              (line   71)
  * __ssaddhq3:                            Fixed-point fractional library routines.
!                                                              (line   67)
  * __ssaddqq3:                            Fixed-point fractional library routines.
!                                                              (line   65)
  * __ssaddsa3:                            Fixed-point fractional library routines.
!                                                              (line   73)
  * __ssaddsq3:                            Fixed-point fractional library routines.
!                                                              (line   68)
  * __ssaddta3:                            Fixed-point fractional library routines.
!                                                              (line   75)
  * __ssashlda3:                           Fixed-point fractional library routines.
!                                                              (line  409)
  * __ssashldq3:                           Fixed-point fractional library routines.
!                                                              (line  405)
  * __ssashlha3:                           Fixed-point fractional library routines.
!                                                              (line  407)
  * __ssashlhq3:                           Fixed-point fractional library routines.
!                                                              (line  403)
  * __ssashlsa3:                           Fixed-point fractional library routines.
!                                                              (line  408)
  * __ssashlsq3:                           Fixed-point fractional library routines.
!                                                              (line  404)
  * __ssashlta3:                           Fixed-point fractional library routines.
!                                                              (line  410)
  * __ssdivda3:                            Fixed-point fractional library routines.
!                                                              (line  268)
  * __ssdivdq3:                            Fixed-point fractional library routines.
!                                                              (line  263)
  * __ssdivha3:                            Fixed-point fractional library routines.
!                                                              (line  265)
  * __ssdivhq3:                            Fixed-point fractional library routines.
!                                                              (line  261)
  * __ssdivqq3:                            Fixed-point fractional library routines.
!                                                              (line  259)
  * __ssdivsa3:                            Fixed-point fractional library routines.
!                                                              (line  267)
  * __ssdivsq3:                            Fixed-point fractional library routines.
!                                                              (line  262)
  * __ssdivta3:                            Fixed-point fractional library routines.
!                                                              (line  269)
  * __ssmulda3:                            Fixed-point fractional library routines.
!                                                              (line  200)
  * __ssmuldq3:                            Fixed-point fractional library routines.
!                                                              (line  195)
  * __ssmulha3:                            Fixed-point fractional library routines.
!                                                              (line  197)
  * __ssmulhq3:                            Fixed-point fractional library routines.
!                                                              (line  193)
  * __ssmulqq3:                            Fixed-point fractional library routines.
!                                                              (line  191)
  * __ssmulsa3:                            Fixed-point fractional library routines.
!                                                              (line  199)
  * __ssmulsq3:                            Fixed-point fractional library routines.
!                                                              (line  194)
  * __ssmulta3:                            Fixed-point fractional library routines.
!                                                              (line  201)
  * __ssnegda2:                            Fixed-point fractional library routines.
!                                                              (line  323)
  * __ssnegdq2:                            Fixed-point fractional library routines.
!                                                              (line  320)
  * __ssnegha2:                            Fixed-point fractional library routines.
!                                                              (line  321)
  * __ssneghq2:                            Fixed-point fractional library routines.
!                                                              (line  318)
  * __ssnegqq2:                            Fixed-point fractional library routines.
!                                                              (line  317)
  * __ssnegsa2:                            Fixed-point fractional library routines.
!                                                              (line  322)
  * __ssnegsq2:                            Fixed-point fractional library routines.
!                                                              (line  319)
  * __ssnegta2:                            Fixed-point fractional library routines.
!                                                              (line  324)
  * __sssubda3:                            Fixed-point fractional library routines.
!                                                              (line  136)
  * __sssubdq3:                            Fixed-point fractional library routines.
!                                                              (line  131)
  * __sssubha3:                            Fixed-point fractional library routines.
!                                                              (line  133)
  * __sssubhq3:                            Fixed-point fractional library routines.
!                                                              (line  129)
  * __sssubqq3:                            Fixed-point fractional library routines.
!                                                              (line  127)
  * __sssubsa3:                            Fixed-point fractional library routines.
!                                                              (line  135)
  * __sssubsq3:                            Fixed-point fractional library routines.
!                                                              (line  130)
  * __sssubta3:                            Fixed-point fractional library routines.
!                                                              (line  137)
  * __subda3:                              Fixed-point fractional library routines.
!                                                              (line  114)
  * __subdf3:                              Soft float library routines.
                                                               (line   30)
  * __subdq3:                              Fixed-point fractional library routines.
!                                                              (line  101)
  * __subha3:                              Fixed-point fractional library routines.
!                                                              (line  111)
  * __subhq3:                              Fixed-point fractional library routines.
!                                                              (line   99)
  * __subqq3:                              Fixed-point fractional library routines.
!                                                              (line   97)
  * __subsa3:                              Fixed-point fractional library routines.
!                                                              (line  113)
  * __subsf3:                              Soft float library routines.
                                                               (line   29)
  * __subsq3:                              Fixed-point fractional library routines.
!                                                              (line  100)
  * __subta3:                              Fixed-point fractional library routines.
!                                                              (line  115)
  * __subtf3:                              Soft float library routines.
                                                               (line   31)
  * __subuda3:                             Fixed-point fractional library routines.
!                                                              (line  121)
  * __subudq3:                             Fixed-point fractional library routines.
!                                                              (line  109)
  * __subuha3:                             Fixed-point fractional library routines.
!                                                              (line  117)
  * __subuhq3:                             Fixed-point fractional library routines.
!                                                              (line  105)
  * __subuqq3:                             Fixed-point fractional library routines.
!                                                              (line  103)
  * __subusa3:                             Fixed-point fractional library routines.
!                                                              (line  119)
  * __subusq3:                             Fixed-point fractional library routines.
!                                                              (line  107)
  * __subuta3:                             Fixed-point fractional library routines.
!                                                              (line  123)
  * __subvdi3:                             Integer library routines.
                                                               (line  122)
  * __subvsi3:                             Integer library routines.
--- 51054,52056 ----
  * __powixf2:                             Soft float library routines.
                                                               (line  234)
  * __satfractdadq:                        Fixed-point fractional library routines.
!                                                              (line 1152)
  * __satfractdaha2:                       Fixed-point fractional library routines.
!                                                              (line 1153)
  * __satfractdahq:                        Fixed-point fractional library routines.
!                                                              (line 1150)
  * __satfractdaqq:                        Fixed-point fractional library routines.
!                                                              (line 1149)
  * __satfractdasa2:                       Fixed-point fractional library routines.
!                                                              (line 1154)
  * __satfractdasq:                        Fixed-point fractional library routines.
!                                                              (line 1151)
  * __satfractdata2:                       Fixed-point fractional library routines.
!                                                              (line 1155)
  * __satfractdauda:                       Fixed-point fractional library routines.
!                                                              (line 1165)
  * __satfractdaudq:                       Fixed-point fractional library routines.
!                                                              (line 1160)
  * __satfractdauha:                       Fixed-point fractional library routines.
!                                                              (line 1162)
  * __satfractdauhq:                       Fixed-point fractional library routines.
!                                                              (line 1158)
  * __satfractdauqq:                       Fixed-point fractional library routines.
!                                                              (line 1156)
  * __satfractdausa:                       Fixed-point fractional library routines.
!                                                              (line 1164)
  * __satfractdausq:                       Fixed-point fractional library routines.
!                                                              (line 1159)
  * __satfractdauta:                       Fixed-point fractional library routines.
!                                                              (line 1166)
  * __satfractdfda:                        Fixed-point fractional library routines.
!                                                              (line 1505)
  * __satfractdfdq:                        Fixed-point fractional library routines.
!                                                              (line 1502)
  * __satfractdfha:                        Fixed-point fractional library routines.
!                                                              (line 1503)
  * __satfractdfhq:                        Fixed-point fractional library routines.
!                                                              (line 1500)
  * __satfractdfqq:                        Fixed-point fractional library routines.
!                                                              (line 1499)
  * __satfractdfsa:                        Fixed-point fractional library routines.
!                                                              (line 1504)
  * __satfractdfsq:                        Fixed-point fractional library routines.
!                                                              (line 1501)
  * __satfractdfta:                        Fixed-point fractional library routines.
!                                                              (line 1506)
  * __satfractdfuda:                       Fixed-point fractional library routines.
!                                                              (line 1514)
  * __satfractdfudq:                       Fixed-point fractional library routines.
!                                                              (line 1510)
  * __satfractdfuha:                       Fixed-point fractional library routines.
!                                                              (line 1512)
  * __satfractdfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1508)
  * __satfractdfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1507)
  * __satfractdfusa:                       Fixed-point fractional library routines.
!                                                              (line 1513)
  * __satfractdfusq:                       Fixed-point fractional library routines.
!                                                              (line 1509)
  * __satfractdfuta:                       Fixed-point fractional library routines.
!                                                              (line 1515)
  * __satfractdida:                        Fixed-point fractional library routines.
!                                                              (line 1455)
  * __satfractdidq:                        Fixed-point fractional library routines.
!                                                              (line 1452)
  * __satfractdiha:                        Fixed-point fractional library routines.
!                                                              (line 1453)
  * __satfractdihq:                        Fixed-point fractional library routines.
!                                                              (line 1450)
  * __satfractdiqq:                        Fixed-point fractional library routines.
!                                                              (line 1449)
  * __satfractdisa:                        Fixed-point fractional library routines.
!                                                              (line 1454)
  * __satfractdisq:                        Fixed-point fractional library routines.
!                                                              (line 1451)
  * __satfractdita:                        Fixed-point fractional library routines.
!                                                              (line 1456)
  * __satfractdiuda:                       Fixed-point fractional library routines.
!                                                              (line 1463)
  * __satfractdiudq:                       Fixed-point fractional library routines.
!                                                              (line 1460)
  * __satfractdiuha:                       Fixed-point fractional library routines.
!                                                              (line 1461)
  * __satfractdiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1458)
  * __satfractdiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1457)
  * __satfractdiusa:                       Fixed-point fractional library routines.
!                                                              (line 1462)
  * __satfractdiusq:                       Fixed-point fractional library routines.
!                                                              (line 1459)
  * __satfractdiuta:                       Fixed-point fractional library routines.
!                                                              (line 1464)
  * __satfractdqda:                        Fixed-point fractional library routines.
!                                                              (line 1097)
  * __satfractdqha:                        Fixed-point fractional library routines.
!                                                              (line 1095)
  * __satfractdqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1093)
  * __satfractdqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1092)
  * __satfractdqsa:                        Fixed-point fractional library routines.
!                                                              (line 1096)
  * __satfractdqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1094)
  * __satfractdqta:                        Fixed-point fractional library routines.
!                                                              (line 1098)
  * __satfractdquda:                       Fixed-point fractional library routines.
!                                                              (line 1109)
  * __satfractdqudq:                       Fixed-point fractional library routines.
!                                                              (line 1104)
  * __satfractdquha:                       Fixed-point fractional library routines.
!                                                              (line 1106)
  * __satfractdquhq:                       Fixed-point fractional library routines.
!                                                              (line 1101)
  * __satfractdquqq:                       Fixed-point fractional library routines.
!                                                              (line 1099)
  * __satfractdqusa:                       Fixed-point fractional library routines.
!                                                              (line 1108)
  * __satfractdqusq:                       Fixed-point fractional library routines.
!                                                              (line 1102)
  * __satfractdquta:                       Fixed-point fractional library routines.
!                                                              (line 1111)
  * __satfracthada2:                       Fixed-point fractional library routines.
!                                                              (line 1118)
  * __satfracthadq:                        Fixed-point fractional library routines.
!                                                              (line 1116)
  * __satfracthahq:                        Fixed-point fractional library routines.
!                                                              (line 1114)
  * __satfracthaqq:                        Fixed-point fractional library routines.
!                                                              (line 1113)
  * __satfracthasa2:                       Fixed-point fractional library routines.
!                                                              (line 1117)
  * __satfracthasq:                        Fixed-point fractional library routines.
!                                                              (line 1115)
  * __satfracthata2:                       Fixed-point fractional library routines.
!                                                              (line 1119)
  * __satfracthauda:                       Fixed-point fractional library routines.
!                                                              (line 1130)
  * __satfracthaudq:                       Fixed-point fractional library routines.
!                                                              (line 1125)
  * __satfracthauha:                       Fixed-point fractional library routines.
!                                                              (line 1127)
  * __satfracthauhq:                       Fixed-point fractional library routines.
!                                                              (line 1122)
  * __satfracthauqq:                       Fixed-point fractional library routines.
!                                                              (line 1120)
  * __satfracthausa:                       Fixed-point fractional library routines.
!                                                              (line 1129)
  * __satfracthausq:                       Fixed-point fractional library routines.
!                                                              (line 1123)
  * __satfracthauta:                       Fixed-point fractional library routines.
!                                                              (line 1132)
  * __satfracthida:                        Fixed-point fractional library routines.
!                                                              (line 1423)
  * __satfracthidq:                        Fixed-point fractional library routines.
!                                                              (line 1420)
  * __satfracthiha:                        Fixed-point fractional library routines.
!                                                              (line 1421)
  * __satfracthihq:                        Fixed-point fractional library routines.
!                                                              (line 1418)
  * __satfracthiqq:                        Fixed-point fractional library routines.
!                                                              (line 1417)
  * __satfracthisa:                        Fixed-point fractional library routines.
!                                                              (line 1422)
  * __satfracthisq:                        Fixed-point fractional library routines.
!                                                              (line 1419)
  * __satfracthita:                        Fixed-point fractional library routines.
!                                                              (line 1424)
  * __satfracthiuda:                       Fixed-point fractional library routines.
!                                                              (line 1431)
  * __satfracthiudq:                       Fixed-point fractional library routines.
!                                                              (line 1428)
  * __satfracthiuha:                       Fixed-point fractional library routines.
!                                                              (line 1429)
  * __satfracthiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1426)
  * __satfracthiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1425)
  * __satfracthiusa:                       Fixed-point fractional library routines.
!                                                              (line 1430)
  * __satfracthiusq:                       Fixed-point fractional library routines.
!                                                              (line 1427)
  * __satfracthiuta:                       Fixed-point fractional library routines.
!                                                              (line 1432)
  * __satfracthqda:                        Fixed-point fractional library routines.
!                                                              (line 1063)
  * __satfracthqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1060)
  * __satfracthqha:                        Fixed-point fractional library routines.
!                                                              (line 1061)
  * __satfracthqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1058)
  * __satfracthqsa:                        Fixed-point fractional library routines.
!                                                              (line 1062)
  * __satfracthqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1059)
  * __satfracthqta:                        Fixed-point fractional library routines.
!                                                              (line 1064)
  * __satfracthquda:                       Fixed-point fractional library routines.
!                                                              (line 1071)
  * __satfracthqudq:                       Fixed-point fractional library routines.
!                                                              (line 1068)
  * __satfracthquha:                       Fixed-point fractional library routines.
!                                                              (line 1069)
  * __satfracthquhq:                       Fixed-point fractional library routines.
!                                                              (line 1066)
  * __satfracthquqq:                       Fixed-point fractional library routines.
!                                                              (line 1065)
  * __satfracthqusa:                       Fixed-point fractional library routines.
!                                                              (line 1070)
  * __satfracthqusq:                       Fixed-point fractional library routines.
!                                                              (line 1067)
  * __satfracthquta:                       Fixed-point fractional library routines.
!                                                              (line 1072)
  * __satfractqida:                        Fixed-point fractional library routines.
!                                                              (line 1401)
  * __satfractqidq:                        Fixed-point fractional library routines.
!                                                              (line 1398)
  * __satfractqiha:                        Fixed-point fractional library routines.
!                                                              (line 1399)
  * __satfractqihq:                        Fixed-point fractional library routines.
!                                                              (line 1396)
  * __satfractqiqq:                        Fixed-point fractional library routines.
!                                                              (line 1395)
  * __satfractqisa:                        Fixed-point fractional library routines.
!                                                              (line 1400)
  * __satfractqisq:                        Fixed-point fractional library routines.
!                                                              (line 1397)
  * __satfractqita:                        Fixed-point fractional library routines.
!                                                              (line 1402)
  * __satfractqiuda:                       Fixed-point fractional library routines.
!                                                              (line 1413)
  * __satfractqiudq:                       Fixed-point fractional library routines.
!                                                              (line 1408)
  * __satfractqiuha:                       Fixed-point fractional library routines.
!                                                              (line 1410)
  * __satfractqiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1405)
  * __satfractqiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1403)
  * __satfractqiusa:                       Fixed-point fractional library routines.
!                                                              (line 1412)
  * __satfractqiusq:                       Fixed-point fractional library routines.
!                                                              (line 1406)
  * __satfractqiuta:                       Fixed-point fractional library routines.
!                                                              (line 1415)
  * __satfractqqda:                        Fixed-point fractional library routines.
!                                                              (line 1042)
  * __satfractqqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1039)
  * __satfractqqha:                        Fixed-point fractional library routines.
!                                                              (line 1040)
  * __satfractqqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1037)
  * __satfractqqsa:                        Fixed-point fractional library routines.
!                                                              (line 1041)
  * __satfractqqsq2:                       Fixed-point fractional library routines.
!                                                              (line 1038)
  * __satfractqqta:                        Fixed-point fractional library routines.
!                                                              (line 1043)
  * __satfractqquda:                       Fixed-point fractional library routines.
!                                                              (line 1054)
  * __satfractqqudq:                       Fixed-point fractional library routines.
!                                                              (line 1049)
  * __satfractqquha:                       Fixed-point fractional library routines.
!                                                              (line 1051)
  * __satfractqquhq:                       Fixed-point fractional library routines.
!                                                              (line 1046)
  * __satfractqquqq:                       Fixed-point fractional library routines.
!                                                              (line 1044)
  * __satfractqqusa:                       Fixed-point fractional library routines.
!                                                              (line 1053)
  * __satfractqqusq:                       Fixed-point fractional library routines.
!                                                              (line 1047)
  * __satfractqquta:                       Fixed-point fractional library routines.
!                                                              (line 1056)
  * __satfractsada2:                       Fixed-point fractional library routines.
!                                                              (line 1139)
  * __satfractsadq:                        Fixed-point fractional library routines.
!                                                              (line 1137)
  * __satfractsaha2:                       Fixed-point fractional library routines.
!                                                              (line 1138)
  * __satfractsahq:                        Fixed-point fractional library routines.
!                                                              (line 1135)
  * __satfractsaqq:                        Fixed-point fractional library routines.
!                                                              (line 1134)
  * __satfractsasq:                        Fixed-point fractional library routines.
!                                                              (line 1136)
  * __satfractsata2:                       Fixed-point fractional library routines.
!                                                              (line 1140)
  * __satfractsauda:                       Fixed-point fractional library routines.
!                                                              (line 1147)
  * __satfractsaudq:                       Fixed-point fractional library routines.
!                                                              (line 1144)
  * __satfractsauha:                       Fixed-point fractional library routines.
!                                                              (line 1145)
  * __satfractsauhq:                       Fixed-point fractional library routines.
!                                                              (line 1142)
  * __satfractsauqq:                       Fixed-point fractional library routines.
!                                                              (line 1141)
  * __satfractsausa:                       Fixed-point fractional library routines.
!                                                              (line 1146)
  * __satfractsausq:                       Fixed-point fractional library routines.
!                                                              (line 1143)
  * __satfractsauta:                       Fixed-point fractional library routines.
!                                                              (line 1148)
  * __satfractsfda:                        Fixed-point fractional library routines.
!                                                              (line 1489)
  * __satfractsfdq:                        Fixed-point fractional library routines.
!                                                              (line 1486)
  * __satfractsfha:                        Fixed-point fractional library routines.
!                                                              (line 1487)
  * __satfractsfhq:                        Fixed-point fractional library routines.
!                                                              (line 1484)
  * __satfractsfqq:                        Fixed-point fractional library routines.
!                                                              (line 1483)
  * __satfractsfsa:                        Fixed-point fractional library routines.
!                                                              (line 1488)
  * __satfractsfsq:                        Fixed-point fractional library routines.
!                                                              (line 1485)
  * __satfractsfta:                        Fixed-point fractional library routines.
!                                                              (line 1490)
  * __satfractsfuda:                       Fixed-point fractional library routines.
!                                                              (line 1497)
  * __satfractsfudq:                       Fixed-point fractional library routines.
!                                                              (line 1494)
  * __satfractsfuha:                       Fixed-point fractional library routines.
!                                                              (line 1495)
  * __satfractsfuhq:                       Fixed-point fractional library routines.
!                                                              (line 1492)
  * __satfractsfuqq:                       Fixed-point fractional library routines.
!                                                              (line 1491)
  * __satfractsfusa:                       Fixed-point fractional library routines.
!                                                              (line 1496)
  * __satfractsfusq:                       Fixed-point fractional library routines.
!                                                              (line 1493)
  * __satfractsfuta:                       Fixed-point fractional library routines.
!                                                              (line 1498)
  * __satfractsida:                        Fixed-point fractional library routines.
!                                                              (line 1439)
  * __satfractsidq:                        Fixed-point fractional library routines.
!                                                              (line 1436)
  * __satfractsiha:                        Fixed-point fractional library routines.
!                                                              (line 1437)
  * __satfractsihq:                        Fixed-point fractional library routines.
!                                                              (line 1434)
  * __satfractsiqq:                        Fixed-point fractional library routines.
!                                                              (line 1433)
  * __satfractsisa:                        Fixed-point fractional library routines.
!                                                              (line 1438)
  * __satfractsisq:                        Fixed-point fractional library routines.
!                                                              (line 1435)
  * __satfractsita:                        Fixed-point fractional library routines.
!                                                              (line 1440)
  * __satfractsiuda:                       Fixed-point fractional library routines.
!                                                              (line 1447)
  * __satfractsiudq:                       Fixed-point fractional library routines.
!                                                              (line 1444)
  * __satfractsiuha:                       Fixed-point fractional library routines.
!                                                              (line 1445)
  * __satfractsiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1442)
  * __satfractsiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1441)
  * __satfractsiusa:                       Fixed-point fractional library routines.
!                                                              (line 1446)
  * __satfractsiusq:                       Fixed-point fractional library routines.
!                                                              (line 1443)
  * __satfractsiuta:                       Fixed-point fractional library routines.
!                                                              (line 1448)
  * __satfractsqda:                        Fixed-point fractional library routines.
!                                                              (line 1078)
  * __satfractsqdq2:                       Fixed-point fractional library routines.
!                                                              (line 1075)
  * __satfractsqha:                        Fixed-point fractional library routines.
!                                                              (line 1076)
  * __satfractsqhq2:                       Fixed-point fractional library routines.
!                                                              (line 1074)
  * __satfractsqqq2:                       Fixed-point fractional library routines.
!                                                              (line 1073)
  * __satfractsqsa:                        Fixed-point fractional library routines.
!                                                              (line 1077)
  * __satfractsqta:                        Fixed-point fractional library routines.
!                                                              (line 1079)
  * __satfractsquda:                       Fixed-point fractional library routines.
!                                                              (line 1089)
  * __satfractsqudq:                       Fixed-point fractional library routines.
!                                                              (line 1084)
  * __satfractsquha:                       Fixed-point fractional library routines.
!                                                              (line 1086)
  * __satfractsquhq:                       Fixed-point fractional library routines.
!                                                              (line 1082)
  * __satfractsquqq:                       Fixed-point fractional library routines.
!                                                              (line 1080)
  * __satfractsqusa:                       Fixed-point fractional library routines.
!                                                              (line 1088)
  * __satfractsqusq:                       Fixed-point fractional library routines.
!                                                              (line 1083)
  * __satfractsquta:                       Fixed-point fractional library routines.
!                                                              (line 1090)
  * __satfracttada2:                       Fixed-point fractional library routines.
!                                                              (line 1174)
  * __satfracttadq:                        Fixed-point fractional library routines.
!                                                              (line 1171)
  * __satfracttaha2:                       Fixed-point fractional library routines.
!                                                              (line 1172)
  * __satfracttahq:                        Fixed-point fractional library routines.
!                                                              (line 1169)
  * __satfracttaqq:                        Fixed-point fractional library routines.
!                                                              (line 1168)
  * __satfracttasa2:                       Fixed-point fractional library routines.
!                                                              (line 1173)
  * __satfracttasq:                        Fixed-point fractional library routines.
!                                                              (line 1170)
  * __satfracttauda:                       Fixed-point fractional library routines.
!                                                              (line 1185)
  * __satfracttaudq:                       Fixed-point fractional library routines.
!                                                              (line 1180)
  * __satfracttauha:                       Fixed-point fractional library routines.
!                                                              (line 1182)
  * __satfracttauhq:                       Fixed-point fractional library routines.
!                                                              (line 1177)
  * __satfracttauqq:                       Fixed-point fractional library routines.
!                                                              (line 1175)
  * __satfracttausa:                       Fixed-point fractional library routines.
!                                                              (line 1184)
  * __satfracttausq:                       Fixed-point fractional library routines.
!                                                              (line 1178)
  * __satfracttauta:                       Fixed-point fractional library routines.
!                                                              (line 1187)
  * __satfracttida:                        Fixed-point fractional library routines.
!                                                              (line 1471)
  * __satfracttidq:                        Fixed-point fractional library routines.
!                                                              (line 1468)
  * __satfracttiha:                        Fixed-point fractional library routines.
!                                                              (line 1469)
  * __satfracttihq:                        Fixed-point fractional library routines.
!                                                              (line 1466)
  * __satfracttiqq:                        Fixed-point fractional library routines.
!                                                              (line 1465)
  * __satfracttisa:                        Fixed-point fractional library routines.
!                                                              (line 1470)
  * __satfracttisq:                        Fixed-point fractional library routines.
!                                                              (line 1467)
  * __satfracttita:                        Fixed-point fractional library routines.
!                                                              (line 1472)
  * __satfracttiuda:                       Fixed-point fractional library routines.
!                                                              (line 1480)
  * __satfracttiudq:                       Fixed-point fractional library routines.
!                                                              (line 1476)
  * __satfracttiuha:                       Fixed-point fractional library routines.
!                                                              (line 1478)
  * __satfracttiuhq:                       Fixed-point fractional library routines.
!                                                              (line 1474)
  * __satfracttiuqq:                       Fixed-point fractional library routines.
!                                                              (line 1473)
  * __satfracttiusa:                       Fixed-point fractional library routines.
!                                                              (line 1479)
  * __satfracttiusq:                       Fixed-point fractional library routines.
!                                                              (line 1475)
  * __satfracttiuta:                       Fixed-point fractional library routines.
!                                                              (line 1481)
  * __satfractudada:                       Fixed-point fractional library routines.
!                                                              (line 1350)
  * __satfractudadq:                       Fixed-point fractional library routines.
!                                                              (line 1345)
  * __satfractudaha:                       Fixed-point fractional library routines.
!                                                              (line 1347)
  * __satfractudahq:                       Fixed-point fractional library routines.
!                                                              (line 1343)
  * __satfractudaqq:                       Fixed-point fractional library routines.
!                                                              (line 1341)
  * __satfractudasa:                       Fixed-point fractional library routines.
!                                                              (line 1349)
  * __satfractudasq:                       Fixed-point fractional library routines.
!                                                              (line 1344)
  * __satfractudata:                       Fixed-point fractional library routines.
!                                                              (line 1351)
  * __satfractudaudq:                      Fixed-point fractional library routines.
!                                                              (line 1359)
  * __satfractudauha2:                     Fixed-point fractional library routines.
!                                                              (line 1361)
  * __satfractudauhq:                      Fixed-point fractional library routines.
!                                                              (line 1355)
  * __satfractudauqq:                      Fixed-point fractional library routines.
!                                                              (line 1353)
  * __satfractudausa2:                     Fixed-point fractional library routines.
!                                                              (line 1363)
  * __satfractudausq:                      Fixed-point fractional library routines.
!                                                              (line 1357)
  * __satfractudauta2:                     Fixed-point fractional library routines.
!                                                              (line 1365)
  * __satfractudqda:                       Fixed-point fractional library routines.
!                                                              (line 1274)
  * __satfractudqdq:                       Fixed-point fractional library routines.
!                                                              (line 1269)
  * __satfractudqha:                       Fixed-point fractional library routines.
!                                                              (line 1271)
  * __satfractudqhq:                       Fixed-point fractional library routines.
!                                                              (line 1266)
  * __satfractudqqq:                       Fixed-point fractional library routines.
!                                                              (line 1264)
  * __satfractudqsa:                       Fixed-point fractional library routines.
!                                                              (line 1273)
  * __satfractudqsq:                       Fixed-point fractional library routines.
!                                                              (line 1267)
  * __satfractudqta:                       Fixed-point fractional library routines.
!                                                              (line 1276)
  * __satfractudquda:                      Fixed-point fractional library routines.
!                                                              (line 1288)
  * __satfractudquha:                      Fixed-point fractional library routines.
!                                                              (line 1284)
  * __satfractudquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1280)
  * __satfractudquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1278)
  * __satfractudqusa:                      Fixed-point fractional library routines.
!                                                              (line 1286)
  * __satfractudqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1282)
  * __satfractudquta:                      Fixed-point fractional library routines.
!                                                              (line 1290)
  * __satfractuhada:                       Fixed-point fractional library routines.
!                                                              (line 1302)
  * __satfractuhadq:                       Fixed-point fractional library routines.
!                                                              (line 1297)
  * __satfractuhaha:                       Fixed-point fractional library routines.
!                                                              (line 1299)
  * __satfractuhahq:                       Fixed-point fractional library routines.
!                                                              (line 1294)
  * __satfractuhaqq:                       Fixed-point fractional library routines.
!                                                              (line 1292)
  * __satfractuhasa:                       Fixed-point fractional library routines.
!                                                              (line 1301)
  * __satfractuhasq:                       Fixed-point fractional library routines.
!                                                              (line 1295)
  * __satfractuhata:                       Fixed-point fractional library routines.
!                                                              (line 1304)
  * __satfractuhauda2:                     Fixed-point fractional library routines.
!                                                              (line 1316)
  * __satfractuhaudq:                      Fixed-point fractional library routines.
!                                                              (line 1312)
  * __satfractuhauhq:                      Fixed-point fractional library routines.
!                                                              (line 1308)
  * __satfractuhauqq:                      Fixed-point fractional library routines.
!                                                              (line 1306)
  * __satfractuhausa2:                     Fixed-point fractional library routines.
!                                                              (line 1314)
  * __satfractuhausq:                      Fixed-point fractional library routines.
!                                                              (line 1310)
  * __satfractuhauta2:                     Fixed-point fractional library routines.
!                                                              (line 1318)
  * __satfractuhqda:                       Fixed-point fractional library routines.
!                                                              (line 1223)
  * __satfractuhqdq:                       Fixed-point fractional library routines.
!                                                              (line 1220)
  * __satfractuhqha:                       Fixed-point fractional library routines.
!                                                              (line 1221)
  * __satfractuhqhq:                       Fixed-point fractional library routines.
!                                                              (line 1218)
  * __satfractuhqqq:                       Fixed-point fractional library routines.
!                                                              (line 1217)
  * __satfractuhqsa:                       Fixed-point fractional library routines.
!                                                              (line 1222)
  * __satfractuhqsq:                       Fixed-point fractional library routines.
!                                                              (line 1219)
  * __satfractuhqta:                       Fixed-point fractional library routines.
!                                                              (line 1224)
  * __satfractuhquda:                      Fixed-point fractional library routines.
!                                                              (line 1234)
  * __satfractuhqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1229)
  * __satfractuhquha:                      Fixed-point fractional library routines.
!                                                              (line 1231)
  * __satfractuhquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1225)
  * __satfractuhqusa:                      Fixed-point fractional library routines.
!                                                              (line 1233)
  * __satfractuhqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1227)
  * __satfractuhquta:                      Fixed-point fractional library routines.
!                                                              (line 1236)
  * __satfractunsdida:                     Fixed-point fractional library routines.
!                                                              (line 1833)
  * __satfractunsdidq:                     Fixed-point fractional library routines.
!                                                              (line 1829)
  * __satfractunsdiha:                     Fixed-point fractional library routines.
!                                                              (line 1831)
  * __satfractunsdihq:                     Fixed-point fractional library routines.
!                                                              (line 1827)
  * __satfractunsdiqq:                     Fixed-point fractional library routines.
!                                                              (line 1826)
  * __satfractunsdisa:                     Fixed-point fractional library routines.
!                                                              (line 1832)
  * __satfractunsdisq:                     Fixed-point fractional library routines.
!                                                              (line 1828)
  * __satfractunsdita:                     Fixed-point fractional library routines.
!                                                              (line 1834)
  * __satfractunsdiuda:                    Fixed-point fractional library routines.
!                                                              (line 1848)
  * __satfractunsdiudq:                    Fixed-point fractional library routines.
!                                                              (line 1842)
  * __satfractunsdiuha:                    Fixed-point fractional library routines.
!                                                              (line 1844)
  * __satfractunsdiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1838)
  * __satfractunsdiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1836)
  * __satfractunsdiusa:                    Fixed-point fractional library routines.
!                                                              (line 1846)
  * __satfractunsdiusq:                    Fixed-point fractional library routines.
!                                                              (line 1840)
  * __satfractunsdiuta:                    Fixed-point fractional library routines.
!                                                              (line 1850)
  * __satfractunshida:                     Fixed-point fractional library routines.
!                                                              (line 1785)
  * __satfractunshidq:                     Fixed-point fractional library routines.
!                                                              (line 1781)
  * __satfractunshiha:                     Fixed-point fractional library routines.
!                                                              (line 1783)
  * __satfractunshihq:                     Fixed-point fractional library routines.
!                                                              (line 1779)
  * __satfractunshiqq:                     Fixed-point fractional library routines.
!                                                              (line 1778)
  * __satfractunshisa:                     Fixed-point fractional library routines.
!                                                              (line 1784)
  * __satfractunshisq:                     Fixed-point fractional library routines.
!                                                              (line 1780)
  * __satfractunshita:                     Fixed-point fractional library routines.
!                                                              (line 1786)
  * __satfractunshiuda:                    Fixed-point fractional library routines.
!                                                              (line 1800)
  * __satfractunshiudq:                    Fixed-point fractional library routines.
!                                                              (line 1794)
  * __satfractunshiuha:                    Fixed-point fractional library routines.
!                                                              (line 1796)
  * __satfractunshiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1790)
  * __satfractunshiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1788)
  * __satfractunshiusa:                    Fixed-point fractional library routines.
!                                                              (line 1798)
  * __satfractunshiusq:                    Fixed-point fractional library routines.
!                                                              (line 1792)
  * __satfractunshiuta:                    Fixed-point fractional library routines.
!                                                              (line 1802)
  * __satfractunsqida:                     Fixed-point fractional library routines.
!                                                              (line 1759)
  * __satfractunsqidq:                     Fixed-point fractional library routines.
!                                                              (line 1755)
  * __satfractunsqiha:                     Fixed-point fractional library routines.
!                                                              (line 1757)
  * __satfractunsqihq:                     Fixed-point fractional library routines.
!                                                              (line 1753)
  * __satfractunsqiqq:                     Fixed-point fractional library routines.
!                                                              (line 1752)
  * __satfractunsqisa:                     Fixed-point fractional library routines.
!                                                              (line 1758)
  * __satfractunsqisq:                     Fixed-point fractional library routines.
!                                                              (line 1754)
  * __satfractunsqita:                     Fixed-point fractional library routines.
!                                                              (line 1760)
  * __satfractunsqiuda:                    Fixed-point fractional library routines.
!                                                              (line 1774)
  * __satfractunsqiudq:                    Fixed-point fractional library routines.
!                                                              (line 1768)
  * __satfractunsqiuha:                    Fixed-point fractional library routines.
!                                                              (line 1770)
  * __satfractunsqiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1764)
  * __satfractunsqiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1762)
  * __satfractunsqiusa:                    Fixed-point fractional library routines.
!                                                              (line 1772)
  * __satfractunsqiusq:                    Fixed-point fractional library routines.
!                                                              (line 1766)
  * __satfractunsqiuta:                    Fixed-point fractional library routines.
!                                                              (line 1776)
  * __satfractunssida:                     Fixed-point fractional library routines.
!                                                              (line 1810)
  * __satfractunssidq:                     Fixed-point fractional library routines.
!                                                              (line 1807)
  * __satfractunssiha:                     Fixed-point fractional library routines.
!                                                              (line 1808)
  * __satfractunssihq:                     Fixed-point fractional library routines.
!                                                              (line 1805)
  * __satfractunssiqq:                     Fixed-point fractional library routines.
!                                                              (line 1804)
  * __satfractunssisa:                     Fixed-point fractional library routines.
!                                                              (line 1809)
  * __satfractunssisq:                     Fixed-point fractional library routines.
!                                                              (line 1806)
  * __satfractunssita:                     Fixed-point fractional library routines.
!                                                              (line 1811)
  * __satfractunssiuda:                    Fixed-point fractional library routines.
!                                                              (line 1822)
  * __satfractunssiudq:                    Fixed-point fractional library routines.
!                                                              (line 1817)
  * __satfractunssiuha:                    Fixed-point fractional library routines.
!                                                              (line 1819)
  * __satfractunssiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1814)
  * __satfractunssiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1812)
  * __satfractunssiusa:                    Fixed-point fractional library routines.
!                                                              (line 1821)
  * __satfractunssiusq:                    Fixed-point fractional library routines.
!                                                              (line 1815)
  * __satfractunssiuta:                    Fixed-point fractional library routines.
!                                                              (line 1824)
  * __satfractunstida:                     Fixed-point fractional library routines.
!                                                              (line 1862)
  * __satfractunstidq:                     Fixed-point fractional library routines.
!                                                              (line 1857)
  * __satfractunstiha:                     Fixed-point fractional library routines.
!                                                              (line 1859)
  * __satfractunstihq:                     Fixed-point fractional library routines.
!                                                              (line 1854)
  * __satfractunstiqq:                     Fixed-point fractional library routines.
!                                                              (line 1852)
  * __satfractunstisa:                     Fixed-point fractional library routines.
!                                                              (line 1861)
  * __satfractunstisq:                     Fixed-point fractional library routines.
!                                                              (line 1855)
  * __satfractunstita:                     Fixed-point fractional library routines.
!                                                              (line 1864)
  * __satfractunstiuda:                    Fixed-point fractional library routines.
!                                                              (line 1878)
  * __satfractunstiudq:                    Fixed-point fractional library routines.
!                                                              (line 1872)
  * __satfractunstiuha:                    Fixed-point fractional library routines.
!                                                              (line 1874)
  * __satfractunstiuhq:                    Fixed-point fractional library routines.
!                                                              (line 1868)
  * __satfractunstiuqq:                    Fixed-point fractional library routines.
!                                                              (line 1866)
  * __satfractunstiusa:                    Fixed-point fractional library routines.
!                                                              (line 1876)
  * __satfractunstiusq:                    Fixed-point fractional library routines.
!                                                              (line 1870)
  * __satfractunstiuta:                    Fixed-point fractional library routines.
!                                                              (line 1880)
  * __satfractuqqda:                       Fixed-point fractional library routines.
!                                                              (line 1199)
  * __satfractuqqdq:                       Fixed-point fractional library routines.
!                                                              (line 1194)
  * __satfractuqqha:                       Fixed-point fractional library routines.
!                                                              (line 1196)
  * __satfractuqqhq:                       Fixed-point fractional library routines.
!                                                              (line 1191)
  * __satfractuqqqq:                       Fixed-point fractional library routines.
!                                                              (line 1189)
  * __satfractuqqsa:                       Fixed-point fractional library routines.
!                                                              (line 1198)
  * __satfractuqqsq:                       Fixed-point fractional library routines.
!                                                              (line 1192)
  * __satfractuqqta:                       Fixed-point fractional library routines.
!                                                              (line 1201)
  * __satfractuqquda:                      Fixed-point fractional library routines.
!                                                              (line 1213)
  * __satfractuqqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1207)
  * __satfractuqquha:                      Fixed-point fractional library routines.
!                                                              (line 1209)
  * __satfractuqquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1203)
  * __satfractuqqusa:                      Fixed-point fractional library routines.
!                                                              (line 1211)
  * __satfractuqqusq2:                     Fixed-point fractional library routines.
!                                                              (line 1205)
  * __satfractuqquta:                      Fixed-point fractional library routines.
!                                                              (line 1215)
  * __satfractusada:                       Fixed-point fractional library routines.
!                                                              (line 1326)
  * __satfractusadq:                       Fixed-point fractional library routines.
!                                                              (line 1323)
  * __satfractusaha:                       Fixed-point fractional library routines.
!                                                              (line 1324)
  * __satfractusahq:                       Fixed-point fractional library routines.
!                                                              (line 1321)
  * __satfractusaqq:                       Fixed-point fractional library routines.
!                                                              (line 1320)
  * __satfractusasa:                       Fixed-point fractional library routines.
!                                                              (line 1325)
  * __satfractusasq:                       Fixed-point fractional library routines.
!                                                              (line 1322)
  * __satfractusata:                       Fixed-point fractional library routines.
!                                                              (line 1327)
  * __satfractusauda2:                     Fixed-point fractional library routines.
!                                                              (line 1337)
  * __satfractusaudq:                      Fixed-point fractional library routines.
!                                                              (line 1333)
  * __satfractusauha2:                     Fixed-point fractional library routines.
!                                                              (line 1335)
  * __satfractusauhq:                      Fixed-point fractional library routines.
!                                                              (line 1330)
  * __satfractusauqq:                      Fixed-point fractional library routines.
!                                                              (line 1328)
  * __satfractusausq:                      Fixed-point fractional library routines.
!                                                              (line 1331)
  * __satfractusauta2:                     Fixed-point fractional library routines.
!                                                              (line 1339)
  * __satfractusqda:                       Fixed-point fractional library routines.
!                                                              (line 1247)
  * __satfractusqdq:                       Fixed-point fractional library routines.
!                                                              (line 1242)
  * __satfractusqha:                       Fixed-point fractional library routines.
!                                                              (line 1244)
  * __satfractusqhq:                       Fixed-point fractional library routines.
!                                                              (line 1240)
  * __satfractusqqq:                       Fixed-point fractional library routines.
!                                                              (line 1238)
  * __satfractusqsa:                       Fixed-point fractional library routines.
!                                                              (line 1246)
  * __satfractusqsq:                       Fixed-point fractional library routines.
!                                                              (line 1241)
  * __satfractusqta:                       Fixed-point fractional library routines.
!                                                              (line 1248)
  * __satfractusquda:                      Fixed-point fractional library routines.
!                                                              (line 1260)
  * __satfractusqudq2:                     Fixed-point fractional library routines.
!                                                              (line 1254)
  * __satfractusquha:                      Fixed-point fractional library routines.
!                                                              (line 1256)
  * __satfractusquhq2:                     Fixed-point fractional library routines.
!                                                              (line 1252)
  * __satfractusquqq2:                     Fixed-point fractional library routines.
!                                                              (line 1250)
  * __satfractusqusa:                      Fixed-point fractional library routines.
!                                                              (line 1258)
  * __satfractusquta:                      Fixed-point fractional library routines.
!                                                              (line 1262)
  * __satfractutada:                       Fixed-point fractional library routines.
!                                                              (line 1377)
  * __satfractutadq:                       Fixed-point fractional library routines.
!                                                              (line 1372)
  * __satfractutaha:                       Fixed-point fractional library routines.
!                                                              (line 1374)
  * __satfractutahq:                       Fixed-point fractional library routines.
!                                                              (line 1369)
  * __satfractutaqq:                       Fixed-point fractional library routines.
!                                                              (line 1367)
  * __satfractutasa:                       Fixed-point fractional library routines.
!                                                              (line 1376)
  * __satfractutasq:                       Fixed-point fractional library routines.
!                                                              (line 1370)
  * __satfractutata:                       Fixed-point fractional library routines.
!                                                              (line 1379)
  * __satfractutauda2:                     Fixed-point fractional library routines.
!                                                              (line 1393)
  * __satfractutaudq:                      Fixed-point fractional library routines.
!                                                              (line 1387)
  * __satfractutauha2:                     Fixed-point fractional library routines.
!                                                              (line 1389)
  * __satfractutauhq:                      Fixed-point fractional library routines.
!                                                              (line 1383)
  * __satfractutauqq:                      Fixed-point fractional library routines.
!                                                              (line 1381)
  * __satfractutausa2:                     Fixed-point fractional library routines.
!                                                              (line 1391)
  * __satfractutausq:                      Fixed-point fractional library routines.
!                                                              (line 1385)
  * __splitstack_find:                     Miscellaneous routines.
                                                               (line   15)
  * __ssaddda3:                            Fixed-point fractional library routines.
!                                                              (line   66)
  * __ssadddq3:                            Fixed-point fractional library routines.
!                                                              (line   61)
  * __ssaddha3:                            Fixed-point fractional library routines.
!                                                              (line   63)
  * __ssaddhq3:                            Fixed-point fractional library routines.
!                                                              (line   59)
  * __ssaddqq3:                            Fixed-point fractional library routines.
!                                                              (line   57)
  * __ssaddsa3:                            Fixed-point fractional library routines.
!                                                              (line   65)
  * __ssaddsq3:                            Fixed-point fractional library routines.
!                                                              (line   60)
  * __ssaddta3:                            Fixed-point fractional library routines.
!                                                              (line   67)
  * __ssashlda3:                           Fixed-point fractional library routines.
!                                                              (line  401)
  * __ssashldq3:                           Fixed-point fractional library routines.
!                                                              (line  397)
  * __ssashlha3:                           Fixed-point fractional library routines.
!                                                              (line  399)
  * __ssashlhq3:                           Fixed-point fractional library routines.
!                                                              (line  395)
  * __ssashlsa3:                           Fixed-point fractional library routines.
!                                                              (line  400)
  * __ssashlsq3:                           Fixed-point fractional library routines.
!                                                              (line  396)
  * __ssashlta3:                           Fixed-point fractional library routines.
!                                                              (line  402)
  * __ssdivda3:                            Fixed-point fractional library routines.
!                                                              (line  260)
  * __ssdivdq3:                            Fixed-point fractional library routines.
!                                                              (line  255)
  * __ssdivha3:                            Fixed-point fractional library routines.
!                                                              (line  257)
  * __ssdivhq3:                            Fixed-point fractional library routines.
!                                                              (line  253)
  * __ssdivqq3:                            Fixed-point fractional library routines.
!                                                              (line  251)
  * __ssdivsa3:                            Fixed-point fractional library routines.
!                                                              (line  259)
  * __ssdivsq3:                            Fixed-point fractional library routines.
!                                                              (line  254)
  * __ssdivta3:                            Fixed-point fractional library routines.
!                                                              (line  261)
  * __ssmulda3:                            Fixed-point fractional library routines.
!                                                              (line  192)
  * __ssmuldq3:                            Fixed-point fractional library routines.
!                                                              (line  187)
  * __ssmulha3:                            Fixed-point fractional library routines.
!                                                              (line  189)
  * __ssmulhq3:                            Fixed-point fractional library routines.
!                                                              (line  185)
  * __ssmulqq3:                            Fixed-point fractional library routines.
!                                                              (line  183)
  * __ssmulsa3:                            Fixed-point fractional library routines.
!                                                              (line  191)
  * __ssmulsq3:                            Fixed-point fractional library routines.
!                                                              (line  186)
  * __ssmulta3:                            Fixed-point fractional library routines.
!                                                              (line  193)
  * __ssnegda2:                            Fixed-point fractional library routines.
!                                                              (line  315)
  * __ssnegdq2:                            Fixed-point fractional library routines.
!                                                              (line  312)
  * __ssnegha2:                            Fixed-point fractional library routines.
!                                                              (line  313)
  * __ssneghq2:                            Fixed-point fractional library routines.
!                                                              (line  310)
  * __ssnegqq2:                            Fixed-point fractional library routines.
!                                                              (line  309)
  * __ssnegsa2:                            Fixed-point fractional library routines.
!                                                              (line  314)
  * __ssnegsq2:                            Fixed-point fractional library routines.
!                                                              (line  311)
  * __ssnegta2:                            Fixed-point fractional library routines.
!                                                              (line  316)
  * __sssubda3:                            Fixed-point fractional library routines.
!                                                              (line  128)
  * __sssubdq3:                            Fixed-point fractional library routines.
!                                                              (line  123)
  * __sssubha3:                            Fixed-point fractional library routines.
!                                                              (line  125)
  * __sssubhq3:                            Fixed-point fractional library routines.
!                                                              (line  121)
  * __sssubqq3:                            Fixed-point fractional library routines.
!                                                              (line  119)
  * __sssubsa3:                            Fixed-point fractional library routines.
!                                                              (line  127)
  * __sssubsq3:                            Fixed-point fractional library routines.
!                                                              (line  122)
  * __sssubta3:                            Fixed-point fractional library routines.
!                                                              (line  129)
  * __subda3:                              Fixed-point fractional library routines.
!                                                              (line  106)
  * __subdf3:                              Soft float library routines.
                                                               (line   30)
  * __subdq3:                              Fixed-point fractional library routines.
!                                                              (line   93)
  * __subha3:                              Fixed-point fractional library routines.
!                                                              (line  103)
  * __subhq3:                              Fixed-point fractional library routines.
!                                                              (line   91)
  * __subqq3:                              Fixed-point fractional library routines.
!                                                              (line   89)
  * __subsa3:                              Fixed-point fractional library routines.
!                                                              (line  105)
  * __subsf3:                              Soft float library routines.
                                                               (line   29)
  * __subsq3:                              Fixed-point fractional library routines.
!                                                              (line   92)
  * __subta3:                              Fixed-point fractional library routines.
!                                                              (line  107)
  * __subtf3:                              Soft float library routines.
                                                               (line   31)
  * __subuda3:                             Fixed-point fractional library routines.
!                                                              (line  113)
  * __subudq3:                             Fixed-point fractional library routines.
!                                                              (line  101)
  * __subuha3:                             Fixed-point fractional library routines.
!                                                              (line  109)
  * __subuhq3:                             Fixed-point fractional library routines.
!                                                              (line   97)
  * __subuqq3:                             Fixed-point fractional library routines.
!                                                              (line   95)
  * __subusa3:                             Fixed-point fractional library routines.
!                                                              (line  111)
  * __subusq3:                             Fixed-point fractional library routines.
!                                                              (line   99)
  * __subuta3:                             Fixed-point fractional library routines.
!                                                              (line  115)
  * __subvdi3:                             Integer library routines.
                                                               (line  122)
  * __subvsi3:                             Integer library routines.
*************** Concept Index
*** 52074,52094 ****
  * __udivti3:                             Integer library routines.
                                                               (line   54)
  * __udivuda3:                            Fixed-point fractional library routines.
!                                                              (line  252)
  * __udivudq3:                            Fixed-point fractional library routines.
!                                                              (line  246)
  * __udivuha3:                            Fixed-point fractional library routines.
!                                                              (line  248)
  * __udivuhq3:                            Fixed-point fractional library routines.
!                                                              (line  242)
  * __udivuqq3:                            Fixed-point fractional library routines.
!                                                              (line  240)
  * __udivusa3:                            Fixed-point fractional library routines.
!                                                              (line  250)
  * __udivusq3:                            Fixed-point fractional library routines.
!                                                              (line  244)
  * __udivuta3:                            Fixed-point fractional library routines.
!                                                              (line  254)
  * __umoddi3:                             Integer library routines.
                                                               (line   69)
  * __umodsi3:                             Integer library routines.
--- 52082,52102 ----
  * __udivti3:                             Integer library routines.
                                                               (line   54)
  * __udivuda3:                            Fixed-point fractional library routines.
!                                                              (line  244)
  * __udivudq3:                            Fixed-point fractional library routines.
!                                                              (line  238)
  * __udivuha3:                            Fixed-point fractional library routines.
!                                                              (line  240)
  * __udivuhq3:                            Fixed-point fractional library routines.
!                                                              (line  234)
  * __udivuqq3:                            Fixed-point fractional library routines.
!                                                              (line  232)
  * __udivusa3:                            Fixed-point fractional library routines.
!                                                              (line  242)
  * __udivusq3:                            Fixed-point fractional library routines.
!                                                              (line  236)
  * __udivuta3:                            Fixed-point fractional library routines.
!                                                              (line  246)
  * __umoddi3:                             Integer library routines.
                                                               (line   69)
  * __umodsi3:                             Integer library routines.
*************** Concept Index
*** 52102,52202 ****
  * __unordtf2:                            Soft float library routines.
                                                               (line  173)
  * __usadduda3:                           Fixed-point fractional library routines.
!                                                              (line   91)
  * __usaddudq3:                           Fixed-point fractional library routines.
!                                                              (line   85)
  * __usadduha3:                           Fixed-point fractional library routines.
!                                                              (line   87)
  * __usadduhq3:                           Fixed-point fractional library routines.
!                                                              (line   81)
  * __usadduqq3:                           Fixed-point fractional library routines.
!                                                              (line   79)
  * __usaddusa3:                           Fixed-point fractional library routines.
!                                                              (line   89)
  * __usaddusq3:                           Fixed-point fractional library routines.
!                                                              (line   83)
  * __usadduta3:                           Fixed-point fractional library routines.
!                                                              (line   93)
  * __usashluda3:                          Fixed-point fractional library routines.
!                                                              (line  427)
  * __usashludq3:                          Fixed-point fractional library routines.
!                                                              (line  421)
  * __usashluha3:                          Fixed-point fractional library routines.
!                                                              (line  423)
  * __usashluhq3:                          Fixed-point fractional library routines.
!                                                              (line  417)
  * __usashluqq3:                          Fixed-point fractional library routines.
!                                                              (line  415)
  * __usashlusa3:                          Fixed-point fractional library routines.
!                                                              (line  425)
  * __usashlusq3:                          Fixed-point fractional library routines.
!                                                              (line  419)
  * __usashluta3:                          Fixed-point fractional library routines.
!                                                              (line  429)
  * __usdivuda3:                           Fixed-point fractional library routines.
!                                                              (line  286)
  * __usdivudq3:                           Fixed-point fractional library routines.
!                                                              (line  280)
  * __usdivuha3:                           Fixed-point fractional library routines.
!                                                              (line  282)
  * __usdivuhq3:                           Fixed-point fractional library routines.
!                                                              (line  276)
  * __usdivuqq3:                           Fixed-point fractional library routines.
!                                                              (line  274)
  * __usdivusa3:                           Fixed-point fractional library routines.
!                                                              (line  284)
  * __usdivusq3:                           Fixed-point fractional library routines.
!                                                              (line  278)
  * __usdivuta3:                           Fixed-point fractional library routines.
!                                                              (line  288)
  * __usmuluda3:                           Fixed-point fractional library routines.
!                                                              (line  218)
  * __usmuludq3:                           Fixed-point fractional library routines.
!                                                              (line  212)
  * __usmuluha3:                           Fixed-point fractional library routines.
!                                                              (line  214)
  * __usmuluhq3:                           Fixed-point fractional library routines.
!                                                              (line  208)
  * __usmuluqq3:                           Fixed-point fractional library routines.
!                                                              (line  206)
  * __usmulusa3:                           Fixed-point fractional library routines.
!                                                              (line  216)
  * __usmulusq3:                           Fixed-point fractional library routines.
!                                                              (line  210)
  * __usmuluta3:                           Fixed-point fractional library routines.
!                                                              (line  220)
  * __usneguda2:                           Fixed-point fractional library routines.
!                                                              (line  337)
  * __usnegudq2:                           Fixed-point fractional library routines.
!                                                              (line  332)
  * __usneguha2:                           Fixed-point fractional library routines.
!                                                              (line  334)
  * __usneguhq2:                           Fixed-point fractional library routines.
!                                                              (line  329)
  * __usneguqq2:                           Fixed-point fractional library routines.
!                                                              (line  327)
  * __usnegusa2:                           Fixed-point fractional library routines.
!                                                              (line  336)
  * __usnegusq2:                           Fixed-point fractional library routines.
!                                                              (line  330)
  * __usneguta2:                           Fixed-point fractional library routines.
!                                                              (line  339)
  * __ussubuda3:                           Fixed-point fractional library routines.
!                                                              (line  154)
  * __ussubudq3:                           Fixed-point fractional library routines.
!                                                              (line  148)
  * __ussubuha3:                           Fixed-point fractional library routines.
!                                                              (line  150)
  * __ussubuhq3:                           Fixed-point fractional library routines.
!                                                              (line  144)
  * __ussubuqq3:                           Fixed-point fractional library routines.
!                                                              (line  142)
  * __ussubusa3:                           Fixed-point fractional library routines.
!                                                              (line  152)
  * __ussubusq3:                           Fixed-point fractional library routines.
!                                                              (line  146)
  * __ussubuta3:                           Fixed-point fractional library routines.
!                                                              (line  156)
  * abort:                                 Portability.        (line   20)
  * abs:                                   Arithmetic.         (line  200)
  * abs and attributes:                    Expressions.        (line   83)
--- 52110,52210 ----
  * __unordtf2:                            Soft float library routines.
                                                               (line  173)
  * __usadduda3:                           Fixed-point fractional library routines.
!                                                              (line   83)
  * __usaddudq3:                           Fixed-point fractional library routines.
!                                                              (line   77)
  * __usadduha3:                           Fixed-point fractional library routines.
!                                                              (line   79)
  * __usadduhq3:                           Fixed-point fractional library routines.
!                                                              (line   73)
  * __usadduqq3:                           Fixed-point fractional library routines.
!                                                              (line   71)
  * __usaddusa3:                           Fixed-point fractional library routines.
!                                                              (line   81)
  * __usaddusq3:                           Fixed-point fractional library routines.
!                                                              (line   75)
  * __usadduta3:                           Fixed-point fractional library routines.
!                                                              (line   85)
  * __usashluda3:                          Fixed-point fractional library routines.
!                                                              (line  419)
  * __usashludq3:                          Fixed-point fractional library routines.
!                                                              (line  413)
  * __usashluha3:                          Fixed-point fractional library routines.
!                                                              (line  415)
  * __usashluhq3:                          Fixed-point fractional library routines.
!                                                              (line  409)
  * __usashluqq3:                          Fixed-point fractional library routines.
!                                                              (line  407)
  * __usashlusa3:                          Fixed-point fractional library routines.
!                                                              (line  417)
  * __usashlusq3:                          Fixed-point fractional library routines.
!                                                              (line  411)
  * __usashluta3:                          Fixed-point fractional library routines.
!                                                              (line  421)
  * __usdivuda3:                           Fixed-point fractional library routines.
!                                                              (line  278)
  * __usdivudq3:                           Fixed-point fractional library routines.
!                                                              (line  272)
  * __usdivuha3:                           Fixed-point fractional library routines.
!                                                              (line  274)
  * __usdivuhq3:                           Fixed-point fractional library routines.
!                                                              (line  268)
  * __usdivuqq3:                           Fixed-point fractional library routines.
!                                                              (line  266)
  * __usdivusa3:                           Fixed-point fractional library routines.
!                                                              (line  276)
  * __usdivusq3:                           Fixed-point fractional library routines.
!                                                              (line  270)
  * __usdivuta3:                           Fixed-point fractional library routines.
!                                                              (line  280)
  * __usmuluda3:                           Fixed-point fractional library routines.
!                                                              (line  210)
  * __usmuludq3:                           Fixed-point fractional library routines.
!                                                              (line  204)
  * __usmuluha3:                           Fixed-point fractional library routines.
!                                                              (line  206)
  * __usmuluhq3:                           Fixed-point fractional library routines.
!                                                              (line  200)
  * __usmuluqq3:                           Fixed-point fractional library routines.
!                                                              (line  198)
  * __usmulusa3:                           Fixed-point fractional library routines.
!                                                              (line  208)
  * __usmulusq3:                           Fixed-point fractional library routines.
!                                                              (line  202)
  * __usmuluta3:                           Fixed-point fractional library routines.
!                                                              (line  212)
  * __usneguda2:                           Fixed-point fractional library routines.
!                                                              (line  329)
  * __usnegudq2:                           Fixed-point fractional library routines.
!                                                              (line  324)
  * __usneguha2:                           Fixed-point fractional library routines.
!                                                              (line  326)
  * __usneguhq2:                           Fixed-point fractional library routines.
!                                                              (line  321)
  * __usneguqq2:                           Fixed-point fractional library routines.
!                                                              (line  319)
  * __usnegusa2:                           Fixed-point fractional library routines.
!                                                              (line  328)
  * __usnegusq2:                           Fixed-point fractional library routines.
!                                                              (line  322)
  * __usneguta2:                           Fixed-point fractional library routines.
!                                                              (line  331)
  * __ussubuda3:                           Fixed-point fractional library routines.
!                                                              (line  146)
  * __ussubudq3:                           Fixed-point fractional library routines.
!                                                              (line  140)
  * __ussubuha3:                           Fixed-point fractional library routines.
!                                                              (line  142)
  * __ussubuhq3:                           Fixed-point fractional library routines.
!                                                              (line  136)
  * __ussubuqq3:                           Fixed-point fractional library routines.
!                                                              (line  134)
  * __ussubusa3:                           Fixed-point fractional library routines.
!                                                              (line  144)
  * __ussubusq3:                           Fixed-point fractional library routines.
!                                                              (line  138)
  * __ussubuta3:                           Fixed-point fractional library routines.
!                                                              (line  148)
  * abort:                                 Portability.        (line   20)
  * abs:                                   Arithmetic.         (line  200)
  * abs and attributes:                    Expressions.        (line   83)
*************** Concept Index
*** 52367,52373 ****
  * AS_NEEDS_DASH_FOR_PIPED_INPUT:         Driver.             (line   88)
  * atan2M3 instruction pattern:           Standard Names.     (line 1061)
  * atanM2 instruction pattern:            Standard Names.     (line  972)
! * atomic:                                GTY Options.        (line  197)
  * atomic_addMODE instruction pattern:    Standard Names.     (line 2380)
  * atomic_add_fetchMODE instruction pattern: Standard Names.  (line 2409)
  * atomic_andMODE instruction pattern:    Standard Names.     (line 2380)
--- 52375,52381 ----
  * AS_NEEDS_DASH_FOR_PIPED_INPUT:         Driver.             (line   88)
  * atan2M3 instruction pattern:           Standard Names.     (line 1061)
  * atanM2 instruction pattern:            Standard Names.     (line  972)
! * atomic:                                GTY Options.        (line  196)
  * atomic_addMODE instruction pattern:    Standard Names.     (line 2380)
  * atomic_add_fetchMODE instruction pattern: Standard Names.  (line 2409)
  * atomic_andMODE instruction pattern:    Standard Names.     (line 2380)
*************** Concept Index
*** 54126,54132 ****
  * lceilMN2:                              Standard Names.     (line 1137)
  * LCSSA:                                 LCSSA.              (line    6)
  * LDD_SUFFIX:                            Macros for Initialization.
!                                                              (line  121)
  * ldexpM3 instruction pattern:           Standard Names.     (line  922)
  * LD_FINI_SWITCH:                        Macros for Initialization.
                                                               (line   28)
--- 54134,54140 ----
  * lceilMN2:                              Standard Names.     (line 1137)
  * LCSSA:                                 LCSSA.              (line    6)
  * LDD_SUFFIX:                            Macros for Initialization.
!                                                              (line  129)
  * ldexpM3 instruction pattern:           Standard Names.     (line  922)
  * LD_FINI_SWITCH:                        Macros for Initialization.
                                                               (line   28)
*************** Concept Index
*** 54444,54450 ****
                                                               (line    6)
  * nil:                                   RTL Objects.        (line   73)
  * NM_FLAGS:                              Macros for Initialization.
!                                                              (line  110)
  * nondeterministic finite state automaton: Processor pipeline description.
                                                               (line  304)
  * nonimmediate_operand:                  Machine-Independent Predicates.
--- 54452,54458 ----
                                                               (line    6)
  * nil:                                   RTL Objects.        (line   73)
  * NM_FLAGS:                              Macros for Initialization.
!                                                              (line  118)
  * nondeterministic finite state automaton: Processor pipeline description.
                                                               (line  304)
  * nonimmediate_operand:                  Machine-Independent Predicates.
*************** Concept Index
*** 54519,54525 ****
  * OBJC_GEN_METHOD_LABEL:                 Label Output.       (line  482)
  * OBJC_JBLEN:                            Misc.               (line 1042)
  * OBJECT_FORMAT_COFF:                    Macros for Initialization.
!                                                              (line   96)
  * offsettable address:                   Simple Constraints. (line   23)
  * OFFSET_TYPE:                           Types.              (line    6)
  * OImode:                                Machine Modes.      (line   51)
--- 54527,54533 ----
  * OBJC_GEN_METHOD_LABEL:                 Label Output.       (line  482)
  * OBJC_JBLEN:                            Misc.               (line 1042)
  * OBJECT_FORMAT_COFF:                    Macros for Initialization.
!                                                              (line  104)
  * offsettable address:                   Simple Constraints. (line   23)
  * OFFSET_TYPE:                           Types.              (line    6)
  * OImode:                                Machine Modes.      (line   51)
*************** Concept Index
*** 54608,54614 ****
  * PARM_BOUNDARY:                         Storage Layout.     (line  150)
  * PARM_DECL:                             Declarations.       (line    6)
  * PARSE_LDD_OUTPUT:                      Macros for Initialization.
!                                                              (line  125)
  * pass dumps:                            Passes.             (line    6)
  * passes and files of the compiler:      Passes.             (line    6)
  * passing arguments:                     Interface.          (line   36)
--- 54616,54622 ----
  * PARM_BOUNDARY:                         Storage Layout.     (line  150)
  * PARM_DECL:                             Declarations.       (line    6)
  * PARSE_LDD_OUTPUT:                      Macros for Initialization.
!                                                              (line  133)
  * pass dumps:                            Passes.             (line    6)
  * passes and files of the compiler:      Passes.             (line    6)
  * passing arguments:                     Interface.          (line   36)
*************** Concept Index
*** 54784,54790 ****
                                                               (line    6)
  * REAL_LIBGCC_SPEC:                      Driver.             (line  124)
  * REAL_NM_FILE_NAME:                     Macros for Initialization.
!                                                              (line  105)
  * REAL_TYPE:                             Types.              (line    6)
  * REAL_VALUE_ABS:                        Floating Point.     (line   58)
  * REAL_VALUE_ATOF:                       Floating Point.     (line   39)
--- 54792,54798 ----
                                                               (line    6)
  * REAL_LIBGCC_SPEC:                      Driver.             (line  124)
  * REAL_NM_FILE_NAME:                     Macros for Initialization.
!                                                              (line  113)
  * REAL_TYPE:                             Types.              (line    6)
  * REAL_VALUE_ABS:                        Floating Point.     (line   58)
  * REAL_VALUE_ATOF:                       Floating Point.     (line   39)
*************** Concept Index
*** 55075,55081 ****
  * shift:                                 Arithmetic.         (line  173)
  * SHIFT_COUNT_TRUNCATED:                 Misc.               (line  134)
  * SHLIB_SUFFIX:                          Macros for Initialization.
!                                                              (line  133)
  * SHORT_ACCUM_TYPE_SIZE:                 Type Layout.        (line   82)
  * SHORT_FRACT_TYPE_SIZE:                 Type Layout.        (line   62)
  * SHORT_IMMEDIATES_SIGN_EXTEND:          Misc.               (line  108)
--- 55083,55089 ----
  * shift:                                 Arithmetic.         (line  173)
  * SHIFT_COUNT_TRUNCATED:                 Misc.               (line  134)
  * SHLIB_SUFFIX:                          Macros for Initialization.
!                                                              (line  141)
  * SHORT_ACCUM_TYPE_SIZE:                 Type Layout.        (line   82)
  * SHORT_FRACT_TYPE_SIZE:                 Type Layout.        (line   62)
  * SHORT_IMMEDIATES_SIGN_EXTEND:          Misc.               (line  108)
*************** Concept Index
*** 55119,55125 ****
                                                               (line    6)
  * source code, location information:     Guidelines for Diagnostics.
                                                               (line  159)
! * special:                               GTY Options.        (line  238)
  * special predicates:                    Predicates.         (line   31)
  * SPECS:                                 Target Fragment.    (line  194)
  * speculation_barrier instruction pattern: Standard Names.   (line 2178)
--- 55127,55133 ----
                                                               (line    6)
  * source code, location information:     Guidelines for Diagnostics.
                                                               (line  159)
! * special:                               GTY Options.        (line  237)
  * special predicates:                    Predicates.         (line   31)
  * SPECS:                                 Target Fragment.    (line  194)
  * speculation_barrier instruction pattern: Standard Names.   (line 2178)
*************** Concept Index
*** 55377,55387 ****
  * TARGET_ASM_CLOSE_PAREN:                Data Output.        (line  139)
  * TARGET_ASM_CODE_END:                   File Framework.     (line   57)
  * TARGET_ASM_CONSTRUCTOR:                Macros for Initialization.
!                                                              (line   68)
  * TARGET_ASM_DECLARE_CONSTANT_NAME:      Label Output.       (line  177)
  * TARGET_ASM_DECL_END:                   Data Output.        (line   44)
  * TARGET_ASM_DESTRUCTOR:                 Macros for Initialization.
!                                                              (line   82)
  * TARGET_ASM_ELF_FLAGS_NUMERIC:          File Framework.     (line  120)
  * TARGET_ASM_EMIT_EXCEPT_PERSONALITY:    Dispatch Tables.    (line   89)
  * TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL:    Dispatch Tables.    (line   82)
--- 55385,55395 ----
  * TARGET_ASM_CLOSE_PAREN:                Data Output.        (line  139)
  * TARGET_ASM_CODE_END:                   File Framework.     (line   57)
  * TARGET_ASM_CONSTRUCTOR:                Macros for Initialization.
!                                                              (line   76)
  * TARGET_ASM_DECLARE_CONSTANT_NAME:      Label Output.       (line  177)
  * TARGET_ASM_DECL_END:                   Data Output.        (line   44)
  * TARGET_ASM_DESTRUCTOR:                 Macros for Initialization.
!                                                              (line   90)
  * TARGET_ASM_ELF_FLAGS_NUMERIC:          File Framework.     (line  120)
  * TARGET_ASM_EMIT_EXCEPT_PERSONALITY:    Dispatch Tables.    (line   89)
  * TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL:    Dispatch Tables.    (line   82)
*************** Concept Index
*** 55521,55526 ****
--- 55529,55536 ----
  * TARGET_DLLIMPORT_DECL_ATTRIBUTES:      Target Attributes.  (line   55)
  * TARGET_DOLOOP_COST_FOR_ADDRESS:        Misc.               (line  746)
  * TARGET_DOLOOP_COST_FOR_GENERIC:        Misc.               (line  735)
+ * TARGET_DTORS_FROM_CXA_ATEXIT:          Macros for Initialization.
+                                                              (line   68)
  * TARGET_DWARF_CALLING_CONVENTION:       DWARF.              (line   12)
  * TARGET_DWARF_FRAME_REG_MODE:           Exception Region Output.
                                                               (line  113)
*************** Concept Index
*** 56200,56206 ****
  * use:                                   Side Effects.       (line  168)
  * used:                                  Flags.              (line  325)
  * used, in symbol_ref:                   Flags.              (line  211)
! * user:                                  GTY Options.        (line  245)
  * user experience guidelines:            User Experience Guidelines.
                                                               (line    6)
  * user gc:                               User GC.            (line    6)
--- 56210,56216 ----
  * use:                                   Side Effects.       (line  168)
  * used:                                  Flags.              (line  325)
  * used, in symbol_ref:                   Flags.              (line  211)
! * user:                                  GTY Options.        (line  244)
  * user experience guidelines:            User Experience Guidelines.
                                                               (line    6)
  * user gc:                               User GC.            (line    6)
*************** Concept Index
*** 56432,56873 ****
  
  Tag Table:
  Node: Top1789
! Node: Contributing5163
! Node: Portability5893
! Node: Interface7681
! Node: Libgcc10722
! Node: Integer library routines12549
! Node: Soft float library routines19517
! Node: Decimal float library routines31455
! Node: Fixed-point fractional library routines47213
! Node: Exception handling routines147609
! Node: Miscellaneous routines148716
! Node: Languages150836
! Node: Source Tree152383
! Node: Configure Terms152965
! Node: Top Level155921
! Node: gcc Directory159506
! Node: Subdirectories160458
! Node: Configuration162626
! Node: Config Fragments163346
! Node: System Config164571
! Node: Configuration Files165507
! Node: Build168123
! Node: Makefile168535
! Ref: Makefile-Footnote-1175310
! Ref: Makefile-Footnote-2175457
! Node: Library Files175531
! Node: Headers176093
! Node: Documentation178176
! Node: Texinfo Manuals179035
! Node: Man Page Generation181364
! Node: Miscellaneous Docs183277
! Node: Front End184664
! Node: Front End Directory188343
! Node: Front End Config189659
! Node: Front End Makefile192495
! Node: Back End196263
! Node: Testsuites201149
! Node: Test Idioms202138
! Node: Test Directives205536
! Node: Directives206063
! Node: Selectors217436
! Node: Effective-Target Keywords218792
! Ref: arm_fp_ok230743
! Ref: arm_fp_dp_ok230910
! Ref: arm_neon_ok232022
! Ref: arm_neon_ok_no_float_abi232191
! Ref: arm_neonv2_ok232358
! Ref: arm_fp16_ok232525
! Ref: arm_neon_fp16_ok232867
! Ref: arm_vfp3_ok233799
! Ref: arm_arch_v8a_hard_ok233942
! Ref: arm_v8_1a_neon_ok234692
! Ref: arm_v8_2a_fp16_scalar_ok235120
! Ref: arm_v8_2a_fp16_neon_ok235571
! Ref: arm_v8_2a_dotprod_neon_ok236046
! Ref: arm_fp16fml_neon_ok236466
! Ref: arm_coproc1_ok238966
! Ref: arm_coproc2_ok239092
! Ref: arm_coproc3_ok239320
! Ref: arm_simd32_ok239687
! Ref: arm_qbit_ok239865
! Ref: arm_softfp_ok240057
! Ref: arm_hard_ok240130
! Ref: stack_size_et252038
! Node: Add Options254431
! Ref: arm_fp16_ieee255669
! Ref: arm_fp16_alternative255924
! Ref: stack_size_ao258319
! Node: Require Support258681
! Node: Final Actions261583
! Node: Ada Tests270423
! Node: C Tests271586
! Node: LTO Testing275958
! Node: gcov Testing277601
! Node: profopt Testing280571
! Node: compat Testing282286
! Node: Torture Tests286526
! Node: GIMPLE Tests288160
! Node: RTL Tests289402
! Node: Options290708
! Node: Option file format291149
! Node: Option properties298138
! Node: Passes314301
! Node: Parsing pass315174
! Node: Gimplification pass318702
! Node: Pass manager320535
! Node: IPA passes322376
! Node: Small IPA passes323269
! Node: Regular IPA passes326706
! Node: Late IPA passes331768
! Node: Tree SSA passes332727
! Node: RTL passes354267
! Node: Optimization info366531
! Node: Dump setup367350
! Node: Optimization groups368479
! Node: Dump files and streams369458
! Node: Dump output verbosity370656
! Node: Dump types371712
! Node: Dump examples374054
! Node: poly_int375535
! Node: Overview of poly_int377015
! Node: Consequences of using poly_int379619
! Node: Comparisons involving poly_int381254
! Node: Comparison functions for poly_int382892
! Node: Properties of the poly_int comparisons384099
! Node: Comparing potentially-unordered poly_ints386541
! Node: Comparing ordered poly_ints387452
! Node: Checking for a poly_int marker value389476
! Node: Range checks on poly_ints390325
! Node: Sorting poly_ints392979
! Node: Arithmetic on poly_ints393752
! Node: Using poly_int with C++ arithmetic operators394553
! Node: wi arithmetic on poly_ints396084
! Node: Division of poly_ints396936
! Node: Other poly_int arithmetic398443
! Node: Alignment of poly_ints399849
! Node: Computing bounds on poly_ints403126
! Node: Converting poly_ints404515
! Node: Miscellaneous poly_int routines408062
! Node: Guidelines for using poly_int408702
! Node: GENERIC413634
! Node: Deficiencies415456
! Node: Tree overview415697
! Node: Macros and Functions419821
! Node: Identifiers420646
! Node: Containers422255
! Node: Types423412
! Node: Declarations435486
! Node: Working with declarations435981
! Node: Internal structure441585
! Node: Current structure hierarchy441969
! Node: Adding new DECL node types444062
! Node: Attributes448346
! Node: Expression trees449590
! Node: Constant expressions451344
! Node: Storage References457436
! Node: Unary and Binary Expressions460955
! Node: Vectors481857
! Node: Statements488761
! Node: Basic Statements489293
! Node: Blocks493920
! Node: Statement Sequences495621
! Node: Empty Statements495954
! Node: Jumps496528
! Node: Cleanups497181
! Node: OpenMP499222
! Node: OpenACC505067
! Node: Functions506184
! Node: Function Basics506655
! Node: Function Properties510339
! Node: Language-dependent trees513120
! Node: C and C++ Trees514007
! Node: Types for C++516892
! Node: Namespaces521862
! Node: Classes524968
! Node: Functions for C++529876
! Node: Statements for C++536127
! Node: C++ Expressions544180
! Node: GIMPLE545685
! Node: Tuple representation549350
! Node: Class hierarchy of GIMPLE statements556310
! Node: GIMPLE instruction set561298
! Node: GIMPLE Exception Handling562930
! Node: Temporaries564842
! Ref: Temporaries-Footnote-1566160
! Node: Operands566225
! Node: Compound Expressions566986
! Node: Compound Lvalues567220
! Node: Conditional Expressions567982
! Node: Logical Operators568641
! Node: Manipulating GIMPLE statements575988
! Node: Tuple specific accessors581924
! Node: GIMPLE_ASM582703
! Node: GIMPLE_ASSIGN585086
! Node: GIMPLE_BIND589790
! Node: GIMPLE_CALL591604
! Node: GIMPLE_CATCH595747
! Node: GIMPLE_COND596897
! Node: GIMPLE_DEBUG599692
! Node: GIMPLE_EH_FILTER604290
! Node: GIMPLE_LABEL605853
! Node: GIMPLE_GOTO606466
! Node: GIMPLE_NOP606989
! Node: GIMPLE_OMP_ATOMIC_LOAD607351
! Node: GIMPLE_OMP_ATOMIC_STORE608347
! Node: GIMPLE_OMP_CONTINUE609046
! Node: GIMPLE_OMP_CRITICAL610525
! Node: GIMPLE_OMP_FOR611519
! Node: GIMPLE_OMP_MASTER614935
! Node: GIMPLE_OMP_ORDERED615313
! Node: GIMPLE_OMP_PARALLEL615707
! Node: GIMPLE_OMP_RETURN618476
! Node: GIMPLE_OMP_SECTION619121
! Node: GIMPLE_OMP_SECTIONS619781
! Node: GIMPLE_OMP_SINGLE621391
! Node: GIMPLE_PHI622337
! Node: GIMPLE_RESX623616
! Node: GIMPLE_RETURN624335
! Node: GIMPLE_SWITCH624909
! Node: GIMPLE_TRY626784
! Node: GIMPLE_WITH_CLEANUP_EXPR628556
! Node: GIMPLE sequences629435
! Node: Sequence iterators632641
! Node: Adding a new GIMPLE statement code641098
! Node: Statement and operand traversals642443
! Node: Tree SSA645035
! Node: Annotations646823
! Node: SSA Operands647228
! Node: SSA661307
! Node: Alias analysis671013
! Node: Memory model674787
! Node: RTL676146
! Node: RTL Objects678334
! Node: RTL Classes682218
! Node: Accessors687517
! Node: Special Accessors689690
! Node: Flags695477
! Node: Machine Modes710740
! Node: Constants728146
! Node: Regs and Memory739535
! Node: Arithmetic758787
! Node: Comparisons768962
! Node: Bit-Fields773254
! Node: Vector Operations774805
! Node: Conversions776909
! Node: RTL Declarations781407
! Node: Side Effects782251
! Node: Incdec799260
! Node: Assembler802596
! Node: Debug Information804141
! Node: Insns806068
! Node: Calls833924
! Node: Sharing836517
! Node: Reading RTL839712
! Node: Control Flow840703
! Node: Basic Blocks842471
! Node: Edges847925
! Node: Profile information856544
! Node: Maintaining the CFG861228
! Node: Liveness information866996
! Node: Loop Analysis and Representation869122
! Node: Loop representation870158
! Node: Loop querying877524
! Node: Loop manipulation880345
! Node: LCSSA882681
! Node: Scalar evolutions884750
! Node: loop-iv887994
! Node: Number of iterations889916
! Node: Dependency analysis893997
! Node: Machine Desc900348
! Node: Overview902911
! Node: Patterns904951
! Node: Example909918
! Node: RTL Template911379
! Node: Output Template922035
! Node: Output Statement926216
! Node: Predicates930555
! Node: Machine-Independent Predicates933473
! Node: Defining Predicates938417
! Node: Constraints944380
! Node: Simple Constraints945849
! Node: Multi-Alternative958689
! Node: Class Preferences961898
! Node: Modifiers962790
! Node: Machine Constraints967523
! Node: Disable Insn Alternatives1029627
! Node: Define Constraints1033119
! Node: C Constraint Interface1040513
! Node: Standard Names1043640
! Ref: shift patterns1079884
! Ref: prologue instruction pattern1134664
! Ref: window_save instruction pattern1135157
! Ref: epilogue instruction pattern1135434
! Node: Pattern Ordering1157410
! Node: Dependent Patterns1158646
! Node: Jump Patterns1160266
! Ref: Jump Patterns-Footnote-11162411
! Node: Looping Patterns1162459
! Node: Insn Canonicalizations1168098
! Node: Expander Definitions1173305
! Node: Insn Splitting1181519
! Node: Including Patterns1196549
! Node: Peephole Definitions1198333
! Node: define_peephole1199586
! Node: define_peephole21205916
! Node: Insn Attributes1210005
! Node: Defining Attributes1211187
! Ref: define_enum_attr1214679
! Node: Expressions1215715
! Node: Tagging Insns1222465
! Node: Attr Example1226818
! Node: Insn Lengths1229191
! Node: Constant Attributes1232599
! Node: Mnemonic Attribute1233775
! Node: Delay Slots1235294
! Node: Processor pipeline description1238517
! Ref: Processor pipeline description-Footnote-11257329
! Node: Conditional Execution1257653
! Node: Define Subst1261136
! Node: Define Subst Example1263171
! Node: Define Subst Pattern Matching1266166
! Node: Define Subst Output Template1267392
! Node: Constant Definitions1269715
! Ref: define_enum1273497
! Node: Iterators1273985
! Node: Mode Iterators1274630
! Node: Defining Mode Iterators1275608
! Node: Substitutions1277102
! Node: Examples1279344
! Node: Code Iterators1280792
! Node: Int Iterators1283922
! Node: Subst Iterators1286368
! Node: Parameterized Names1288088
! Node: Target Macros1292106
! Node: Target Structure1295169
! Node: Driver1297661
! Node: Run-time Target1316631
! Node: Per-Function Data1326164
! Node: Storage Layout1328928
! Node: Type Layout1356427
! Node: Registers1369768
! Node: Register Basics1370742
! Node: Allocation Order1378304
! Node: Values in Registers1380788
! Node: Leaf Functions1388264
! Node: Stack Registers1391123
! Node: Register Classes1392395
! Node: Stack and Calling1427177
! Node: Frame Layout1427783
! Node: Exception Handling1439618
! Node: Stack Checking1445828
! Node: Frame Registers1451453
! Node: Elimination1460004
! Node: Stack Arguments1463860
! Node: Register Arguments1471056
! Node: Scalar Return1495917
! Node: Aggregate Return1502373
! Node: Caller Saves1506927
! Node: Function Entry1507669
! Node: Profiling1519221
! Node: Tail Calls1521331
! Node: Shrink-wrapping separate components1523241
! Node: Stack Smashing Protection1526282
! Node: Miscellaneous Register Hooks1528771
! Node: Varargs1529636
! Node: Trampolines1539036
! Node: Library Calls1547859
! Node: Addressing Modes1552749
! Node: Anchored Addresses1581756
! Node: Condition Code1584399
! Node: CC0 Condition Codes1586726
! Node: MODE_CC Condition Codes1589972
! Node: Costs1596798
! Node: Scheduling1618169
! Node: Sections1642091
! Node: PIC1658310
! Node: Assembler Format1660369
! Node: File Framework1661507
! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1669106
! Node: Data Output1672376
! Node: Uninitialized Data1680664
! Node: Label Output1685678
! Node: Initialization1710289
! Node: Macros for Initialization1716250
! Node: Instruction Output1722969
! Node: Dispatch Tables1733598
! Node: Exception Region Output1739059
! Node: Alignment Output1746141
! Node: Debugging Info1749828
! Node: All Debuggers1750482
! Node: DBX Options1753254
! Node: DBX Hooks1758692
! Node: File Names and DBX1760001
! Node: DWARF1762105
! Node: VMS Debug1767920
! Node: Floating Point1768499
! Node: Mode Switching1771254
! Node: Target Attributes1775691
! Node: Emulated TLS1785107
! Node: MIPS Coprocessors1788497
! Node: PCH Target1789656
! Node: C++ ABI1791498
! Node: D Language and ABI1796290
! Node: Named Address Spaces1797335
! Node: Misc1803262
! Ref: TARGET_SHIFT_TRUNCATION_MASK1811133
! Node: Host Config1866467
! Node: Host Common1867536
! Node: Filesystem1869910
! Node: Host Misc1874025
! Node: Fragments1876474
! Node: Target Fragment1877669
! Node: Host Fragment1888481
! Node: Collect21888721
! Node: Header Dirs1891357
! Node: Type Information1892780
! Node: GTY Options1896056
! Node: Inheritance and GTY1907314
! Ref: Inheritance and GTY-Footnote-11908879
! Node: User GC1909149
! Node: GGC Roots1912888
! Node: Files1913601
! Node: Invoking the garbage collector1916308
! Node: Troubleshooting1917813
! Node: Plugins1918888
! Node: Plugins loading1920017
! Node: Plugin API1921116
! Node: Plugins pass1928842
! Node: Plugins GC1930813
! Node: Plugins description1932530
! Node: Plugins attr1933066
! Node: Plugins recording1935346
! Node: Plugins gate1936196
! Node: Plugins tracking1936787
! Node: Plugins building1937375
! Node: LTO1940876
! Node: LTO Overview1941748
! Node: LTO object file layout1947575
! Node: IPA1952205
! Node: WHOPR1961255
! Node: Internal flags1965815
! Node: Match and Simplify1967226
! Node: GIMPLE API1968188
! Node: The Language1970983
! Node: Static Analyzer1982958
! Node: Analyzer Internals1983223
! Node: Debugging the Analyzer1998867
! Node: User Experience Guidelines2001478
! Node: Guidelines for Diagnostics2002414
! Ref: input_location_example2009475
! Node: Guidelines for Options2019158
! Node: Funding2019335
! Node: GNU Project2021842
! Node: Copying2022491
! Node: GNU Free Documentation License2060002
! Node: Contributors2085123
! Node: Option Index2126099
! Node: Concept Index2126976
  
  End Tag Table
--- 56442,56888 ----
  
  Tag Table:
  Node: Top1789
! Node: Contributing5175
! Node: Portability5905
! Node: Interface7693
! Node: Libgcc10734
! Node: Integer library routines12561
! Node: Soft float library routines19529
! Node: Decimal float library routines31467
! Node: Fixed-point fractional library routines47225
! Node: Exception handling routines147621
! Node: Miscellaneous routines148728
! Node: Languages150848
! Node: Source Tree152395
! Node: Configure Terms152977
! Node: Top Level155933
! Node: gcc Directory159518
! Node: Subdirectories160470
! Node: Configuration162638
! Node: Config Fragments163358
! Node: System Config164583
! Node: Configuration Files165519
! Node: Build168135
! Node: Makefile168547
! Ref: Makefile-Footnote-1175322
! Ref: Makefile-Footnote-2175469
! Node: Library Files175543
! Node: Headers176105
! Node: Documentation178188
! Node: Texinfo Manuals179047
! Node: Man Page Generation181376
! Node: Miscellaneous Docs183289
! Node: Front End184676
! Node: Front End Directory188355
! Node: Front End Config189671
! Node: Front End Makefile192507
! Node: Back End196275
! Node: Testsuites201161
! Node: Test Idioms202150
! Node: Test Directives205548
! Node: Directives206075
! Node: Selectors217448
! Node: Effective-Target Keywords218804
! Ref: arm_fp_ok230755
! Ref: arm_fp_dp_ok230922
! Ref: arm_neon_ok232034
! Ref: arm_neon_ok_no_float_abi232203
! Ref: arm_neonv2_ok232370
! Ref: arm_fp16_ok232537
! Ref: arm_neon_fp16_ok232879
! Ref: arm_vfp3_ok233811
! Ref: arm_arch_v8a_hard_ok233954
! Ref: arm_v8_1a_neon_ok234704
! Ref: arm_v8_2a_fp16_scalar_ok235132
! Ref: arm_v8_2a_fp16_neon_ok235583
! Ref: arm_v8_2a_dotprod_neon_ok236058
! Ref: arm_fp16fml_neon_ok236478
! Ref: arm_coproc1_ok238978
! Ref: arm_coproc2_ok239104
! Ref: arm_coproc3_ok239332
! Ref: arm_simd32_ok239699
! Ref: arm_qbit_ok239877
! Ref: arm_softfp_ok240069
! Ref: arm_hard_ok240142
! Ref: stack_size_et252050
! Node: Add Options254443
! Ref: arm_fp16_ieee255681
! Ref: arm_fp16_alternative255936
! Ref: stack_size_ao258331
! Node: Require Support258693
! Node: Final Actions261595
! Node: Ada Tests270435
! Node: C Tests271598
! Node: LTO Testing275970
! Node: gcov Testing277613
! Node: profopt Testing280583
! Node: compat Testing282298
! Node: Torture Tests286538
! Node: GIMPLE Tests288172
! Node: RTL Tests289414
! Node: Options290720
! Node: Option file format291161
! Node: Option properties298150
! Node: Passes314313
! Node: Parsing pass315186
! Node: Gimplification pass318714
! Node: Pass manager320547
! Node: IPA passes322388
! Node: Small IPA passes323281
! Node: Regular IPA passes326718
! Node: Late IPA passes331780
! Node: Tree SSA passes332739
! Node: RTL passes354279
! Node: Optimization info366543
! Node: Dump setup367362
! Node: Optimization groups368491
! Node: Dump files and streams369470
! Node: Dump output verbosity370668
! Node: Dump types371724
! Node: Dump examples374066
! Node: poly_int375547
! Node: Overview of poly_int377027
! Node: Consequences of using poly_int379631
! Node: Comparisons involving poly_int381266
! Node: Comparison functions for poly_int382904
! Node: Properties of the poly_int comparisons384111
! Node: Comparing potentially-unordered poly_ints386553
! Node: Comparing ordered poly_ints387464
! Node: Checking for a poly_int marker value389488
! Node: Range checks on poly_ints390337
! Node: Sorting poly_ints392991
! Node: Arithmetic on poly_ints393764
! Node: Using poly_int with C++ arithmetic operators394565
! Node: wi arithmetic on poly_ints396096
! Node: Division of poly_ints396948
! Node: Other poly_int arithmetic398455
! Node: Alignment of poly_ints399861
! Node: Computing bounds on poly_ints403138
! Node: Converting poly_ints404527
! Node: Miscellaneous poly_int routines408074
! Node: Guidelines for using poly_int408714
! Node: GENERIC413646
! Node: Deficiencies415468
! Node: Tree overview415709
! Node: Macros and Functions419833
! Node: Identifiers420658
! Node: Containers422267
! Node: Types423424
! Node: Declarations435498
! Node: Working with declarations435993
! Node: Internal structure441597
! Node: Current structure hierarchy441981
! Node: Adding new DECL node types444074
! Node: Attributes448358
! Node: Expression trees449602
! Node: Constant expressions451356
! Node: Storage References457448
! Node: Unary and Binary Expressions460967
! Node: Vectors481869
! Node: Statements488773
! Node: Basic Statements489305
! Node: Blocks493932
! Node: Statement Sequences495633
! Node: Empty Statements495966
! Node: Jumps496540
! Node: Cleanups497193
! Node: OpenMP499234
! Node: OpenACC505079
! Node: Functions506196
! Node: Function Basics506667
! Node: Function Properties510351
! Node: Language-dependent trees513132
! Node: C and C++ Trees514019
! Node: Types for C++516904
! Node: Namespaces521874
! Node: Classes524980
! Node: Functions for C++529888
! Node: Statements for C++536139
! Node: C++ Expressions544192
! Node: GIMPLE545697
! Node: Tuple representation549362
! Node: Class hierarchy of GIMPLE statements556322
! Node: GIMPLE instruction set561310
! Node: GIMPLE Exception Handling562942
! Node: Temporaries564854
! Ref: Temporaries-Footnote-1566172
! Node: Operands566237
! Node: Compound Expressions566998
! Node: Compound Lvalues567232
! Node: Conditional Expressions567994
! Node: Logical Operators568653
! Node: Manipulating GIMPLE statements576000
! Node: Tuple specific accessors581936
! Node: GIMPLE_ASM582715
! Node: GIMPLE_ASSIGN585098
! Node: GIMPLE_BIND589802
! Node: GIMPLE_CALL591616
! Node: GIMPLE_CATCH595757
! Node: GIMPLE_COND596907
! Node: GIMPLE_DEBUG599702
! Node: GIMPLE_EH_FILTER604300
! Node: GIMPLE_LABEL605863
! Node: GIMPLE_GOTO606476
! Node: GIMPLE_NOP606999
! Node: GIMPLE_OMP_ATOMIC_LOAD607361
! Node: GIMPLE_OMP_ATOMIC_STORE608357
! Node: GIMPLE_OMP_CONTINUE609056
! Node: GIMPLE_OMP_CRITICAL610535
! Node: GIMPLE_OMP_FOR611529
! Node: GIMPLE_OMP_MASTER614945
! Node: GIMPLE_OMP_ORDERED615323
! Node: GIMPLE_OMP_PARALLEL615717
! Node: GIMPLE_OMP_RETURN618486
! Node: GIMPLE_OMP_SECTION619131
! Node: GIMPLE_OMP_SECTIONS619791
! Node: GIMPLE_OMP_SINGLE621401
! Node: GIMPLE_PHI622347
! Node: GIMPLE_RESX623626
! Node: GIMPLE_RETURN624345
! Node: GIMPLE_SWITCH624919
! Node: GIMPLE_TRY626792
! Node: GIMPLE_WITH_CLEANUP_EXPR628564
! Node: GIMPLE sequences629443
! Node: Sequence iterators632649
! Node: Adding a new GIMPLE statement code641106
! Node: Statement and operand traversals642451
! Node: Tree SSA645043
! Node: Annotations646831
! Node: SSA Operands647236
! Node: SSA661315
! Node: Alias analysis671021
! Node: Memory model674795
! Node: RTL676154
! Node: RTL Objects678342
! Node: RTL Classes682226
! Node: Accessors687525
! Node: Special Accessors689698
! Node: Flags695485
! Node: Machine Modes710748
! Node: Constants728154
! Node: Regs and Memory739543
! Node: Arithmetic758795
! Node: Comparisons768970
! Node: Bit-Fields773262
! Node: Vector Operations774813
! Node: Conversions776917
! Node: RTL Declarations781415
! Node: Side Effects782259
! Node: Incdec799268
! Node: Assembler802604
! Node: Debug Information804149
! Node: Insns806076
! Node: Calls833932
! Node: Sharing836525
! Node: Reading RTL839720
! Node: Control Flow840711
! Node: Basic Blocks842479
! Node: Edges847933
! Node: Profile information856552
! Node: Maintaining the CFG861236
! Node: Liveness information867004
! Node: Loop Analysis and Representation869130
! Node: Loop representation870166
! Node: Loop querying877532
! Node: Loop manipulation880353
! Node: LCSSA882689
! Node: Scalar evolutions884758
! Node: loop-iv888002
! Node: Number of iterations889924
! Node: Dependency analysis894005
! Node: Machine Desc900356
! Node: Overview902919
! Node: Patterns904959
! Node: Example909926
! Node: RTL Template911387
! Node: Output Template922043
! Node: Output Statement926224
! Node: Predicates930563
! Node: Machine-Independent Predicates933481
! Node: Defining Predicates938425
! Node: Constraints944388
! Node: Simple Constraints945857
! Node: Multi-Alternative958697
! Node: Class Preferences961906
! Node: Modifiers962798
! Node: Machine Constraints967531
! Node: Disable Insn Alternatives1029635
! Node: Define Constraints1033127
! Node: C Constraint Interface1040521
! Node: Standard Names1043648
! Ref: shift patterns1079892
! Ref: prologue instruction pattern1134672
! Ref: window_save instruction pattern1135165
! Ref: epilogue instruction pattern1135442
! Node: Pattern Ordering1157418
! Node: Dependent Patterns1158654
! Node: Jump Patterns1160274
! Ref: Jump Patterns-Footnote-11162419
! Node: Looping Patterns1162467
! Node: Insn Canonicalizations1168106
! Node: Expander Definitions1173313
! Node: Insn Splitting1181527
! Node: Including Patterns1196557
! Node: Peephole Definitions1198341
! Node: define_peephole1199594
! Node: define_peephole21205924
! Node: Insn Attributes1210013
! Node: Defining Attributes1211195
! Ref: define_enum_attr1214687
! Node: Expressions1215723
! Node: Tagging Insns1222473
! Node: Attr Example1226826
! Node: Insn Lengths1229199
! Node: Constant Attributes1232607
! Node: Mnemonic Attribute1233783
! Node: Delay Slots1235302
! Node: Processor pipeline description1238525
! Ref: Processor pipeline description-Footnote-11257337
! Node: Conditional Execution1257661
! Node: Define Subst1261144
! Node: Define Subst Example1263179
! Node: Define Subst Pattern Matching1266174
! Node: Define Subst Output Template1267400
! Node: Constant Definitions1269723
! Ref: define_enum1273505
! Node: Iterators1273993
! Node: Mode Iterators1274638
! Node: Defining Mode Iterators1275616
! Node: Substitutions1277110
! Node: Examples1279352
! Node: Code Iterators1280800
! Node: Int Iterators1283930
! Node: Subst Iterators1286376
! Node: Parameterized Names1288096
! Node: Target Macros1292114
! Node: Target Structure1295177
! Node: Driver1297669
! Node: Run-time Target1316639
! Node: Per-Function Data1326172
! Node: Storage Layout1328936
! Node: Type Layout1356435
! Node: Registers1369776
! Node: Register Basics1370750
! Node: Allocation Order1378312
! Node: Values in Registers1380796
! Node: Leaf Functions1388272
! Node: Stack Registers1391131
! Node: Register Classes1392403
! Node: Stack and Calling1427185
! Node: Frame Layout1427791
! Node: Exception Handling1439626
! Node: Stack Checking1445836
! Node: Frame Registers1451461
! Node: Elimination1460012
! Node: Stack Arguments1463868
! Node: Register Arguments1471064
! Node: Scalar Return1495925
! Node: Aggregate Return1502381
! Node: Caller Saves1506935
! Node: Function Entry1507677
! Node: Profiling1519229
! Node: Tail Calls1521339
! Node: Shrink-wrapping separate components1523249
! Node: Stack Smashing Protection1526290
! Node: Miscellaneous Register Hooks1528779
! Node: Varargs1529644
! Node: Trampolines1539044
! Node: Library Calls1547867
! Node: Addressing Modes1552757
! Node: Anchored Addresses1581764
! Node: Condition Code1584407
! Node: CC0 Condition Codes1586734
! Node: MODE_CC Condition Codes1589980
! Node: Costs1596806
! Node: Scheduling1618177
! Node: Sections1642099
! Node: PIC1658318
! Node: Assembler Format1660377
! Node: File Framework1661515
! Ref: TARGET_HAVE_SWITCHABLE_BSS_SECTIONS1669114
! Node: Data Output1672384
! Node: Uninitialized Data1680672
! Node: Label Output1685686
! Node: Initialization1710297
! Node: Macros for Initialization1716258
! Node: Instruction Output1723409
! Node: Dispatch Tables1734038
! Node: Exception Region Output1739499
! Node: Alignment Output1746581
! Node: Debugging Info1750268
! Node: All Debuggers1750922
! Node: DBX Options1753694
! Node: DBX Hooks1759132
! Node: File Names and DBX1760441
! Node: DWARF1762545
! Node: VMS Debug1768360
! Node: Floating Point1768939
! Node: Mode Switching1771694
! Node: Target Attributes1776131
! Node: Emulated TLS1785547
! Node: MIPS Coprocessors1788937
! Node: PCH Target1790096
! Node: C++ ABI1791938
! Node: D Language and ABI1796730
! Node: Named Address Spaces1797775
! Node: Misc1803702
! Ref: TARGET_SHIFT_TRUNCATION_MASK1811573
! Node: Host Config1866907
! Node: Host Common1867976
! Node: Filesystem1870350
! Node: Host Misc1874465
! Node: Fragments1876914
! Node: Target Fragment1878109
! Node: Host Fragment1888921
! Node: Collect21889161
! Node: Header Dirs1891797
! Node: Type Information1893220
! Node: GTY Options1896496
! Node: Inheritance and GTY1907754
! Ref: Inheritance and GTY-Footnote-11909319
! Node: User GC1909589
! Node: GGC Roots1913328
! Node: Files1914041
! Node: Invoking the garbage collector1916748
! Node: Troubleshooting1918253
! Node: Plugins1919328
! Node: Plugins loading1920457
! Node: Plugin API1921556
! Node: Plugins pass1929282
! Node: Plugins GC1931253
! Node: Plugins description1932970
! Node: Plugins attr1933506
! Node: Plugins recording1935786
! Node: Plugins gate1936636
! Node: Plugins tracking1937227
! Node: Plugins building1937815
! Node: LTO1941316
! Node: LTO Overview1942188
! Node: LTO object file layout1948015
! Node: IPA1952645
! Node: WHOPR1961695
! Node: Internal flags1966255
! Node: Match and Simplify1967666
! Node: GIMPLE API1968628
! Node: The Language1971423
! Node: Static Analyzer1983398
! Node: Analyzer Internals1983663
! Node: Debugging the Analyzer1999307
! Node: User Experience Guidelines2001918
! Node: Guidelines for Diagnostics2002854
! Ref: input_location_example2009915
! Node: Guidelines for Options2019598
! Node: Funding2019775
! Node: GNU Project2022282
! Node: Copying2022931
! Node: GNU Free Documentation License2060442
! Node: Contributors2085563
! Node: Option Index2126539
! Node: Concept Index2127416
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/gcc/doc/gcov-dump.1 gcc-10.4.0/gcc/doc/gcov-dump.1
*** gcc-10.3.0/gcc/doc/gcov-dump.1	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/gcov-dump.1	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV-DUMP 1"
! .TH GCOV-DUMP 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GCOV-DUMP 1"
! .TH GCOV-DUMP 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** any later version published by the Free
*** 189,195 ****
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 193,199 ----
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/gcov-tool.1 gcc-10.4.0/gcc/doc/gcov-tool.1
*** gcc-10.3.0/gcc/doc/gcov-tool.1	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/gcov-tool.1	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV-TOOL 1"
! .TH GCOV-TOOL 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GCOV-TOOL 1"
! .TH GCOV-TOOL 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** Set the verbose mode.
*** 340,346 ****
  .RE
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1), \fIgcov\fR\|(1) and the Info entry for
  \&\fIgcc\fR.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
--- 344,350 ----
  .RE
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1), \fBgcov\fR\|(1) and the Info entry for
  \&\fIgcc\fR.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
*************** any later version published by the Free
*** 352,358 ****
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 356,362 ----
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/gcov.1 gcc-10.4.0/gcc/doc/gcov.1
*** gcc-10.3.0/gcc/doc/gcov.1	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/gcov.1	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GCOV 1"
! .TH GCOV 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GCOV 1"
! .TH GCOV 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** That can help users to find profile clas
*** 1011,1017 ****
  to a misleading profile.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7), \fIgcc\fR\|(1) and the Info entry for \fIgcc\fR.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1996\-2020 Free Software Foundation, Inc.
--- 1015,1021 ----
  to a misleading profile.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7), \fBgcc\fR\|(1) and the Info entry for \fIgcc\fR.
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 1996\-2020 Free Software Foundation, Inc.
*************** any later version published by the Free
*** 1022,1028 ****
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 1026,1032 ----
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/gfdl.7 gcc-10.4.0/gcc/doc/gfdl.7
*** gcc-10.3.0/gcc/doc/gfdl.7	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/gfdl.7	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GFDL 7"
! .TH GFDL 7 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GFDL 7"
! .TH GFDL 7 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** free software license, such as the \s-1G
*** 637,643 ****
  to permit their use in free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIfsf\-funding\fR\|(7).
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
--- 641,647 ----
  to permit their use in free software.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBfsf\-funding\fR\|(7).
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
diff -Nrcpad gcc-10.3.0/gcc/doc/gfortran.1 gcc-10.4.0/gcc/doc/gfortran.1
*** gcc-10.3.0/gcc/doc/gfortran.1	Thu Apr  8 12:06:41 2021
--- gcc-10.4.0/gcc/doc/gfortran.1	Tue Jun 28 09:09:19 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GFORTRAN 1"
! .TH GFORTRAN 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GFORTRAN 1"
! .TH GFORTRAN 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** For instructions on reporting bugs, see
*** 1710,1717 ****
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgpl\fR\|(7), \fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7),
! \&\fIcpp\fR\|(1), \fIgcov\fR\|(1), \fIgcc\fR\|(1), \fIas\fR\|(1), \fIld\fR\|(1), \fIgdb\fR\|(1), \fIdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIgfortran\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
  .SH "AUTHOR"
--- 1714,1721 ----
  <\fBhttps://gcc.gnu.org/bugs/\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgpl\fR\|(7), \fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7),
! \&\fBcpp\fR\|(1), \fBgcov\fR\|(1), \fBgcc\fR\|(1), \fBas\fR\|(1), \fBld\fR\|(1), \fBgdb\fR\|(1), \fBdbx\fR\|(1)
  and the Info entries for \fIgcc\fR, \fIcpp\fR, \fIgfortran\fR, \fIas\fR,
  \&\fIld\fR, \fIbinutils\fR and \fIgdb\fR.
  .SH "AUTHOR"
*************** under the terms of the \s-1GNU\s0 Free D
*** 1727,1733 ****
  any later version published by the Free Software Foundation; with the
  Invariant Sections being \*(L"Funding Free Software\*(R", the Front-Cover
  Texts being (a) (see below), and with the Back-Cover Texts being (b)
! (see below).  A copy of the license is included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 1731,1737 ----
  any later version published by the Free Software Foundation; with the
  Invariant Sections being \*(L"Funding Free Software\*(R", the Front-Cover
  Texts being (a) (see below), and with the Back-Cover Texts being (b)
! (see below).  A copy of the license is included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/gpl.7 gcc-10.4.0/gcc/doc/gpl.7
*** gcc-10.3.0/gcc/doc/gpl.7	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/gpl.7	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "GPL 7"
! .TH GPL 7 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "GPL 7"
! .TH GPL 7 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** the \s-1GNU\s0 Lesser General Public Lic
*** 837,843 ****
  first, please read <\fBhttps://www.gnu.org/licenses/why\-not\-lgpl.html\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fIgfdl\fR\|(7), \fIfsf\-funding\fR\|(7).
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2007 Free Software Foundation, Inc.
--- 841,847 ----
  first, please read <\fBhttps://www.gnu.org/licenses/why\-not\-lgpl.html\fR>.
  .SH "SEE ALSO"
  .IX Header "SEE ALSO"
! \&\fBgfdl\fR\|(7), \fBfsf\-funding\fR\|(7).
  .SH "COPYRIGHT"
  .IX Header "COPYRIGHT"
  Copyright (c) 2007 Free Software Foundation, Inc.
diff -Nrcpad gcc-10.3.0/gcc/doc/install.texi gcc-10.4.0/gcc/doc/install.texi
*** gcc-10.3.0/gcc/doc/install.texi	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/install.texi	Tue Jun 28 08:54:28 2022
*************** but for the linker.
*** 1041,1046 ****
--- 1041,1050 ----
  Same as @uref{#with-as,,@option{--with-as}}
  but for the linker.
  
+ @item --with-dsymutil=@var{pathname}
+ Same as @uref{#with-as,,@option{--with-as}}
+ but for the debug linker (only used on Darwin platforms so far).
+ 
  @item --with-stabs
  Specify that stabs debugging
  information should be used instead of whatever format the host normally
diff -Nrcpad gcc-10.3.0/gcc/doc/invoke.texi gcc-10.4.0/gcc/doc/invoke.texi
*** gcc-10.3.0/gcc/doc/invoke.texi	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/invoke.texi	Tue Jun 28 08:54:28 2022
*************** Objective-C and Objective-C++ Dialects}.
*** 770,775 ****
--- 770,776 ----
  -mverbose-cost-dump @gol
  -mpure-code @gol
  -mcmse @gol
+ -mfix-cmse-cve-2021-35465 @gol
  -mfdpic}
  
  @emph{AVR Options}
*************** name is still supported, but the newer n
*** 4913,4919 ****
  -Wredundant-move @r{(only for C++)}  @gol
  -Wtype-limits  @gol
  -Wuninitialized  @gol
! -Wshift-negative-value @r{(in C++03 and in C99 and newer)}  @gol
  -Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol
  -Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}}
  
--- 4914,4920 ----
  -Wredundant-move @r{(only for C++)}  @gol
  -Wtype-limits  @gol
  -Wuninitialized  @gol
! -Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}  @gol
  -Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol
  -Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}}
  
*************** of the type.  This warning is enabled by
*** 5887,5893 ****
  @opindex Wshift-negative-value
  @opindex Wno-shift-negative-value
  Warn if left shifting a negative value.  This warning is enabled by
! @option{-Wextra} in C99 and C++11 modes (and newer).
  
  @item -Wno-shift-overflow
  @itemx -Wshift-overflow=@var{n}
--- 5888,5894 ----
  @opindex Wshift-negative-value
  @opindex Wno-shift-negative-value
  Warn if left shifting a negative value.  This warning is enabled by
! @option{-Wextra} in C99 (and newer) and C++11 to C++17 modes.
  
  @item -Wno-shift-overflow
  @itemx -Wshift-overflow=@var{n}
*************** The option cannot be combined with @opti
*** 13599,13605 ****
  @opindex fsanitize=undefined
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  Current suboptions are:
  
  @table @gcctabopt
  
--- 13600,13607 ----
  @opindex fsanitize=undefined
  Enable UndefinedBehaviorSanitizer, a fast undefined behavior detector.
  Various computations are instrumented to detect undefined behavior
! at runtime.  See @uref{https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html} for more details.   The run-time behavior can be influenced using the
! @env{UBSAN_OPTIONS} environment variable.  Current suboptions are:
  
  @table @gcctabopt
  
*************** which functions and calls should be skip
*** 13884,13890 ****
  (@pxref{Function Attributes}).
  
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (CET).
  
  @item -fstack-protector
  @opindex fstack-protector
--- 13886,13893 ----
  (@pxref{Function Attributes}).
  
  Currently the x86 GNU/Linux target provides an implementation based
! on Intel Control-flow Enforcement Technology (CET) which works for
! i686 processor or newer.
  
  @item -fstack-protector
  @opindex fstack-protector
*************** performance of the code.  Permissible va
*** 16994,17001 ****
  @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75},
  @samp{cortex-a76}, @samp{cortex-a76ae}, @samp{cortex-a77},
  @samp{cortex-a65}, @samp{cortex-a65ae}, @samp{cortex-a34},
! @samp{ares}, @samp{exynos-m1}, @samp{emag}, @samp{falkor}, @samp{neoverse-e1},
! @samp{neoverse-n1}, @samp{neoverse-n2}, @samp{neoverse-v1}, @samp{qdf24xx},
  @samp{saphira}, @samp{phecda}, @samp{xgene1}, @samp{vulcan}, @samp{octeontx},
  @samp{octeontx81},  @samp{octeontx83},
  @samp{octeontx2}, @samp{octeontx2t98}, @samp{octeontx2t96}
--- 16997,17005 ----
  @samp{cortex-a57}, @samp{cortex-a72}, @samp{cortex-a73}, @samp{cortex-a75},
  @samp{cortex-a76}, @samp{cortex-a76ae}, @samp{cortex-a77},
  @samp{cortex-a65}, @samp{cortex-a65ae}, @samp{cortex-a34},
! @samp{ares}, @samp{exynos-m1}, @samp{emag}, @samp{falkor},
! @samp{neoverse-e1}, @samp{neoverse-n1}, @samp{neoverse-n2},
! @samp{neoverse-v1}, @samp{neoverse-512tvb}, @samp{qdf24xx},
  @samp{saphira}, @samp{phecda}, @samp{xgene1}, @samp{vulcan}, @samp{octeontx},
  @samp{octeontx81},  @samp{octeontx83},
  @samp{octeontx2}, @samp{octeontx2t98}, @samp{octeontx2t96}
*************** The values @samp{cortex-a57.cortex-a53},
*** 17015,17020 ****
--- 17019,17033 ----
  @samp{cortex-a75.cortex-a55}, @samp{cortex-a76.cortex-a55} specify that GCC
  should tune for a big.LITTLE system.
  
+ The value @samp{neoverse-512tvb} specifies that GCC should tune
+ for Neoverse cores that (a) implement SVE and (b) have a total vector
+ bandwidth of 512 bits per cycle.  In other words, the option tells GCC to
+ tune for Neoverse cores that can execute 4 128-bit Advanced SIMD arithmetic
+ instructions a cycle and that can execute an equivalent number of SVE
+ arithmetic instructions per cycle (2 for 256-bit SVE, 4 for 128-bit SVE).
+ This is more general than tuning for a specific core like Neoverse V1
+ but is more specific than the default tuning described below.
+ 
  Additionally on native AArch64 GNU/Linux systems the value
  @samp{native} tunes performance to the host system.  This option has no effect
  if the compiler is unable to recognize the processor of the host system.
*************** by @option{-mtune}).  Where this option
*** 17044,17049 ****
--- 17057,17072 ----
  with @option{-march} or @option{-mtune}, those options take precedence
  over the appropriate part of this option.
  
+ @option{-mcpu=neoverse-512tvb} is special in that it does not refer
+ to a specific core, but instead refers to all Neoverse cores that
+ (a) implement SVE and (b) have a total vector bandwidth of 512 bits
+ a cycle.  Unless overridden by @option{-march},
+ @option{-mcpu=neoverse-512tvb} generates code that can run on a
+ Neoverse V1 core, since Neoverse V1 is the first Neoverse core with
+ these properties.  Unless overridden by @option{-mtune},
+ @option{-mcpu=neoverse-512tvb} tunes code in the same way as for
+ @option{-mtune=neoverse-512tvb}.
+ 
  @item -moverride=@var{string}
  @opindex moverride
  Override tuning decisions made by the back-end in response to a
*************** Generate secure code as per the "ARMv8-M
*** 19236,19241 ****
--- 19259,19272 ----
  Development Tools Engineering Specification", which can be found on
  @url{https://developer.arm.com/documentation/ecm0359818/latest/}.
  
+ @item -mfix-cmse-cve-2021-35465
+ @opindex mfix-cmse-cve-2021-35465
+ Mitigate against a potential security issue with the @code{VLLDM} instruction
+ in some M-profile devices when using CMSE (CVE-2021-365465).  This option is
+ enabled by default when the option @option{-mcpu=} is used with
+ @code{cortex-m33}, @code{cortex-m35p} or @code{cortex-m55}.  The option
+ @option{-mno-fix-cmse-cve-2021-35465} can be used to disable the mitigation.
+ 
  @item -mfdpic
  @itemx -mno-fdpic
  @opindex mfdpic
*************** Supported values for @var{cpu_type} are
*** 25640,25646 ****
  @samp{e6500}, @samp{ec603e}, @samp{G3}, @samp{G4}, @samp{G5},
  @samp{titan}, @samp{power3}, @samp{power4}, @samp{power5}, @samp{power5+},
  @samp{power6}, @samp{power6x}, @samp{power7}, @samp{power8},
! @samp{power9}, @samp{future}, @samp{powerpc}, @samp{powerpc64},
  @samp{powerpc64le}, @samp{rs64}, and @samp{native}.
  
  @option{-mcpu=powerpc}, @option{-mcpu=powerpc64}, and
--- 25671,25677 ----
  @samp{e6500}, @samp{ec603e}, @samp{G3}, @samp{G4}, @samp{G5},
  @samp{titan}, @samp{power3}, @samp{power4}, @samp{power5}, @samp{power5+},
  @samp{power6}, @samp{power6x}, @samp{power7}, @samp{power8},
! @samp{power9}, @samp{power10}, @samp{powerpc}, @samp{powerpc64},
  @samp{powerpc64le}, @samp{rs64}, and @samp{native}.
  
  @option{-mcpu=powerpc}, @option{-mcpu=powerpc64}, and
*************** Enable/disable the @var{__float128} keyw
*** 25821,25830 ****
  and use either software emulation for IEEE 128-bit floating point or
  hardware instructions.
  
! The VSX instruction set (@option{-mvsx}, @option{-mcpu=power7},
! @option{-mcpu=power8}), or @option{-mcpu=power9} must be enabled to
! use the IEEE 128-bit floating point support.  The IEEE 128-bit
! floating point support only works on PowerPC Linux systems.
  
  The default for @option{-mfloat128} is enabled on PowerPC Linux
  systems using the VSX instruction set, and disabled on other systems.
--- 25852,25860 ----
  and use either software emulation for IEEE 128-bit floating point or
  hardware instructions.
  
! The VSX instruction set (@option{-mvsx}) must be enabled to use the IEEE
! 128-bit floating point support.  The IEEE 128-bit floating point is only
! supported on Linux.
  
  The default for @option{-mfloat128} is enabled on PowerPC Linux
  systems using the VSX instruction set, and disabled on other systems.
*************** the offset with a symbol reference to a
*** 26654,26677 ****
  @itemx -mno-pcrel
  @opindex mpcrel
  @opindex mno-pcrel
! Generate (do not generate) pc-relative addressing when the option
! @option{-mcpu=future} is used.  The @option{-mpcrel} option requires
! that the medium code model (@option{-mcmodel=medium}) and prefixed
! addressing (@option{-mprefixed}) options are enabled.
  
  @item -mprefixed
  @itemx -mno-prefixed
  @opindex mprefixed
  @opindex mno-prefixed
  Generate (do not generate) addressing modes using prefixed load and
! store instructions when the option @option{-mcpu=future} is used.
  
  @item -mmma
  @itemx -mno-mma
  @opindex mmma
  @opindex mno-mma
! Generate (do not generate) the MMA instructions when the option
! @option{-mcpu=future} is used.
  @end table
  
  @node RX Options
--- 26684,26708 ----
  @itemx -mno-pcrel
  @opindex mpcrel
  @opindex mno-pcrel
! Generate (do not generate) pc-relative addressing.  The @option{-mpcrel}
! option requires that the medium code model (@option{-mcmodel=medium})
! and prefixed addressing (@option{-mprefixed}) options are enabled.
  
  @item -mprefixed
  @itemx -mno-prefixed
  @opindex mprefixed
  @opindex mno-prefixed
  Generate (do not generate) addressing modes using prefixed load and
! store instructions.  The @option{-mprefixed} option requires that
! the option @option{-mcpu=power10} (or later) is enabled.
  
  @item -mmma
  @itemx -mno-mma
  @opindex mmma
  @opindex mno-mma
! Generate (do not generate) the MMA instructions.  The @option{-mma}
! option requires that the option @option{-mcpu=power10} (or later)
! is enabled.
  @end table
  
  @node RX Options
*************** so @option{-mno-lra} needs to be passed
*** 27817,27826 ****
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type @var{cpu_type}.  Supported values for @var{cpu_type} are
  @samp{v7}, @samp{cypress}, @samp{v8}, @samp{supersparc}, @samp{hypersparc},
! @samp{leon}, @samp{leon3}, @samp{leon3v7}, @samp{sparclite}, @samp{f930},
! @samp{f934}, @samp{sparclite86x}, @samp{sparclet}, @samp{tsc701}, @samp{v9},
! @samp{ultrasparc}, @samp{ultrasparc3}, @samp{niagara}, @samp{niagara2},
! @samp{niagara3}, @samp{niagara4}, @samp{niagara7} and @samp{m8}.
  
  Native Solaris and GNU/Linux toolchains also support the value @samp{native},
  which selects the best architecture option for the host processor.
--- 27848,27858 ----
  Set the instruction set, register set, and instruction scheduling parameters
  for machine type @var{cpu_type}.  Supported values for @var{cpu_type} are
  @samp{v7}, @samp{cypress}, @samp{v8}, @samp{supersparc}, @samp{hypersparc},
! @samp{leon}, @samp{leon3}, @samp{leon3v7}, @samp{leon5}, @samp{sparclite},
! @samp{f930}, @samp{f934}, @samp{sparclite86x}, @samp{sparclet}, @samp{tsc701},
! @samp{v9}, @samp{ultrasparc}, @samp{ultrasparc3}, @samp{niagara},
! @samp{niagara2}, @samp{niagara3}, @samp{niagara4}, @samp{niagara7} and
! @samp{m8}.
  
  Native Solaris and GNU/Linux toolchains also support the value @samp{native},
  which selects the best architecture option for the host processor.
*************** implementations.
*** 27839,27845 ****
  cypress, leon3v7
  
  @item v8
! supersparc, hypersparc, leon, leon3
  
  @item sparclite
  f930, f934, sparclite86x
--- 27871,27877 ----
  cypress, leon3v7
  
  @item v8
! supersparc, hypersparc, leon, leon3, leon5
  
  @item sparclite
  f930, f934, sparclite86x
*************** The same values for @option{-mcpu=@var{c
*** 27906,27912 ****
  @option{-mtune=@var{cpu_type}}, but the only useful values are those
  that select a particular CPU implementation.  Those are
  @samp{cypress}, @samp{supersparc}, @samp{hypersparc}, @samp{leon},
! @samp{leon3}, @samp{leon3v7}, @samp{f930}, @samp{f934},
  @samp{sparclite86x}, @samp{tsc701}, @samp{ultrasparc},
  @samp{ultrasparc3}, @samp{niagara}, @samp{niagara2}, @samp{niagara3},
  @samp{niagara4}, @samp{niagara7} and @samp{m8}.  With native Solaris
--- 27938,27944 ----
  @option{-mtune=@var{cpu_type}}, but the only useful values are those
  that select a particular CPU implementation.  Those are
  @samp{cypress}, @samp{supersparc}, @samp{hypersparc}, @samp{leon},
! @samp{leon3}, @samp{leon3v7}, @samp{leon5}, @samp{f930}, @samp{f934},
  @samp{sparclite86x}, @samp{tsc701}, @samp{ultrasparc},
  @samp{ultrasparc3}, @samp{niagara}, @samp{niagara2}, @samp{niagara3},
  @samp{niagara4}, @samp{niagara7} and @samp{m8}.  With native Solaris
*************** Substitute the contents of spec string @
*** 30812,30819 ****
  Accumulate an option for @samp{%X}.
  
  @item %X
! Output the accumulated linker options specified by @option{-Wl} or a @samp{%x}
! spec string.
  
  @item %Y
  Output the accumulated assembler options specified by @option{-Wa}.
--- 30844,30850 ----
  Accumulate an option for @samp{%X}.
  
  @item %X
! Output the accumulated linker options specified by a @samp{%x} spec string.
  
  @item %Y
  Output the accumulated assembler options specified by @option{-Wa}.
diff -Nrcpad gcc-10.3.0/gcc/doc/lto-dump.1 gcc-10.4.0/gcc/doc/lto-dump.1
*** gcc-10.3.0/gcc/doc/lto-dump.1	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/doc/lto-dump.1	Tue Jun 28 08:56:18 2022
***************
*** 1,4 ****
! .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
--- 1,4 ----
! .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43)
  .\"
  .\" Standard preamble:
  .\" ========================================================================
***************
*** 54,69 ****
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .if !\nF .nr F 0
! .if \nF>0 \{\
! .    de IX
! .    tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .    if !\nF==2 \{\
! .        nr % 0
! .        nr F 2
  .    \}
  .\}
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
--- 54,73 ----
  .\" Avoid warning from groff about undefined register 'F'.
  .de IX
  ..
! .nr rF 0
! .if \n(.g .if rF .nr rF 1
! .if (\n(rF:(\n(.g==0)) \{\
! .    if \nF \{\
! .        de IX
! .        tm Index:\\$1\t\\n%\t"\\$2"
  ..
! .        if !\nF==2 \{\
! .            nr % 0
! .            nr F 2
! .        \}
  .    \}
  .\}
+ .rr rF
  .\"
  .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
***************
*** 129,135 ****
  .\" ========================================================================
  .\"
  .IX Title "LTO-DUMP 1"
! .TH LTO-DUMP 1 "2021-04-08" "gcc-10.3.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
--- 133,139 ----
  .\" ========================================================================
  .\"
  .IX Title "LTO-DUMP 1"
! .TH LTO-DUMP 1 "2022-06-28" "gcc-10.4.0" "GNU"
  .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
  .\" way too many mistakes in technical documents.
  .if n .ad l
*************** any later version published by the Free
*** 218,224 ****
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fIgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
--- 222,228 ----
  Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding
  Free Software\*(R", the Front-Cover texts being (a) (see below), and with
  the Back-Cover Texts being (b) (see below).  A copy of the license is
! included in the \fBgfdl\fR\|(7) man page.
  .PP
  (a) The \s-1FSF\s0's Front-Cover Text is:
  .PP
diff -Nrcpad gcc-10.3.0/gcc/doc/tm.texi gcc-10.4.0/gcc/doc/tm.texi
*** gcc-10.3.0/gcc/doc/tm.texi	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/tm.texi	Tue Jun 28 08:54:28 2022
*************** collecting constructors and destructors
*** 9122,9127 ****
--- 9122,9135 ----
  It is false if we must use @command{collect2}.
  @end deftypevr
  
+ @deftypevr {Target Hook} bool TARGET_DTORS_FROM_CXA_ATEXIT
+ This value is true if the target wants destructors to be queued to be
+ run from __cxa_atexit.  If this is the case then, for each priority level,
+ a new constructor will be entered that registers the destructors for that
+ level with __cxa_atexit (and there will be no destructors emitted).
+ It is false the method implied by @code{have_ctors_dtors} is used.
+ @end deftypevr
+ 
  @deftypefn {Target Hook} void TARGET_ASM_CONSTRUCTOR (rtx @var{symbol}, int @var{priority})
  If defined, a function that outputs assembler code to arrange to call
  the function referenced by @var{symbol} at initialization time.
diff -Nrcpad gcc-10.3.0/gcc/doc/tm.texi.in gcc-10.4.0/gcc/doc/tm.texi.in
*** gcc-10.3.0/gcc/doc/tm.texi.in	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/tm.texi.in	Tue Jun 28 08:54:28 2022
*************** encountering an @code{init_priority} att
*** 6085,6090 ****
--- 6085,6092 ----
  
  @hook TARGET_HAVE_CTORS_DTORS
  
+ @hook TARGET_DTORS_FROM_CXA_ATEXIT
+ 
  @hook TARGET_ASM_CONSTRUCTOR
  
  @hook TARGET_ASM_DESTRUCTOR
diff -Nrcpad gcc-10.3.0/gcc/doc/trouble.texi gcc-10.4.0/gcc/doc/trouble.texi
*** gcc-10.3.0/gcc/doc/trouble.texi	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/doc/trouble.texi	Tue Jun 28 08:54:28 2022
*************** objects behave unspecified when being as
*** 865,874 ****
  @smallexample
  struct Base@{
    char *name;
!   Base(char *n) : name(strdup(n))@{@}
    Base& operator= (const Base& other)@{
     free (name);
     name = strdup (other.name);
    @}
  @};
  
--- 865,875 ----
  @smallexample
  struct Base@{
    char *name;
!   Base(const char *n) : name(strdup(n))@{@}
    Base& operator= (const Base& other)@{
     free (name);
     name = strdup (other.name);
+    return *this;
    @}
  @};
  
*************** inside @samp{func} in the example).
*** 901,908 ****
  G++ implements the ``intuitive'' algorithm for copy-assignment: assign all
  direct bases, then assign all members.  In that algorithm, the virtual
  base subobject can be encountered more than once.  In the example, copying
! proceeds in the following order: @samp{val}, @samp{name} (via
! @code{strdup}), @samp{bval}, and @samp{name} again.
  
  If application code relies on copy-assignment, a user-defined
  copy-assignment operator removes any uncertainties.  With such an
--- 902,909 ----
  G++ implements the ``intuitive'' algorithm for copy-assignment: assign all
  direct bases, then assign all members.  In that algorithm, the virtual
  base subobject can be encountered more than once.  In the example, copying
! proceeds in the following order: @samp{name} (via @code{strdup}),
! @samp{val}, @samp{name} again, and @samp{bval}.
  
  If application code relies on copy-assignment, a user-defined
  copy-assignment operator removes any uncertainties.  With such an
diff -Nrcpad gcc-10.3.0/gcc/dse.c gcc-10.4.0/gcc/dse.c
*** gcc-10.3.0/gcc/dse.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/dse.c	Tue Jun 28 08:54:28 2022
*************** get_stored_val (store_info *store_info,
*** 1950,1957 ****
  
  static bool
  replace_read (store_info *store_info, insn_info_t store_insn,
! 	      read_info_t read_info, insn_info_t read_insn, rtx *loc,
! 	      bitmap regs_live)
  {
    machine_mode store_mode = GET_MODE (store_info->mem);
    machine_mode read_mode = GET_MODE (read_info->mem);
--- 1950,1956 ----
  
  static bool
  replace_read (store_info *store_info, insn_info_t store_insn,
! 	      read_info_t read_info, insn_info_t read_insn, rtx *loc)
  {
    machine_mode store_mode = GET_MODE (store_info->mem);
    machine_mode read_mode = GET_MODE (read_info->mem);
*************** replace_read (store_info *store_info, in
*** 2020,2026 ****
  	  note_stores (this_insn, look_for_hardregs, regs_set);
  	}
  
!       bitmap_and_into (regs_set, regs_live);
        if (!bitmap_empty_p (regs_set))
  	{
  	  if (dump_file && (dump_flags & TDF_DETAILS))
--- 2019,2026 ----
  	  note_stores (this_insn, look_for_hardregs, regs_set);
  	}
  
!       if (store_insn->fixed_regs_live)
! 	bitmap_and_into (regs_set, store_insn->fixed_regs_live);
        if (!bitmap_empty_p (regs_set))
  	{
  	  if (dump_file && (dump_flags & TDF_DETAILS))
*************** check_mem_read_rtx (rtx *loc, bb_info_t
*** 2199,2204 ****
--- 2199,2209 ----
      }
    if (maybe_ne (offset, 0))
      mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
+   /* Avoid passing VALUE RTXen as mem_addr to canon_true_dependence
+      which will over and over re-create proper RTL and re-apply the
+      offset above.  See PR80960 where we almost allocate 1.6GB of PLUS
+      RTXen that way.  */
+   mem_addr = get_addr (mem_addr);
  
    if (group_id >= 0)
      {
*************** check_mem_read_rtx (rtx *loc, bb_info_t
*** 2261,2267 ****
  						 offset - store_info->offset,
  						 width)
  		      && replace_read (store_info, i_ptr, read_info,
! 				       insn_info, loc, bb_info->regs_live))
  		    return;
  
  		  /* The bases are the same, just see if the offsets
--- 2266,2272 ----
  						 offset - store_info->offset,
  						 width)
  		      && replace_read (store_info, i_ptr, read_info,
! 				       insn_info, loc))
  		    return;
  
  		  /* The bases are the same, just see if the offsets
*************** check_mem_read_rtx (rtx *loc, bb_info_t
*** 2327,2334 ****
  				   store_info->width)
  	      && all_positions_needed_p (store_info,
  					 offset - store_info->offset, width)
! 	      && replace_read (store_info, i_ptr,  read_info, insn_info, loc,
! 			       bb_info->regs_live))
  	    return;
  
  	  remove = canon_true_dependence (store_info->mem,
--- 2332,2338 ----
  				   store_info->width)
  	      && all_positions_needed_p (store_info,
  					 offset - store_info->offset, width)
! 	      && replace_read (store_info, i_ptr,  read_info, insn_info, loc))
  	    return;
  
  	  remove = canon_true_dependence (store_info->mem,
diff -Nrcpad gcc-10.3.0/gcc/dwarf2out.c gcc-10.4.0/gcc/dwarf2out.c
*** gcc-10.3.0/gcc/dwarf2out.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/dwarf2out.c	Tue Jun 28 08:54:28 2022
*************** loc_list_from_tree_1 (tree loc, int want
*** 18928,18933 ****
--- 18928,18937 ----
      case FIX_TRUNC_EXPR:
        return 0;
  
+     case COMPOUND_LITERAL_EXPR:
+       return loc_list_from_tree_1 (COMPOUND_LITERAL_EXPR_DECL (loc),
+ 				   0, context);
+ 
      default:
        /* Leave front-end specific codes as simply unknown.  This comes
  	 up, for instance, with the C STMT_EXPR.  */
*************** field_byte_offset (const_tree decl, stru
*** 19160,19165 ****
--- 19164,19170 ----
       properly dynamic byte offsets only when PCC bitfield type doesn't
       matter.  */
    if (PCC_BITFIELD_TYPE_MATTERS
+       && DECL_BIT_FIELD_TYPE (decl)
        && TREE_CODE (DECL_FIELD_OFFSET (decl)) == INTEGER_CST)
      {
        offset_int object_offset_in_bits;
*************** gen_variable_die (tree decl, tree origin
*** 23943,23949 ****
  	      && DECL_RTL_SET_P (decl_or_origin))))
      {
        if (early_dwarf)
! 	add_pubname (decl_or_origin, var_die);
        else
  	add_location_or_const_value_attribute (var_die, decl_or_origin,
  					       decl == NULL);
--- 23948,23973 ----
  	      && DECL_RTL_SET_P (decl_or_origin))))
      {
        if (early_dwarf)
! 	{
! 	  add_pubname (decl_or_origin, var_die);
! 	  /* For global register variables, emit DW_AT_location if possible
! 	     already during early_dwarf, as late_global_decl won't be usually
! 	     called.  */
! 	  if (DECL_HARD_REGISTER (decl_or_origin)
! 	      && TREE_STATIC (decl_or_origin)
! 	      && !decl_by_reference_p (decl_or_origin)
! 	      && !get_AT (var_die, DW_AT_location)
! 	      && !get_AT (var_die, DW_AT_const_value)
! 	      && DECL_RTL_SET_P (decl_or_origin)
! 	      && REG_P (DECL_RTL (decl_or_origin)))
! 	    {
! 	      dw_loc_descr_ref descr
! 		= reg_loc_descriptor (DECL_RTL (decl_or_origin),
! 				      VAR_INIT_STATUS_INITIALIZED);
! 	      if (descr)
! 		add_AT_loc (var_die, DW_AT_location, descr);
! 	    }
! 	}
        else
  	add_location_or_const_value_attribute (var_die, decl_or_origin,
  					       decl == NULL);
diff -Nrcpad gcc-10.3.0/gcc/early-remat.c gcc-10.4.0/gcc/early-remat.c
*** gcc-10.3.0/gcc/early-remat.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/early-remat.c	Tue Jun 28 08:54:28 2022
*************** early_remat::sort_candidates (void)
*** 1059,1065 ****
  
    m_candidates.qsort (compare_candidates);
  
!   delete postorder_index;
  }
  
  /* Commit to the current candidate indices and initialize cross-references.  */
--- 1059,1065 ----
  
    m_candidates.qsort (compare_candidates);
  
!   delete[] postorder_index;
  }
  
  /* Commit to the current candidate indices and initialize cross-references.  */
diff -Nrcpad gcc-10.3.0/gcc/emit-rtl.c gcc-10.4.0/gcc/emit-rtl.c
*** gcc-10.3.0/gcc/emit-rtl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/emit-rtl.c	Tue Jun 28 08:54:28 2022
*************** bool
*** 5936,5941 ****
--- 5936,5942 ----
  valid_for_const_vector_p (machine_mode, rtx x)
  {
    return (CONST_SCALAR_INT_P (x)
+ 	  || CONST_POLY_INT_P (x)
  	  || CONST_DOUBLE_AS_FLOAT_P (x)
  	  || CONST_FIXED_P (x));
  }
diff -Nrcpad gcc-10.3.0/gcc/exec-tool.in gcc-10.4.0/gcc/exec-tool.in
*** gcc-10.3.0/gcc/exec-tool.in	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/exec-tool.in	Tue Jun 28 08:54:28 2022
*************** ORIGINAL_LD_BFD_FOR_TARGET="@ORIGINAL_LD
*** 25,30 ****
--- 25,31 ----
  ORIGINAL_LD_GOLD_FOR_TARGET="@ORIGINAL_LD_GOLD_FOR_TARGET@"
  ORIGINAL_PLUGIN_LD_FOR_TARGET="@ORIGINAL_PLUGIN_LD_FOR_TARGET@"
  ORIGINAL_NM_FOR_TARGET="@ORIGINAL_NM_FOR_TARGET@"
+ ORIGINAL_DSYMUTIL_FOR_TARGET="@ORIGINAL_DSYMUTIL_FOR_TARGET@"
  exeext=@host_exeext@
  fast_install=@enable_fast_install@
  objdir=@objdir@
*************** case "$invoked" in
*** 71,76 ****
--- 72,84 ----
      prog=nm-new$exeext
      dir=binutils
      ;;
+   dsymutil)
+     original=$ORIGINAL_DSYMUTIL_FOR_TARGET
+     # We do not build this in tree - but still want to be able to execute
+     # a configured version from the build dir.
+     prog=
+     dir=
+     ;;
  esac
  
  case "$original" in
diff -Nrcpad gcc-10.3.0/gcc/explow.c gcc-10.4.0/gcc/explow.c
*** gcc-10.3.0/gcc/explow.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/explow.c	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
  #include "recog.h"
  #include "diagnostic-core.h"
  #include "stor-layout.h"
+ #include "langhooks.h"
  #include "except.h"
  #include "dojump.h"
  #include "explow.h"
*************** set_stack_check_libfunc (const char *lib
*** 1614,1621 ****
  {
    gcc_assert (stack_check_libfunc == NULL_RTX);
    stack_check_libfunc = gen_rtx_SYMBOL_REF (Pmode, libfunc_name);
    tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL,
! 			  get_identifier (libfunc_name), void_type_node);
    DECL_EXTERNAL (decl) = 1;
    SET_SYMBOL_REF_DECL (stack_check_libfunc, decl);
  }
--- 1615,1628 ----
  {
    gcc_assert (stack_check_libfunc == NULL_RTX);
    stack_check_libfunc = gen_rtx_SYMBOL_REF (Pmode, libfunc_name);
+   tree ptype
+     = Pmode == ptr_mode
+       ? ptr_type_node
+       : lang_hooks.types.type_for_mode (Pmode, 1);
+   tree ftype
+     = build_function_type_list (void_type_node, ptype, NULL_TREE);
    tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL,
! 			  get_identifier (libfunc_name), ftype);
    DECL_EXTERNAL (decl) = 1;
    SET_SYMBOL_REF_DECL (stack_check_libfunc, decl);
  }
diff -Nrcpad gcc-10.3.0/gcc/expmed.c gcc-10.4.0/gcc/expmed.c
*** gcc-10.3.0/gcc/expmed.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/expmed.c	Tue Jun 28 08:54:28 2022
*************** store_integral_bit_field (rtx op0, opt_s
*** 917,923 ****
  	}
  
        subreg_off = bitnum / BITS_PER_UNIT;
!       if (validate_subreg (fieldmode, GET_MODE (arg0), arg0, subreg_off))
  	{
  	  arg0 = gen_rtx_SUBREG (fieldmode, arg0, subreg_off);
  
--- 917,926 ----
  	}
  
        subreg_off = bitnum / BITS_PER_UNIT;
!       if (validate_subreg (fieldmode, GET_MODE (arg0), arg0, subreg_off)
! 	  /* STRICT_LOW_PART must have a non-paradoxical subreg as
! 	     operand.  */
! 	  && !paradoxical_subreg_p (fieldmode, GET_MODE (arg0)))
  	{
  	  arg0 = gen_rtx_SUBREG (fieldmode, arg0, subreg_off);
  
diff -Nrcpad gcc-10.3.0/gcc/expr.c gcc-10.4.0/gcc/expr.c
*** gcc-10.3.0/gcc/expr.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/expr.c	Tue Jun 28 08:54:28 2022
*************** expand_expr_addr_expr_1 (tree exp, rtx t
*** 8050,8056 ****
  	 array with address of COMPOUND_LITERAL_EXPR in DECL_INITIAL;
  	 the initializers aren't gimplified.  */
        if (COMPOUND_LITERAL_EXPR_DECL (exp)
! 	  && TREE_STATIC (COMPOUND_LITERAL_EXPR_DECL (exp)))
  	return expand_expr_addr_expr_1 (COMPOUND_LITERAL_EXPR_DECL (exp),
  					target, tmode, modifier, as);
        /* FALLTHRU */
--- 8050,8056 ----
  	 array with address of COMPOUND_LITERAL_EXPR in DECL_INITIAL;
  	 the initializers aren't gimplified.  */
        if (COMPOUND_LITERAL_EXPR_DECL (exp)
! 	  && is_global_var (COMPOUND_LITERAL_EXPR_DECL (exp)))
  	return expand_expr_addr_expr_1 (COMPOUND_LITERAL_EXPR_DECL (exp),
  					target, tmode, modifier, as);
        /* FALLTHRU */
*************** expand_expr_real_2 (sepops ops, rtx targ
*** 9658,9663 ****
--- 9658,9664 ----
      case VEC_PACK_SAT_EXPR:
      case VEC_PACK_FIX_TRUNC_EXPR:
        mode = TYPE_MODE (TREE_TYPE (treeop0));
+       subtarget = NULL_RTX;
        goto binop;
  
      case VEC_PACK_TRUNC_EXPR:
*************** expand_expr_real_2 (sepops ops, rtx targ
*** 9681,9686 ****
--- 9682,9688 ----
  	  return eops[0].value;
  	}
        mode = TYPE_MODE (TREE_TYPE (treeop0));
+       subtarget = NULL_RTX;
        goto binop;
  
      case VEC_PACK_FLOAT_EXPR:
diff -Nrcpad gcc-10.3.0/gcc/fold-const.c gcc-10.4.0/gcc/fold-const.c
*** gcc-10.3.0/gcc/fold-const.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fold-const.c	Tue Jun 28 08:54:28 2022
*************** negate_expr_p (tree t)
*** 511,517 ****
        if (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST)
  	{
  	  tree op1 = TREE_OPERAND (t, 1);
! 	  if (wi::to_wide (op1) == TYPE_PRECISION (type) - 1)
  	    return true;
  	}
        break;
--- 511,517 ----
        if (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST)
  	{
  	  tree op1 = TREE_OPERAND (t, 1);
! 	  if (wi::to_wide (op1) == element_precision (type) - 1)
  	    return true;
  	}
        break;
*************** fold_negate_expr_1 (location_t loc, tree
*** 704,710 ****
        if (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST)
  	{
  	  tree op1 = TREE_OPERAND (t, 1);
! 	  if (wi::to_wide (op1) == TYPE_PRECISION (type) - 1)
  	    {
  	      tree ntype = TYPE_UNSIGNED (type)
  			   ? signed_type_for (type)
--- 704,710 ----
        if (TREE_CODE (TREE_OPERAND (t, 1)) == INTEGER_CST)
  	{
  	  tree op1 = TREE_OPERAND (t, 1);
! 	  if (wi::to_wide (op1) == element_precision (type) - 1)
  	    {
  	      tree ntype = TYPE_UNSIGNED (type)
  			   ? signed_type_for (type)
*************** const_binop (enum tree_code code, tree a
*** 1310,1315 ****
--- 1310,1326 ----
        real_convert (&result, mode, &value);
  
        /* Don't constant fold this floating point operation if
+ 	 both operands are not NaN but the result is NaN, and
+ 	 flag_trapping_math.  Such operations should raise an
+ 	 invalid operation exception.  */
+       if (flag_trapping_math
+ 	  && MODE_HAS_NANS (mode)
+ 	  && REAL_VALUE_ISNAN (result)
+ 	  && !REAL_VALUE_ISNAN (d1)
+ 	  && !REAL_VALUE_ISNAN (d2))
+ 	return NULL_TREE;
+ 
+       /* Don't constant fold this floating point operation if
  	 the result has overflowed and flag_trapping_math.  */
        if (flag_trapping_math
  	  && MODE_HAS_INFINITIES (mode)
*************** build_zero_vector (tree type)
*** 2350,2356 ****
  bool
  fold_convertible_p (const_tree type, const_tree arg)
  {
!   tree orig = TREE_TYPE (arg);
  
    if (type == orig)
      return true;
--- 2361,2367 ----
  bool
  fold_convertible_p (const_tree type, const_tree arg)
  {
!   const_tree orig = TREE_TYPE (arg);
  
    if (type == orig)
      return true;
*************** fold_convertible_p (const_tree type, con
*** 2382,2388 ****
        return (VECTOR_TYPE_P (orig)
  	      && known_eq (TYPE_VECTOR_SUBPARTS (type),
  			   TYPE_VECTOR_SUBPARTS (orig))
! 	      && fold_convertible_p (TREE_TYPE (type), TREE_TYPE (orig)));
  
      default:
        return false;
--- 2393,2399 ----
        return (VECTOR_TYPE_P (orig)
  	      && known_eq (TYPE_VECTOR_SUBPARTS (type),
  			   TYPE_VECTOR_SUBPARTS (orig))
! 	      && tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (orig)));
  
      default:
        return false;
*************** make_range_step (location_t loc, enum tr
*** 5108,5114 ****
  	n_high = fold_convert_loc (loc, arg0_type, n_high);
  
        /* If we're converting arg0 from an unsigned type, to exp,
! 	 a signed type,  we will be doing the comparison as unsigned.
  	 The tests above have already verified that LOW and HIGH
  	 are both positive.
  
--- 5119,5125 ----
  	n_high = fold_convert_loc (loc, arg0_type, n_high);
  
        /* If we're converting arg0 from an unsigned type, to exp,
! 	 a signed type, we will be doing the comparison as unsigned.
  	 The tests above have already verified that LOW and HIGH
  	 are both positive.
  
*************** make_range_step (location_t loc, enum tr
*** 5170,5175 ****
--- 5181,5212 ----
  	    }
  	}
  
+       /* Otherwise, if we are converting arg0 from signed type, to exp,
+ 	 an unsigned type, we will do the comparison as signed.  If
+ 	 high is non-NULL, we punt above if it doesn't fit in the signed
+ 	 type, so if we get through here, +[-, high] or +[low, high] are
+ 	 equivalent to +[-, n_high] or +[n_low, n_high].  Similarly,
+ 	 +[-, -] or -[-, -] are equivalent too.  But if low is specified and
+ 	 high is not, the +[low, -] range is equivalent to union of
+ 	 +[n_low, -] and +[-, -1] ranges, so +[low, -] is equivalent to
+ 	 -[0, n_low-1] and similarly -[low, -] to +[0, n_low-1], except for
+ 	 low being 0, which should be treated as [-, -].  */
+       else if (TYPE_UNSIGNED (exp_type)
+ 	       && !TYPE_UNSIGNED (arg0_type)
+ 	       && low
+ 	       && !high)
+ 	{
+ 	  if (integer_zerop (low))
+ 	    n_low = NULL_TREE;
+ 	  else
+ 	    {
+ 	      n_high = fold_build2_loc (loc, PLUS_EXPR, arg0_type,
+ 					n_low, build_int_cst (arg0_type, -1));
+ 	      n_low = build_zero_cst (arg0_type);
+ 	      in_p = !in_p;
+ 	    }
+ 	}
+ 
        *p_low = n_low;
        *p_high = n_high;
        *p_in_p = in_p;
*************** fold_unary_loc (location_t loc, enum tre
*** 8852,8859 ****
  	  tree arg00 = TREE_OPERAND (arg0, 0);
  	  tree arg01 = TREE_OPERAND (arg0, 1);
  
! 	  return fold_build_pointer_plus_loc
! 		   (loc, fold_convert_loc (loc, type, arg00), arg01);
  	}
  
        /* Convert (T1)(~(T2)X) into ~(T1)X if T1 and T2 are integral types
--- 8889,8906 ----
  	  tree arg00 = TREE_OPERAND (arg0, 0);
  	  tree arg01 = TREE_OPERAND (arg0, 1);
  
! 	  /* Avoid this optimization in GENERIC for -fsanitize=null
! 	     when type is a reference type and arg00's type is not,
! 	     because arg00 could be validly nullptr and if arg01 doesn't return,
! 	     we don't want false positive binding of reference to nullptr.  */
! 	  if (TREE_CODE (type) == REFERENCE_TYPE
! 	      && !in_gimple_form
! 	      && (flag_sanitize & SANITIZE_NULL) != 0
! 	      && TREE_CODE (TREE_TYPE (arg00)) != REFERENCE_TYPE)
! 	    return NULL_TREE;
! 
! 	  arg00 = fold_convert_loc (loc, type, arg00);
! 	  return fold_build_pointer_plus_loc (loc, arg00, arg01);
  	}
  
        /* Convert (T1)(~(T2)X) into ~(T1)X if T1 and T2 are integral types
*************** fold_read_from_vector (tree arg, poly_ui
*** 14692,14697 ****
--- 14739,14747 ----
  	return VECTOR_CST_ELT (arg, i);
        else if (TREE_CODE (arg) == CONSTRUCTOR)
  	{
+ 	  if (CONSTRUCTOR_NELTS (arg)
+ 	      && VECTOR_TYPE_P (TREE_TYPE (CONSTRUCTOR_ELT (arg, 0)->value)))
+ 	    return NULL_TREE;
  	  if (i >= CONSTRUCTOR_NELTS (arg))
  	    return build_zero_cst (TREE_TYPE (TREE_TYPE (arg)));
  	  return CONSTRUCTOR_ELT (arg, i)->value;
diff -Nrcpad gcc-10.3.0/gcc/fortran/ChangeLog gcc-10.4.0/gcc/fortran/ChangeLog
*** gcc-10.3.0/gcc/fortran/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/fortran/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,773 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-05-11  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/105230
+ 	* expr.c (find_array_section): Correct logic to avoid NULL
+ 	pointer dereference on invalid array section.
+ 
+ 2022-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-03-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104849
+ 	* expr.c (find_array_section): Avoid NULL pointer dereference on
+ 	invalid array section.
+ 
+ 2022-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-04-05  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/105138
+ 	* intrinsic.c (gfc_is_intrinsic): When a symbol refers to a
+ 	RECURSIVE procedure, it cannot be an INTRINSIC.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/103315
+ 	* trans-types.c (gfc_get_array_descr_info): Use DW_OP_deref_size 1
+ 	instead of DW_OP_deref for DW_AT_rank.
+ 
+ 2022-04-24  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/104228
+ 	PR fortran/104570
+ 	* parse.c (parse_associate): Use a new distinct gfc_charlen if
+ 	the copied type has one whose length is not known to be
+ 	constant.
+ 	* resolve.c (resolve_assoc_var): Also create a new character
+ 	length for non-dummy associate targets.  Reset charlen if it’s
+ 	shared with the associate target regardless of the expression
+ 	type.  Don’t reinitialize charlen if it’s deferred.
+ 	* trans-stmt.c (trans_associate_var): Initialize character
+ 	length even if no temporary is used for the associate variable.
+ 
+ 2022-04-21  Fritz Reese  <foreese@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2022-04-21  Fritz Reese  <foreese@gcc.gnu.org>
+ 
+ 	PR fortran/105310
+ 	* trans-expr.c (gfc_conv_union_initializer): Pass vec* by reference.
+ 
+ 2022-02-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-02-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104619
+ 	* resolve.c (resolve_structure_cons): Skip shape check if shape
+ 	of constructor cannot be determined at compile time.
+ 
+ 2022-02-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-02-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104311
+ 	* check.c (gfc_calculate_transfer_sizes): Checks for case when
+ 	storage size of SOURCE is greater than zero while the storage size
+ 	of MOLD is zero and MOLD is an array shall not depend on SIZE.
+ 
+ 2022-02-02  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-02-01  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104331
+ 	* simplify.c (gfc_simplify_eoshift): Avoid NULL pointer
+ 	dereference when shape is not set.
+ 
+ 2022-01-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-15  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/83079
+ 	* target-memory.c (gfc_interpret_character): Result length is
+ 	in bytes and thus depends on the character kind.
+ 	* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Compute correct
+ 	string length for the result of the TRANSFER intrinsic and for
+ 	temporaries for the different character kinds.
+ 
+ 2022-01-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104127
+ 	* simplify.c (gfc_simplify_transfer): Ensure that the result
+ 	typespec is set up for TRANSFER with MOLD of type CHARACTER
+ 	including character length even if the result is a zero-sized
+ 	array.
+ 
+ 2022-01-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104227
+ 	* check.c (gfc_calculate_transfer_sizes): Fix checking of arrays
+ 	passed as MOLD argument to the TRANSFER intrinsic for having
+ 	storage size zero.
+ 
+ 2022-01-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101762
+ 	* expr.c (gfc_check_pointer_assign): For pointer initialization
+ 	targets, check that subscripts and substring indices in
+ 	specifications are constant expressions.
+ 
+ 2022-01-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/67804
+ 	* primary.c (gfc_match_structure_constructor): Recover from errors
+ 	that occurred while checking for a valid structure constructor in
+ 	a DATA statement.
+ 
+ 2022-01-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103782
+ 	* expr.c (gfc_simplify_expr): Adjust logic for when to scalarize a
+ 	call of an intrinsic which may have been overloaded.
+ 
+ 2022-01-20  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103692
+ 	* array.c (gfc_expand_constructor): Handle zero-sized array
+ 	constructors.
+ 
+ 2022-01-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102332
+ 	* expr.c (gfc_get_variable_expr): Avoid NULL pointer dereferences
+ 	during handling of errors with invalid uses of CLASS variables.
+ 	* match.c (select_type_set_tmp): Likewise.
+ 	* primary.c (gfc_match_varspec): Likewise.
+ 	* resolve.c (resolve_variable): Likewise.
+ 	(resolve_select_type): Likewise.
+ 
+ 2022-01-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-05-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100551
+ 	* trans-expr.c (gfc_conv_procedure_call): Adjust check for
+ 	implicit conversion of actual argument to an unlimited polymorphic
+ 	procedure argument.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103418
+ 	* check.c (variable_check): Replace previous check of procedure
+ 	dummy arguments with INTENT(IN) attribute when passed to intrinsic
+ 	procedures by gfc_check_vardef_context.
+ 	* expr.c (gfc_check_vardef_context): Correct check of INTENT(IN)
+ 	dummy arguments for the case of sub-components of a CLASS pointer.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103778
+ 	* check.c (is_c_interoperable): A BOZ literal constant is not
+ 	interoperable.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-18  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/101329
+ 	* check.c (is_c_interoperable): Reject NULL() as it is not
+ 	interoperable.
+ 
+ 2021-12-19  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103588
+ 	* array.c (gfc_ref_dimen_size): Do not generate internal error on
+ 	failed simplification of stride expression; just return failure.
+ 
+ 2021-12-19  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-03  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/103505
+ 	* array.c (match_array_element_spec): Try to simplify array
+ 	element specifications to improve early checking.
+ 	* expr.c (gfc_try_simplify_expr): New.  Try simplification of an
+ 	expression via gfc_simplify_expr.  When an error occurs, roll
+ 	back.
+ 	* gfortran.h (gfc_try_simplify_expr): Declare it.
+ 
+ 2021-12-19  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103412
+ 	* check.c (gfc_check_sizeof): Reject BOZ type argument.
+ 
+ 2021-12-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-08  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103610
+ 	* array.c (spec_dimen_size): Fix simplification of SHAPE:
+ 	dimensions must be non-negative.
+ 
+ 2021-12-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103606
+ 	* resolve.c (resolve_fl_procedure): Do not access CLASS components
+ 	before class container has been built.
+ 
+ 2021-12-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103717
+ 	* frontend-passes.c (doloop_code): Prevent NULL pointer
+ 	dereference when checking for passing a do-loop variable to a
+ 	contained procedure with an interface mismatch.
+ 
+ 2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102787
+ 	* array.c (expand_constructor): When encountering a constant array
+ 	expression or array section within a constructor, simplify it to
+ 	enable better expansion.
+ 
+ 2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102717
+ 	* simplify.c (gfc_simplify_reshape): Replace assert by error
+ 	message for negative elements in SHAPE array.
+ 
+ 2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103411
+ 	* check.c (gfc_check_reshape): Improve check of size of source
+ 	array for the RESHAPE intrinsic against the given shape when pad
+ 	is not given, and shape is a parameter.  Try other simplifications
+ 	of shape.
+ 
+ 2021-12-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103607
+ 	* frontend-passes.c (do_subscript): Ensure that array bounds are
+ 	of type INTEGER before performing checks on array subscripts.
+ 
+ 2021-11-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103392
+ 	* simplify.c (simplify_bound): Do not try to simplify
+ 	LBOUND/UBOUND for arrays with POINTER or ALLOCATABLE attribute.
+ 
+ 2021-11-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-21  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/99061
+ 	* trans-intrinsic.c (gfc_lookup_intrinsic): Helper function for
+ 	looking up gfortran builtin intrinsics.
+ 	(gfc_conv_intrinsic_atrigd): Use it.
+ 	(gfc_conv_intrinsic_cotan): Likewise.
+ 	(gfc_conv_intrinsic_cotand): Likewise.
+ 	(gfc_conv_intrinsic_atan2d): Likewise.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103137
+ 	PR fortran/103138
+ 	* check.c (gfc_check_shape): Avoid NULL pointer dereference on
+ 	missing ref.
+ 	* simplify.c (gfc_simplify_cshift): Avoid NULL pointer dereference
+ 	when shape not set.
+ 	(gfc_simplify_transpose): Likewise.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102816
+ 	* resolve.c (resolve_structure_cons): Reject invalid array spec of
+ 	a DT component referenced in a structure constructor.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-15  Harald Anlauf  <anlauf@gmx.de>
+ 		    Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/102685
+ 	* decl.c (match_clist_expr): Set rank/shape of clist initializer
+ 	to match LHS.
+ 	* resolve.c (resolve_structure_cons): In a structure constructor,
+ 	compare shapes of array components against declared shape.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102715
+ 	* decl.c (add_init_expr_to_sym): Reject rank mismatch between
+ 	array and its initializer.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102817
+ 	* expr.c (simplify_parameter_variable): Copy shape of referenced
+ 	subobject when simplifying.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/99348
+ 	PR fortran/102521
+ 	* decl.c (add_init_expr_to_sym): Extend initialization of
+ 	parameter arrays from scalars to handle derived types.
+ 
+ 2021-10-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102716
+ 	* check.c (gfc_check_shape): Reorder checks so that invalid KIND
+ 	arguments can be detected.
+ 
+ 2021-10-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102458
+ 	* simplify.c (simplify_size): Resolve expressions used in array
+ 	specifications so that SIZE can be simplified.
+ 
+ 2021-10-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102458
+ 	* expr.c (is_non_constant_intrinsic): Check for intrinsics
+ 	excluded in constant expressions (F2018:10.1.12).
+ 	(gfc_is_constant_expr): Use that check.
+ 
+ 2021-09-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/82314
+ 	* decl.c (add_init_expr_to_sym): For proper initialization of
+ 	array-valued named constants the array bounds need to be
+ 	simplified before adding the initializer.
+ 
+ 2021-09-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102520
+ 	* array.c (expand_constructor): Do not dereference NULL pointer.
+ 
+ 2021-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/85130
+ 	* expr.c (find_substring_ref): Handle given substring start and
+ 	end indices as signed integers, not unsigned.
+ 
+ 2021-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102287
+ 	* trans-expr.c (gfc_conv_procedure_call): Wrap deallocation of
+ 	allocatable components of optional allocatable derived type
+ 	procedure arguments with INTENT(OUT) into a presence check.
+ 
+ 2021-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102366
+ 	* trans-decl.c (gfc_finish_var_decl): Disable the warning message
+ 	for variables moved from stack to static storange if they are
+ 	declared in the main, but allow the move to happen.
+ 
+ 2021-09-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101327
+ 	* expr.c (find_array_element): When bounds cannot be determined as
+ 	constant, return error instead of aborting.
+ 
+ 2021-09-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/98490
+ 	* trans-expr.c (gfc_conv_substring): Do not generate substring
+ 	bounds check for implied do loop index variable before it actually
+ 	becomes defined.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2020-12-29  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/97612
+ 	* primary.c (build_actual_constructor): Missing allocatable
+ 	components are set unallocated using EXPR_NULL. Then missing
+ 	components are tested for a default initializer.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-22  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/98565
+ 	* trans-intrinsic.c (gfc_conv_associated): Do not add a _data
+ 	component for scalar class function targets. Instead, fix the
+ 	function result and access the _data from that.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2020-12-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/97694
+ 	PR fortran/97723
+ 	* check.c (allocatable_check): Select rank temporaries are
+ 	permitted even though they are treated as associate variables.
+ 	* resolve.c (gfc_resolve_code): Break on select rank as well as
+ 	select type so that the block os resolved.
+ 	* trans-stmt.c (trans_associate_var): Class associate variables
+ 	that are optional dummies must use the backend_decl.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93701
+ 	* resolve.c (find_array_spec): Put static prototype for
+ 	resolve_assoc_var before this function and call for associate
+ 	variables.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/98472
+ 	* trans-array.c (gfc_conv_expr_descriptor): Include elemental
+ 	procedure pointers in the assert under the comment 'elemental
+ 	function' and eliminate the second, spurious assert.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-04-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/100110
+ 	* trans-decl.c (gfc_get_symbol_decl): Replace test for host
+ 	association with a check that the current and symbol namespaces
+ 	are the same.
+ 
+ 2021-08-30  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-05-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/46691
+ 	PR fortran/99819
+ 	* class.c (gfc_build_class_symbol): Remove the error that
+ 	disables assumed size class arrays. Class array types that are
+ 	not deferred shape or assumed rank are given a unique name and
+ 	placed in the procedure namespace.
+ 	* trans-array.c (gfc_trans_g77_array): Obtain the data pointer
+ 	for class arrays.
+ 	(gfc_trans_dummy_array_bias): Suppress the runtime error for
+ 	extent violations in explicit shape class arrays because it
+ 	always fails.
+ 	* trans-expr.c (gfc_conv_procedure_call): Handle assumed size
+ 	class actual arguments passed to non-descriptor formal args by
+ 	using the data pointer, stored as the symbol's backend decl.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-04-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/99818
+ 	* interface.c (compare_parameter): The codimension attribute is
+ 	applied to the _data field of class formal arguments.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93924
+ 	PR fortran/93925
+ 	* trans-expr.c (gfc_conv_procedure_call): Suppress the call to
+ 	gfc_conv_intrinsic_to_class for unlimited polymorphic procedure
+ 	pointers.
+ 	(gfc_trans_assignment_1): Similarly suppress class assignment
+ 	for class valued procedure pointers.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93794
+ 	* trans-expr.c (gfc_conv_component_ref): Remove the condition
+ 	that deferred character length components only be allocatable.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-03-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/99125
+ 	* trans-array.c (gfc_conv_expr_descriptor): For deferred length
+ 	length components use the ss_info string length instead of
+ 	gfc_get_expr_charlen. Make sure that the deferred string length
+ 	is a variable before assigning to it. Otherwise use the expr.
+ 	* trans-expr.c (gfc_conv_string_length): Make sure that the
+ 	deferred string length is a variable before assigning to it.
+ 
+ 2021-08-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-08-24  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/98411
+ 	* trans-decl.c (gfc_finish_var_decl): Adjust check to handle
+ 	implicit SAVE as well as variables in the main program.  Improve
+ 	warning message text.
+ 
+ 2021-07-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101514
+ 	* target-memory.c (gfc_interpret_derived): Size of array component
+ 	of derived type can only be computed here for explicit shape.
+ 	* trans-types.c (gfc_get_nodesc_array_type): Do not dereference
+ 	NULL pointers.
+ 
+ 2021-07-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101536
+ 	* check.c (array_check): Adjust check for the case of CLASS
+ 	arrays.
+ 
+ 2021-07-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101084
+ 	* io.c (resolve_tag_format): Extend FORMAT check to unknown type.
+ 
+ 2021-07-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100949
+ 	* trans-expr.c (gfc_trans_class_init_assign): Call
+ 	gfc_conv_expr_present only for dummy variables.
+ 
+ 2021-07-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-07-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/100227
+ 	* frontend-passes.c (traverse_io_block): Adjust test for
+ 	when a variable is eligible for the transformation to
+ 	array slice.
+ 
+ 2021-06-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-06-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/95501
+ 	PR fortran/95502
+ 	* expr.c (gfc_check_pointer_assign): Avoid NULL pointer
+ 	dereference.
+ 	* match.c (gfc_match_pointer_assignment): Likewise.
+ 	* parse.c (gfc_check_do_variable): Avoid comparison with NULL
+ 	symtree.
+ 
+ 2021-06-16  José Rui Faustino de Sousa  <jrfsousa@gmail.com>
+ 
+ 	PR fortran/82376
+ 	* trans-expr.c (gfc_conv_procedure_call): Evaluate function result
+ 	and then pass a pointer.
+ 
+ 2021-06-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-06-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/99839
+ 	* frontend-passes.c (inline_matmul_assign): Do not inline matmul
+ 	if the assignment to the resulting array if it is not of canonical
+ 	type (real/integer/complex/logical).
+ 
+ 2021-05-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-05-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/98411
+ 	* trans-decl.c (gfc_finish_var_decl): Add check for explicit SAVE
+ 	attribute.
+ 
+ 2021-05-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-05-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100274
+ 	* interface.c (gfc_compare_actual_formal): Continue checks after
+ 	emitting warning for argument length mismatch.
+ 	* trans-expr.c (gfc_conv_procedure_call): Check for NULL pointer
+ 	dereference.
+ 
+ 2021-04-29  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* openmp.c (gfc_match_omp_variable_list): Gobble whitespace before
+ 	checking whether a '%' or parenthesis-open follows as next character.
+ 
+ 2021-04-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-04-24  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100154
+ 	* check.c (variable_check): Allow function reference having a data
+ 	pointer result.
+ 	(arg_strlen_is_zero): New function.
+ 	(gfc_check_fgetputc_sub): Add static check of character and status
+ 	arguments.
+ 	(gfc_check_fgetput_sub): Likewise.
+ 	* intrinsic.c (add_subroutines): Fix argument name for the
+ 	character argument to intrinsic subroutines fget[c], fput[c].
+ 
+ 2021-04-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-04-16  Harald Anlauf  <anlauf@gmx.de>
+ 		    Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/63797
+ 	* module.c (write_symtree): Do not write interface of intrinsic
+ 	procedure to module file for F2003 and newer.
+ 
+ 2021-04-12  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/99817
+ 	* trans-types.c (gfc_get_function_type): Also generate hidden
+ 	coarray argument for character arguments.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/fortran/array.c gcc-10.4.0/gcc/fortran/array.c
*** gcc-10.3.0/gcc/fortran/array.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/array.c	Tue Jun 28 08:54:28 2022
*************** match_array_element_spec (gfc_array_spec
*** 492,497 ****
--- 492,499 ----
    if (!gfc_expr_check_typed (*upper, gfc_current_ns, false))
      return AS_UNKNOWN;
  
+   gfc_try_simplify_expr (*upper, 0);
+ 
    if (((*upper)->expr_type == EXPR_CONSTANT
  	&& (*upper)->ts.type != BT_INTEGER) ||
        ((*upper)->expr_type == EXPR_FUNCTION
*************** match_array_element_spec (gfc_array_spec
*** 524,529 ****
--- 526,533 ----
    if (!gfc_expr_check_typed (*upper, gfc_current_ns, false))
      return AS_UNKNOWN;
  
+   gfc_try_simplify_expr (*upper, 0);
+ 
    if (((*upper)->expr_type == EXPR_CONSTANT
  	&& (*upper)->ts.type != BT_INTEGER) ||
        ((*upper)->expr_type == EXPR_FUNCTION
*************** expand_constructor (gfc_constructor_base
*** 1798,1806 ****
--- 1802,1819 ----
  
        e = c->expr;
  
+       if (e == NULL)
+ 	return false;
+ 
        if (empty_constructor)
  	empty_ts = e->ts;
  
+       /* Simplify constant array expression/section within constructor.  */
+       if (e->expr_type == EXPR_VARIABLE && e->rank > 0 && e->ref
+ 	  && e->symtree && e->symtree->n.sym
+ 	  && e->symtree->n.sym->attr.flavor == FL_PARAMETER)
+ 	gfc_simplify_expr (e, 0);
+ 
        if (e->expr_type == EXPR_ARRAY)
  	{
  	  if (!expand_constructor (e->value.constructor))
*************** gfc_expand_constructor (gfc_expr *e, boo
*** 1870,1875 ****
--- 1883,1891 ----
    gfc_expr *f;
    bool rc;
  
+   if (gfc_is_size_zero_array (e))
+     return true;
+ 
    /* If we can successfully get an array element at the max array size then
       the array is too big to expand, so we just return.  */
    f = gfc_get_array_element (e, flag_max_array_constructor);
*************** gfc_copy_iterator (gfc_iterator *src)
*** 2283,2290 ****
  /********* Subroutines for determining the size of an array *********/
  
  /* These are needed just to accommodate RESHAPE().  There are no
!    diagnostics here, we just return a negative number if something
!    goes wrong.  */
  
  
  /* Get the size of single dimension of an array specification.  The
--- 2299,2305 ----
  /********* Subroutines for determining the size of an array *********/
  
  /* These are needed just to accommodate RESHAPE().  There are no
!    diagnostics here, we just return false if something goes wrong.  */
  
  
  /* Get the size of single dimension of an array specification.  The
*************** spec_dimen_size (gfc_array_spec *as, int
*** 2317,2322 ****
--- 2332,2340 ----
  
    mpz_add_ui (*result, *result, 1);
  
+   if (mpz_cmp_si (*result, 0) < 0)
+     mpz_set_si (*result, 0);
+ 
    return true;
  }
  
*************** gfc_ref_dimen_size (gfc_array_ref *ar, i
*** 2390,2401 ****
  	{
  	  stride_expr = gfc_copy_expr(ar->stride[dimen]); 
  
! 	  if(!gfc_simplify_expr(stride_expr, 1))
! 	    gfc_internal_error("Simplification error");
! 
! 	  if (stride_expr->expr_type != EXPR_CONSTANT
! 	      || mpz_cmp_ui (stride_expr->value.integer, 0) == 0)
  	    {
  	      mpz_clear (stride);
  	      return false;
  	    }
--- 2408,2418 ----
  	{
  	  stride_expr = gfc_copy_expr(ar->stride[dimen]); 
  
! 	  if (!gfc_simplify_expr (stride_expr, 1)
! 	     || stride_expr->expr_type != EXPR_CONSTANT
! 	     || mpz_cmp_ui (stride_expr->value.integer, 0) == 0)
  	    {
+ 	      gfc_free_expr (stride_expr);
  	      mpz_clear (stride);
  	      return false;
  	    }
diff -Nrcpad gcc-10.3.0/gcc/fortran/check.c gcc-10.4.0/gcc/fortran/check.c
*** gcc-10.3.0/gcc/fortran/check.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/check.c	Tue Jun 28 08:54:28 2022
*************** bin2real (gfc_expr *x, int kind)
*** 289,295 ****
  }
  
  
! /* Fortran 2018 treats a BOZ as simply a string of bits.  gfc_boz2real () 
     converts the string into a REAL of the appropriate kind.  The treatment
     of the sign bit is processor dependent.  */
  
--- 289,295 ----
  }
  
  
! /* Fortran 2018 treats a BOZ as simply a string of bits.  gfc_boz2real ()
     converts the string into a REAL of the appropriate kind.  The treatment
     of the sign bit is processor dependent.  */
  
*************** gfc_boz2real (gfc_expr *x, int kind)
*** 377,388 ****
  }
  
  
! /* Fortran 2018 treats a BOZ as simply a string of bits.  gfc_boz2int () 
     converts the string into an INTEGER of the appropriate kind.  The
     treatment of the sign bit is processor dependent.  If the  converted
     value exceeds the range of the type, then wrap-around semantics are
     applied.  */
!  
  bool
  gfc_boz2int (gfc_expr *x, int kind)
  {
--- 377,388 ----
  }
  
  
! /* Fortran 2018 treats a BOZ as simply a string of bits.  gfc_boz2int ()
     converts the string into an INTEGER of the appropriate kind.  The
     treatment of the sign bit is processor dependent.  If the  converted
     value exceeds the range of the type, then wrap-around semantics are
     applied.  */
! 
  bool
  gfc_boz2int (gfc_expr *x, int kind)
  {
*************** logical_array_check (gfc_expr *array, in
*** 731,742 ****
  static bool
  array_check (gfc_expr *e, int n)
  {
!   if (e->ts.type == BT_CLASS && gfc_expr_attr (e).class_ok
  	&& CLASS_DATA (e)->attr.dimension
  	&& CLASS_DATA (e)->as->rank)
      {
        gfc_add_class_array_ref (e);
-       return true;
      }
  
    if (e->rank != 0 && e->ts.type != BT_PROCEDURE)
--- 731,741 ----
  static bool
  array_check (gfc_expr *e, int n)
  {
!   if (e->rank != 0 && e->ts.type == BT_CLASS && gfc_expr_attr (e).class_ok
  	&& CLASS_DATA (e)->attr.dimension
  	&& CLASS_DATA (e)->as->rank)
      {
        gfc_add_class_array_ref (e);
      }
  
    if (e->rank != 0 && e->ts.type != BT_PROCEDURE)
*************** allocatable_check (gfc_expr *e, int n)
*** 975,981 ****
    symbol_attribute attr;
  
    attr = gfc_variable_attr (e, NULL);
!   if (!attr.allocatable || attr.associate_var)
      {
        gfc_error ("%qs argument of %qs intrinsic at %L must be ALLOCATABLE",
  		 gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic,
--- 974,981 ----
    symbol_attribute attr;
  
    attr = gfc_variable_attr (e, NULL);
!   if (!attr.allocatable
!      || (attr.associate_var && !attr.select_rank_temporary))
      {
        gfc_error ("%qs argument of %qs intrinsic at %L must be ALLOCATABLE",
  		 gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic,
*************** variable_check (gfc_expr *e, int n, bool
*** 1011,1043 ****
    if (e->expr_type == EXPR_VARIABLE
        && e->symtree->n.sym->attr.intent == INTENT_IN
        && (gfc_current_intrinsic_arg[n]->intent == INTENT_OUT
! 	  || gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT))
      {
!       gfc_ref *ref;
!       bool pointer = e->symtree->n.sym->ts.type == BT_CLASS
! 		     && CLASS_DATA (e->symtree->n.sym)
! 		     ? CLASS_DATA (e->symtree->n.sym)->attr.class_pointer
! 		     : e->symtree->n.sym->attr.pointer;
! 
!       for (ref = e->ref; ref; ref = ref->next)
! 	{
! 	  if (pointer && ref->type == REF_COMPONENT)
! 	    break;
! 	  if (ref->type == REF_COMPONENT
! 	      && ((ref->u.c.component->ts.type == BT_CLASS
! 		   && CLASS_DATA (ref->u.c.component)->attr.class_pointer)
! 		  || (ref->u.c.component->ts.type != BT_CLASS
! 		      && ref->u.c.component->attr.pointer)))
! 	    break;
! 	}
! 
!       if (!ref)
! 	{
! 	  gfc_error ("%qs argument of %qs intrinsic at %L cannot be "
! 		     "INTENT(IN)", gfc_current_intrinsic_arg[n]->name,
! 		     gfc_current_intrinsic, &e->where);
! 	  return false;
! 	}
      }
  
    if (e->expr_type == EXPR_VARIABLE
--- 1011,1023 ----
    if (e->expr_type == EXPR_VARIABLE
        && e->symtree->n.sym->attr.intent == INTENT_IN
        && (gfc_current_intrinsic_arg[n]->intent == INTENT_OUT
! 	  || gfc_current_intrinsic_arg[n]->intent == INTENT_INOUT)
!       && !gfc_check_vardef_context (e, false, true, false, NULL))
      {
!       gfc_error ("%qs argument of %qs intrinsic at %L cannot be INTENT(IN)",
! 		 gfc_current_intrinsic_arg[n]->name,
! 		 gfc_current_intrinsic, &e->where);
!       return false;
      }
  
    if (e->expr_type == EXPR_VARIABLE
*************** variable_check (gfc_expr *e, int n, bool
*** 1054,1059 ****
--- 1034,1046 ----
  	  return true;
      }
  
+   /* F2018:R902: function reference having a data pointer result.  */
+   if (e->expr_type == EXPR_FUNCTION
+       && e->symtree->n.sym->attr.flavor == FL_PROCEDURE
+       && e->symtree->n.sym->attr.function
+       && e->symtree->n.sym->attr.pointer)
+     return true;
+ 
    gfc_error ("%qs argument of %qs intrinsic at %L must be a variable",
  	     gfc_current_intrinsic_arg[n]->name, gfc_current_intrinsic, &e->where);
  
*************** gfc_check_intconv (gfc_expr *x)
*** 3230,3236 ****
        || strcmp (gfc_current_intrinsic, "long") == 0)
      {
        gfc_error ("%qs intrinsic subprogram at %L has been deprecated.  "
! 		 "Use INT intrinsic subprogram.", gfc_current_intrinsic, 
  		 &x->where);
        return false;
      }
--- 3217,3223 ----
        || strcmp (gfc_current_intrinsic, "long") == 0)
      {
        gfc_error ("%qs intrinsic subprogram at %L has been deprecated.  "
! 		 "Use INT intrinsic subprogram.", gfc_current_intrinsic,
  		 &x->where);
        return false;
      }
*************** gfc_check_findloc (gfc_actual_arglist *a
*** 3958,3964 ****
    /* Check the kind of the characters argument match.  */
    if (a1 && v1 && a->ts.kind != v->ts.kind)
      goto incompat;
! 	 
    d = ap->next->next->expr;
    m = ap->next->next->next->expr;
    k = ap->next->next->next->next->expr;
--- 3945,3951 ----
    /* Check the kind of the characters argument match.  */
    if (a1 && v1 && a->ts.kind != v->ts.kind)
      goto incompat;
! 
    d = ap->next->next->expr;
    m = ap->next->next->next->expr;
    k = ap->next->next->next->next->expr;
*************** gfc_check_reshape (gfc_expr *source, gfc
*** 4681,4686 ****
--- 4668,4674 ----
    mpz_t size;
    mpz_t nelems;
    int shape_size;
+   bool shape_is_const;
  
    if (!array_check (source, 0))
      return false;
*************** gfc_check_reshape (gfc_expr *source, gfc
*** 4714,4720 ****
  		 "than %d elements", &shape->where, GFC_MAX_DIMENSIONS);
        return false;
      }
!   else if (shape->expr_type == EXPR_ARRAY && gfc_is_constant_expr (shape))
      {
        gfc_expr *e;
        int i, extent;
--- 4702,4712 ----
  		 "than %d elements", &shape->where, GFC_MAX_DIMENSIONS);
        return false;
      }
! 
!   gfc_simplify_expr (shape, 0);
!   shape_is_const = gfc_is_constant_expr (shape);
! 
!   if (shape->expr_type == EXPR_ARRAY && shape_is_const)
      {
        gfc_expr *e;
        int i, extent;
*************** gfc_check_reshape (gfc_expr *source, gfc
*** 4730,4767 ****
  	      gfc_error ("%qs argument of %qs intrinsic at %L has "
  			 "negative element (%d)",
  			 gfc_current_intrinsic_arg[1]->name,
! 			 gfc_current_intrinsic, &e->where, extent);
! 	      return false;
! 	    }
! 	}
!     }
!   else if (shape->expr_type == EXPR_VARIABLE && shape->ref
! 	   && shape->ref->u.ar.type == AR_FULL && shape->ref->u.ar.dimen == 1
! 	   && shape->ref->u.ar.as
! 	   && shape->ref->u.ar.as->lower[0]->expr_type == EXPR_CONSTANT
! 	   && shape->ref->u.ar.as->lower[0]->ts.type == BT_INTEGER
! 	   && shape->ref->u.ar.as->upper[0]->expr_type == EXPR_CONSTANT
! 	   && shape->ref->u.ar.as->upper[0]->ts.type == BT_INTEGER
! 	   && shape->symtree->n.sym->attr.flavor == FL_PARAMETER
! 	   && shape->symtree->n.sym->value)
!     {
!       int i, extent;
!       gfc_expr *e, *v;
! 
!       v = shape->symtree->n.sym->value;
! 
!       for (i = 0; i < shape_size; i++)
! 	{
! 	  e = gfc_constructor_lookup_expr (v->value.constructor, i);
! 	  if (e == NULL)
! 	     break;
! 
! 	  gfc_extract_int (e, &extent);
! 
! 	  if (extent < 0)
! 	    {
! 	      gfc_error ("Element %d of actual argument of RESHAPE at %L "
! 			 "cannot be negative", i + 1, &shape->where);
  	      return false;
  	    }
  	}
--- 4722,4728 ----
  	      gfc_error ("%qs argument of %qs intrinsic at %L has "
  			 "negative element (%d)",
  			 gfc_current_intrinsic_arg[1]->name,
! 			 gfc_current_intrinsic, &shape->where, extent);
  	      return false;
  	    }
  	}
*************** gfc_check_reshape (gfc_expr *source, gfc
*** 4838,4845 ****
  	}
      }
  
!   if (pad == NULL && shape->expr_type == EXPR_ARRAY
!       && gfc_is_constant_expr (shape)
        && !(source->expr_type == EXPR_VARIABLE && source->symtree->n.sym->as
  	   && source->symtree->n.sym->as->type == AS_ASSUMED_SIZE))
      {
--- 4799,4805 ----
  	}
      }
  
!   if (pad == NULL && shape->expr_type == EXPR_ARRAY && shape_is_const
        && !(source->expr_type == EXPR_VARIABLE && source->symtree->n.sym->as
  	   && source->symtree->n.sym->as->type == AS_ASSUMED_SIZE))
      {
*************** gfc_check_shape (gfc_expr *source, gfc_e
*** 5068,5076 ****
--- 5028,5046 ----
    if (gfc_invalid_null_arg (source))
      return false;
  
+   if (!kind_check (kind, 1, BT_INTEGER))
+     return false;
+   if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic "
+ 			       "with KIND argument at %L",
+ 			       gfc_current_intrinsic, &kind->where))
+     return false;
+ 
    if (source->rank == 0 || source->expr_type != EXPR_VARIABLE)
      return true;
  
+   if (source->ref == NULL)
+     return false;
+ 
    ar = gfc_find_array_ref (source);
  
    if (ar->as && ar->as->type == AS_ASSUMED_SIZE && ar->type == AR_FULL)
*************** gfc_check_shape (gfc_expr *source, gfc_e
*** 5080,5092 ****
        return false;
      }
  
-   if (!kind_check (kind, 1, BT_INTEGER))
-     return false;
-   if (kind && !gfc_notify_std (GFC_STD_F2003, "%qs intrinsic "
- 			       "with KIND argument at %L",
- 			       gfc_current_intrinsic, &kind->where))
-     return false;
- 
    return true;
  }
  
--- 5050,5055 ----
*************** gfc_check_sizeof (gfc_expr *arg)
*** 5161,5166 ****
--- 5124,5132 ----
        return false;
      }
  
+   if (illegal_boz_arg (arg))
+     return false;
+ 
    /* TYPE(*) is acceptable if and only if it uses an array descriptor.  */
    if (arg->ts.type == BT_ASSUMED
        && (arg->symtree->n.sym->as == NULL
*************** is_c_interoperable (gfc_expr *expr, cons
*** 5202,5207 ****
--- 5168,5185 ----
  {
    *msg = NULL;
  
+   if (expr->expr_type == EXPR_NULL)
+     {
+       *msg = "NULL() is not interoperable";
+       return false;
+     }
+ 
+   if (expr->ts.type == BT_BOZ)
+     {
+       *msg = "BOZ literal constant";
+       return false;
+     }
+ 
    if (expr->ts.type == BT_CLASS)
      {
        *msg = "Expression is polymorphic";
*************** gfc_check_spread (gfc_expr *source, gfc_
*** 5682,5687 ****
--- 5660,5678 ----
     functions).  */
  
  bool
+ arg_strlen_is_zero (gfc_expr *c, int n)
+ {
+   if (gfc_var_strlen (c) == 0)
+     {
+       gfc_error ("%qs argument of %qs intrinsic at %L must have "
+ 		 "length at least 1", gfc_current_intrinsic_arg[n]->name,
+ 		 gfc_current_intrinsic, &c->where);
+       return true;
+     }
+   return false;
+ }
+ 
+ bool
  gfc_check_fgetputc_sub (gfc_expr *unit, gfc_expr *c, gfc_expr *status)
  {
    if (!type_check (unit, 0, BT_INTEGER))
*************** gfc_check_fgetputc_sub (gfc_expr *unit,
*** 5694,5706 ****
      return false;
    if (!kind_value_check (c, 1, gfc_default_character_kind))
      return false;
  
    if (status == NULL)
      return true;
  
    if (!type_check (status, 2, BT_INTEGER)
        || !kind_value_check (status, 2, gfc_default_integer_kind)
!       || !scalar_check (status, 2))
      return false;
  
    return true;
--- 5685,5703 ----
      return false;
    if (!kind_value_check (c, 1, gfc_default_character_kind))
      return false;
+   if (strcmp (gfc_current_intrinsic, "fgetc") == 0
+       && !variable_check (c, 1, false))
+     return false;
+   if (arg_strlen_is_zero (c, 1))
+     return false;
  
    if (status == NULL)
      return true;
  
    if (!type_check (status, 2, BT_INTEGER)
        || !kind_value_check (status, 2, gfc_default_integer_kind)
!       || !scalar_check (status, 2)
!       || !variable_check (status, 2, false))
      return false;
  
    return true;
*************** gfc_check_fgetput_sub (gfc_expr *c, gfc_
*** 5721,5733 ****
      return false;
    if (!kind_value_check (c, 0, gfc_default_character_kind))
      return false;
  
    if (status == NULL)
      return true;
  
    if (!type_check (status, 1, BT_INTEGER)
        || !kind_value_check (status, 1, gfc_default_integer_kind)
!       || !scalar_check (status, 1))
      return false;
  
    return true;
--- 5718,5736 ----
      return false;
    if (!kind_value_check (c, 0, gfc_default_character_kind))
      return false;
+   if (strcmp (gfc_current_intrinsic, "fget") == 0
+       && !variable_check (c, 0, false))
+     return false;
+   if (arg_strlen_is_zero (c, 0))
+     return false;
  
    if (status == NULL)
      return true;
  
    if (!type_check (status, 1, BT_INTEGER)
        || !kind_value_check (status, 1, gfc_default_integer_kind)
!       || !scalar_check (status, 1)
!       || !variable_check (status, 1, false))
      return false;
  
    return true;
*************** gfc_calculate_transfer_sizes (gfc_expr *
*** 6123,6130 ****
     * representation is not shorter than that of SOURCE.
     * If SIZE is present, the result is an array of rank one and size SIZE.
     */
!   if (result_elt_size == 0 && *source_size > 0 && !size
!       && mold->expr_type == EXPR_ARRAY)
      {
        gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an "
  		 "array and shall not have storage size 0 when %<SOURCE%> "
--- 6126,6133 ----
     * representation is not shorter than that of SOURCE.
     * If SIZE is present, the result is an array of rank one and size SIZE.
     */
!   if (result_elt_size == 0 && *source_size > 0
!       && (mold->expr_type == EXPR_ARRAY || mold->rank))
      {
        gfc_error ("%<MOLD%> argument of %<TRANSFER%> intrinsic at %L is an "
  		 "array and shall not have storage size 0 when %<SOURCE%> "
diff -Nrcpad gcc-10.3.0/gcc/fortran/class.c gcc-10.4.0/gcc/fortran/class.c
*** gcc-10.3.0/gcc/fortran/class.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/class.c	Tue Jun 28 08:54:28 2022
*************** gfc_get_len_component (gfc_expr *e, int
*** 628,633 ****
--- 628,634 ----
     component '_vptr' which determines the dynamic type.  When this CLASS
     entity is unlimited polymorphic, then also add a component '_len' to
     store the length of string when that is stored in it.  */
+ static int ctr = 0;
  
  bool
  gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
*************** gfc_build_class_symbol (gfc_typespec *ts
*** 643,655 ****
  
    gcc_assert (as);
  
-   if (*as && (*as)->type == AS_ASSUMED_SIZE)
-     {
-       gfc_error ("Assumed size polymorphic objects or components, such "
- 		 "as that at %C, have not yet been implemented");
-       return false;
-     }
- 
    if (attr->class_ok)
      /* Class container has already been built.  */
      return true;
--- 644,649 ----
*************** gfc_build_class_symbol (gfc_typespec *ts
*** 691,697 ****
    else
      ns = ts->u.derived->ns;
  
!   gfc_find_symbol (name, ns, 0, &fclass);
    if (fclass == NULL)
      {
        gfc_symtree *st;
--- 685,714 ----
    else
      ns = ts->u.derived->ns;
  
!   /* Although this might seem to be counterintuitive, we can build separate
!      class types with different array specs because the TKR interface checks
!      work on the declared type. All array type other than deferred shape or
!      assumed rank are added to the function namespace to ensure that they
!      are properly distinguished.  */
!   if (attr->dummy && !attr->codimension && (*as)
!       && !((*as)->type == AS_DEFERRED || (*as)->type == AS_ASSUMED_RANK))
!     {
!       char *sname;
!       ns = gfc_current_ns;
!       gfc_find_symbol (name, ns, 0, &fclass);
!       /* If a local class type with this name already exists, update the
! 	 name with an index.  */
!       if (fclass)
! 	{
! 	  fclass = NULL;
! 	  sname = xasprintf ("%s_%d", name, ++ctr);
! 	  free (name);
! 	  name = sname;
! 	}
!     }
!   else
!     gfc_find_symbol (name, ns, 0, &fclass);
! 
    if (fclass == NULL)
      {
        gfc_symtree *st;
diff -Nrcpad gcc-10.3.0/gcc/fortran/decl.c gcc-10.4.0/gcc/fortran/decl.c
*** gcc-10.3.0/gcc/fortran/decl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/decl.c	Tue Jun 28 08:54:28 2022
*************** match_clist_expr (gfc_expr **result, gfc
*** 896,904 ****
        expr->ts = *ts;
        expr->value.constructor = array_head;
  
-       expr->rank = as->rank;
-       expr->shape = gfc_get_shape (expr->rank);
- 
        /* Validate sizes.  We built expr ourselves, so cons_size will be
  	 constant (we fail above for non-constant expressions).
  	 We still need to verify that the sizes match.  */
--- 896,901 ----
*************** match_clist_expr (gfc_expr **result, gfc
*** 911,916 ****
--- 908,919 ----
        mpz_clear (cons_size);
        if (cmp)
  	goto cleanup;
+ 
+       /* Set the rank/shape to match the LHS as auto-reshape is implied. */
+       expr->rank = as->rank;
+       expr->shape = gfc_get_shape (as->rank);
+       for (int i = 0; i < as->rank; ++i)
+ 	spec_dimen_size (as, i, &expr->shape[i]);
      }
  
    /* Make sure scalar types match. */
*************** add_init_expr_to_sym (const char *name,
*** 2020,2025 ****
--- 2023,2036 ----
  	    }
  	}
  
+       if (sym->attr.flavor == FL_PARAMETER && sym->attr.dimension && sym->as
+ 	  && sym->as->rank && init->rank && init->rank != sym->as->rank)
+ 	{
+ 	  gfc_error ("Rank mismatch of array at %L and its initializer "
+ 		     "(%d/%d)", &sym->declared_at, sym->as->rank, init->rank);
+ 	  return false;
+ 	}
+ 
        /* If sym is implied-shape, set its upper bounds from init.  */
        if (sym->attr.flavor == FL_PARAMETER && sym->attr.dimension
  	  && sym->as->type == AS_IMPLIED_SHAPE)
*************** add_init_expr_to_sym (const char *name,
*** 2078,2083 ****
--- 2089,2112 ----
  	  sym->as->type = AS_EXPLICIT;
  	}
  
+       /* Ensure that explicit bounds are simplified.  */
+       if (sym->attr.flavor == FL_PARAMETER && sym->attr.dimension
+ 	  && sym->as->type == AS_EXPLICIT)
+ 	{
+ 	  for (int dim = 0; dim < sym->as->rank; ++dim)
+ 	    {
+ 	      gfc_expr *e;
+ 
+ 	      e = sym->as->lower[dim];
+ 	      if (e->expr_type != EXPR_CONSTANT)
+ 		gfc_reduce_init_expr (e);
+ 
+ 	      e = sym->as->upper[dim];
+ 	      if (e->expr_type != EXPR_CONSTANT)
+ 		gfc_reduce_init_expr (e);
+ 	    }
+ 	}
+ 
        /* Need to check if the expression we initialized this
  	 to was one of the iso_c_binding named constants.  If so,
  	 and we're a parameter (constant), let it be iso_c.
*************** add_init_expr_to_sym (const char *name,
*** 2105,2116 ****
  	  gfc_expr *array;
  	  int n;
  	  if (sym->attr.flavor == FL_PARAMETER
! 		&& init->expr_type == EXPR_CONSTANT
! 		&& spec_size (sym->as, &size)
! 		&& mpz_cmp_si (size, 0) > 0)
  	    {
  	      array = gfc_get_array_expr (init->ts.type, init->ts.kind,
  					  &init->where);
  	      for (n = 0; n < (int)mpz_get_si (size); n++)
  		gfc_constructor_append_expr (&array->value.constructor,
  					     n == 0
--- 2134,2149 ----
  	  gfc_expr *array;
  	  int n;
  	  if (sym->attr.flavor == FL_PARAMETER
! 	      && gfc_is_constant_expr (init)
! 	      && (init->expr_type == EXPR_CONSTANT
! 		  || init->expr_type == EXPR_STRUCTURE)
! 	      && spec_size (sym->as, &size)
! 	      && mpz_cmp_si (size, 0) > 0)
  	    {
  	      array = gfc_get_array_expr (init->ts.type, init->ts.kind,
  					  &init->where);
+ 	      if (init->ts.type == BT_DERIVED)
+ 		array->ts.u.derived = init->ts.u.derived;
  	      for (n = 0; n < (int)mpz_get_si (size); n++)
  		gfc_constructor_append_expr (&array->value.constructor,
  					     n == 0
diff -Nrcpad gcc-10.3.0/gcc/fortran/expr.c gcc-10.4.0/gcc/fortran/expr.c
*** gcc-10.3.0/gcc/fortran/expr.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/expr.c	Tue Jun 28 08:54:28 2022
*************** done:
*** 990,995 ****
--- 990,1023 ----
  }
  
  
+ /* Standard intrinsics listed under F2018:10.1.12 (6), which are excluded in
+    constant expressions, except TRANSFER (c.f. item (8)), which would need
+    separate treatment.  */
+ 
+ static bool
+ is_non_constant_intrinsic (gfc_expr *e)
+ {
+   if (e->expr_type == EXPR_FUNCTION
+       && e->value.function.isym)
+     {
+       switch (e->value.function.isym->id)
+ 	{
+ 	  case GFC_ISYM_COMMAND_ARGUMENT_COUNT:
+ 	  case GFC_ISYM_GET_TEAM:
+ 	  case GFC_ISYM_NULL:
+ 	  case GFC_ISYM_NUM_IMAGES:
+ 	  case GFC_ISYM_TEAM_NUMBER:
+ 	  case GFC_ISYM_THIS_IMAGE:
+ 	    return true;
+ 
+ 	default:
+ 	  return false;
+ 	}
+     }
+   return false;
+ }
+ 
+ 
  /* Determine if an expression is constant in the sense of F08:7.1.12.
   * This function expects that the expression has already been simplified.  */
  
*************** gfc_is_constant_expr (gfc_expr *e)
*** 1023,1028 ****
--- 1051,1060 ----
        gcc_assert (e->symtree || e->value.function.esym
  		  || e->value.function.isym);
  
+       /* Check for intrinsics excluded in constant expressions.  */
+       if (e->value.function.isym && is_non_constant_intrinsic (e))
+ 	return false;
+ 
        /* Call to intrinsic with at least one argument.  */
        if (e->value.function.isym && e->value.function.actual)
  	{
*************** find_array_element (gfc_constructor_base
*** 1337,1343 ****
    for (i = 0; i < ar->dimen; i++)
      {
        if (!gfc_reduce_init_expr (ar->as->lower[i])
! 	  || !gfc_reduce_init_expr (ar->as->upper[i]))
  	{
  	  t = false;
  	  cons = NULL;
--- 1369,1377 ----
    for (i = 0; i < ar->dimen; i++)
      {
        if (!gfc_reduce_init_expr (ar->as->lower[i])
! 	  || !gfc_reduce_init_expr (ar->as->upper[i])
! 	  || ar->as->upper[i]->expr_type != EXPR_CONSTANT
! 	  || ar->as->lower[i]->expr_type != EXPR_CONSTANT)
  	{
  	  t = false;
  	  cons = NULL;
*************** find_array_element (gfc_constructor_base
*** 1351,1359 ****
  	  goto depart;
  	}
  
-       gcc_assert (ar->as->upper[i]->expr_type == EXPR_CONSTANT
- 		  && ar->as->lower[i]->expr_type == EXPR_CONSTANT);
- 
        /* Check the bounds.  */
        if ((ar->as->upper[i]
  	   && mpz_cmp (e->value.integer,
--- 1385,1390 ----
*************** find_array_section (gfc_expr *expr, gfc_
*** 1560,1566 ****
  	{
  	  if ((begin && begin->expr_type != EXPR_CONSTANT)
  	      || (finish && finish->expr_type != EXPR_CONSTANT)
! 	      || (step && step->expr_type != EXPR_CONSTANT))
  	    {
  	      t = false;
  	      goto cleanup;
--- 1591,1599 ----
  	{
  	  if ((begin && begin->expr_type != EXPR_CONSTANT)
  	      || (finish && finish->expr_type != EXPR_CONSTANT)
! 	      || (step && step->expr_type != EXPR_CONSTANT)
! 	      || !lower
! 	      || !upper)
  	    {
  	      t = false;
  	      goto cleanup;
*************** find_substring_ref (gfc_expr *p, gfc_exp
*** 1725,1732 ****
    *newp = gfc_copy_expr (p);
    free ((*newp)->value.character.string);
  
!   end = (gfc_charlen_t) mpz_get_ui (p->ref->u.ss.end->value.integer);
!   start = (gfc_charlen_t) mpz_get_ui (p->ref->u.ss.start->value.integer);
    if (end >= start)
      length = end - start + 1;
    else
--- 1758,1765 ----
    *newp = gfc_copy_expr (p);
    free ((*newp)->value.character.string);
  
!   end = (gfc_charlen_t) mpz_get_si (p->ref->u.ss.end->value.integer);
!   start = (gfc_charlen_t) mpz_get_si (p->ref->u.ss.start->value.integer);
    if (end >= start)
      length = end - start + 1;
    else
*************** simplify_parameter_variable (gfc_expr *p
*** 2095,2100 ****
--- 2128,2135 ----
        if (e == NULL)
  	return false;
  
+       gfc_free_shape (&e->shape, e->rank);
+       e->shape = gfc_copy_shape (p->shape, p->rank);
        e->rank = p->rank;
  
        if (e->ts.type == BT_CHARACTER && p->ts.u.cl)
*************** gfc_simplify_expr (gfc_expr *p, int type
*** 2183,2192 ****
  	  && gfc_intrinsic_func_interface (p, 1) == MATCH_ERROR)
  	return false;
  
!       if (p->expr_type == EXPR_FUNCTION)
  	{
! 	  if (p->symtree)
! 	    isym = gfc_find_function (p->symtree->n.sym->name);
  	  if (isym && isym->elemental)
  	    scalarize_intrinsic_call (p, false);
  	}
--- 2218,2226 ----
  	  && gfc_intrinsic_func_interface (p, 1) == MATCH_ERROR)
  	return false;
  
!       if (p->symtree && (p->value.function.isym || p->ts.type == BT_UNKNOWN))
  	{
! 	  isym = gfc_find_function (p->symtree->n.sym->name);
  	  if (isym && isym->elemental)
  	    scalarize_intrinsic_call (p, false);
  	}
*************** gfc_simplify_expr (gfc_expr *p, int type
*** 2295,2300 ****
--- 2329,2359 ----
  }
  
  
+ /* Try simplification of an expression via gfc_simplify_expr.
+    When an error occurs (arithmetic or otherwise), roll back.  */
+ 
+ bool
+ gfc_try_simplify_expr (gfc_expr *e, int type)
+ {
+   gfc_expr *n;
+   bool t, saved_div0;
+ 
+   if (e == NULL || e->expr_type == EXPR_CONSTANT)
+     return true;
+ 
+   saved_div0 = gfc_seen_div0;
+   gfc_seen_div0 = false;
+   n = gfc_copy_expr (e);
+   t = gfc_simplify_expr (n, type) && !gfc_seen_div0;
+   if (t)
+     gfc_replace_expr (e, n);
+   else
+     gfc_free_expr (n);
+   gfc_seen_div0 = saved_div0;
+   return t;
+ }
+ 
+ 
  /* Returns the type of an expression with the exception that iterator
     variables are automatically integers no matter what else they may
     be declared as.  */
*************** gfc_check_pointer_assign (gfc_expr *lval
*** 3809,3814 ****
--- 3868,3876 ----
    int proc_pointer;
    bool same_rank;
  
+   if (!lvalue->symtree)
+     return false;
+ 
    lhs_attr = gfc_expr_attr (lvalue);
    if (lvalue->ts.type == BT_UNKNOWN && !lhs_attr.proc_pointer)
      {
*************** gfc_check_pointer_assign (gfc_expr *lval
*** 4273,4278 ****
--- 4335,4341 ----
      {
        gfc_symbol *sym;
        bool target;
+       gfc_ref *ref;
  
        if (gfc_is_size_zero_array (rvalue))
  	{
*************** gfc_check_pointer_assign (gfc_expr *lval
*** 4302,4307 ****
--- 4365,4403 ----
  		     &rvalue->where);
  	  return false;
  	}
+ 
+       for (ref = rvalue->ref; ref; ref = ref->next)
+ 	{
+ 	  switch (ref->type)
+ 	    {
+ 	    case REF_ARRAY:
+ 	      for (int n = 0; n < ref->u.ar.dimen; n++)
+ 		if (!gfc_is_constant_expr (ref->u.ar.start[n])
+ 		    || !gfc_is_constant_expr (ref->u.ar.end[n])
+ 		    || !gfc_is_constant_expr (ref->u.ar.stride[n]))
+ 		  {
+ 		    gfc_error ("Every subscript of target specification "
+ 			       "at %L must be a constant expression",
+ 			       &ref->u.ar.where);
+ 		    return false;
+ 		  }
+ 	      break;
+ 
+ 	    case REF_SUBSTRING:
+ 	      if (!gfc_is_constant_expr (ref->u.ss.start)
+ 		  || !gfc_is_constant_expr (ref->u.ss.end))
+ 		{
+ 		  gfc_error ("Substring starting and ending points of target "
+ 			     "specification at %L must be constant expressions",
+ 			     &ref->u.ss.start->where);
+ 		  return false;
+ 		}
+ 	      break;
+ 
+ 	    default:
+ 	      break;
+ 	    }
+ 	}
      }
    else
      {
*************** gfc_get_variable_expr (gfc_symtree *var)
*** 5088,5094 ****
  
    if (var->n.sym->attr.flavor != FL_PROCEDURE
        && ((var->n.sym->as != NULL && var->n.sym->ts.type != BT_CLASS)
! 	   || (var->n.sym->ts.type == BT_CLASS && CLASS_DATA (var->n.sym)
  	       && CLASS_DATA (var->n.sym)->as)))
      {
        e->rank = var->n.sym->ts.type == BT_CLASS
--- 5184,5191 ----
  
    if (var->n.sym->attr.flavor != FL_PROCEDURE
        && ((var->n.sym->as != NULL && var->n.sym->ts.type != BT_CLASS)
! 	   || (var->n.sym->ts.type == BT_CLASS && var->n.sym->ts.u.derived
! 	       && CLASS_DATA (var->n.sym)
  	       && CLASS_DATA (var->n.sym)->as)))
      {
        e->rank = var->n.sym->ts.type == BT_CLASS
*************** gfc_check_vardef_context (gfc_expr* e, b
*** 6168,6177 ****
      {
        if (ptr_component && ref->type == REF_COMPONENT)
  	check_intentin = false;
!       if (ref->type == REF_COMPONENT && ref->u.c.component->attr.pointer)
  	{
! 	  ptr_component = true;
! 	  if (!pointer)
  	    check_intentin = false;
  	}
      }
--- 6265,6277 ----
      {
        if (ptr_component && ref->type == REF_COMPONENT)
  	check_intentin = false;
!       if (ref->type == REF_COMPONENT)
  	{
! 	  gfc_component *comp = ref->u.c.component;
! 	  ptr_component = (comp->ts.type == BT_CLASS && comp->attr.class_ok)
! 			? CLASS_DATA (comp)->attr.class_pointer
! 			: comp->attr.pointer;
! 	  if (ptr_component && !pointer)
  	    check_intentin = false;
  	}
      }
diff -Nrcpad gcc-10.3.0/gcc/fortran/frontend-passes.c gcc-10.4.0/gcc/fortran/frontend-passes.c
*** gcc-10.3.0/gcc/fortran/frontend-passes.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/frontend-passes.c	Tue Jun 28 08:54:28 2022
*************** traverse_io_block (gfc_code *code, bool
*** 1299,1306 ****
  		std::swap (start->value.op.op1, start->value.op.op2);
  	      gcc_fallthrough ();
  	    case INTRINSIC_MINUS:
! 	      if ((start->value.op.op1->expr_type!= EXPR_VARIABLE
! 		   && start->value.op.op2->expr_type != EXPR_CONSTANT)
  		  || start->value.op.op1->ref)
  		return false;
  	      if (!stack_top || !stack_top->iter
--- 1299,1306 ----
  		std::swap (start->value.op.op1, start->value.op.op2);
  	      gcc_fallthrough ();
  	    case INTRINSIC_MINUS:
! 	      if (start->value.op.op1->expr_type!= EXPR_VARIABLE
! 		  || start->value.op.op2->expr_type != EXPR_CONSTANT
  		  || start->value.op.op1->ref)
  		return false;
  	      if (!stack_top || !stack_top->iter
*************** doloop_code (gfc_code **c, int *walk_sub
*** 2414,2420 ****
  
  	      do_sym = cl->ext.iterator->var->symtree->n.sym;
  
! 	      if (a->expr && a->expr->symtree
  		  && a->expr->symtree->n.sym == do_sym)
  		{
  		  if (f->sym->attr.intent == INTENT_OUT)
--- 2414,2420 ----
  
  	      do_sym = cl->ext.iterator->var->symtree->n.sym;
  
! 	      if (a->expr && a->expr->symtree && f->sym
  		  && a->expr->symtree->n.sym == do_sym)
  		{
  		  if (f->sym->attr.intent == INTENT_OUT)
*************** do_subscript (gfc_expr **e)
*** 2677,2682 ****
--- 2677,2683 ----
  		    {
  		      if (ar->as->lower[i]
  			  && ar->as->lower[i]->expr_type == EXPR_CONSTANT
+ 			  && ar->as->lower[i]->ts.type == BT_INTEGER
  			  && mpz_cmp (val, ar->as->lower[i]->value.integer) < 0)
  			gfc_warning (warn, "Array reference at %L out of bounds "
  				     "(%ld < %ld) in loop beginning at %L",
*************** do_subscript (gfc_expr **e)
*** 2686,2691 ****
--- 2687,2693 ----
  
  		      if (ar->as->upper[i]
  			  && ar->as->upper[i]->expr_type == EXPR_CONSTANT
+ 			  && ar->as->upper[i]->ts.type == BT_INTEGER
  			  && mpz_cmp (val, ar->as->upper[i]->value.integer) > 0)
  			    gfc_warning (warn, "Array reference at %L out of bounds "
  					 "(%ld > %ld) in loop beginning at %L",
*************** do_subscript (gfc_expr **e)
*** 2701,2706 ****
--- 2703,2709 ----
  		    {
  		      if (ar->as->lower[i]
  			  && ar->as->lower[i]->expr_type == EXPR_CONSTANT
+ 			  && ar->as->lower[i]->ts.type == BT_INTEGER
  			  && mpz_cmp (val, ar->as->lower[i]->value.integer) < 0)
  			gfc_warning (warn, "Array reference at %L out of bounds "
  				     "(%ld < %ld) in loop beginning at %L",
*************** do_subscript (gfc_expr **e)
*** 2710,2715 ****
--- 2713,2719 ----
  
  		      if (ar->as->upper[i]
  			  && ar->as->upper[i]->expr_type == EXPR_CONSTANT
+ 			  && ar->as->upper[i]->ts.type == BT_INTEGER
  			  && mpz_cmp (val, ar->as->upper[i]->value.integer) > 0)
  			gfc_warning (warn, "Array reference at %L out of bounds "
  				     "(%ld > %ld) in loop beginning at %L",
*************** inline_matmul_assign (gfc_code **c, int
*** 3919,3924 ****
--- 3923,3941 ----
    if (m_case == none)
      return 0;
  
+   /* We only handle assignment to numeric or logical variables.  */
+   switch(expr1->ts.type)
+     {
+     case BT_INTEGER:
+     case BT_LOGICAL:
+     case BT_REAL:
+     case BT_COMPLEX:
+       break;
+ 
+     default:
+       return 0;
+     }
+ 
    ns = insert_block ();
  
    /* Assign the type of the zero expression for initializing the resulting
diff -Nrcpad gcc-10.3.0/gcc/fortran/gfortran.h gcc-10.4.0/gcc/fortran/gfortran.h
*** gcc-10.3.0/gcc/fortran/gfortran.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/gfortran.h	Tue Jun 28 08:54:28 2022
*************** void gfc_free_ref_list (gfc_ref *);
*** 3307,3312 ****
--- 3307,3313 ----
  void gfc_type_convert_binary (gfc_expr *, int);
  bool gfc_is_constant_expr (gfc_expr *);
  bool gfc_simplify_expr (gfc_expr *, int);
+ bool gfc_try_simplify_expr (gfc_expr *, int);
  int gfc_has_vector_index (gfc_expr *);
  
  gfc_expr *gfc_get_expr (void);
diff -Nrcpad gcc-10.3.0/gcc/fortran/gfortran.info gcc-10.4.0/gcc/fortran/gfortran.info
*** gcc-10.3.0/gcc/fortran/gfortran.info	Thu Apr  8 12:06:42 2021
--- gcc-10.4.0/gcc/fortran/gfortran.info	Tue Jun 28 09:09:22 2022
***************
*** 1,4 ****
! This is gfortran.info, produced by makeinfo version 6.5 from
  gfortran.texi.
  
  Copyright (C) 1999-2020 Free Software Foundation, Inc.
--- 1,4 ----
! This is gfortran.info, produced by makeinfo version 6.8 from
  gfortran.texi.
  
  Copyright (C) 1999-2020 Free Software Foundation, Inc.
*************** the other form by either removing 'no-'
*** 1549,1555 ****
  
       Use of '-fno-underscoring' is not recommended unless you are
       experimenting with issues such as integration of GNU Fortran into
!      existing system environments (vis-a`-vis existing libraries, tools,
       and so on).
  
       For example, with '-funderscoring', and assuming that 'j()' and
--- 1549,1555 ----
  
       Use of '-fno-underscoring' is not recommended unless you are
       experimenting with issues such as integration of GNU Fortran into
!      existing system environments (vis-à-vis existing libraries, tools,
       and so on).
  
       For example, with '-funderscoring', and assuming that 'j()' and
*************** significant help to the GNU Fortran proj
*** 19968,19974 ****
     - Steven Bosscher
     - Paul Brook
     - Tobias Burnus
!    - Franc,ois-Xavier Coudert
     - Bud Davis
     - Jerry DeLisle
     - Erik Edelmann
--- 19968,19974 ----
     - Steven Bosscher
     - Paul Brook
     - Tobias Burnus
!    - François-Xavier Coudert
     - Bud Davis
     - Jerry DeLisle
     - Erik Edelmann
*************** significant help to the GNU Fortran proj
*** 19990,19996 ****
     - Tim Prince
     - Christopher D. Rickett
     - Richard Sandiford
!    - Tobias Schlu"ter
     - Roger Sayle
     - Paul Thomas
     - Andy Vaught
--- 19990,19996 ----
     - Tim Prince
     - Christopher D. Rickett
     - Richard Sandiford
!    - Tobias Schlüter
     - Roger Sayle
     - Paul Thomas
     - Andy Vaught
*************** patches, and much needed feedback and en
*** 20003,20009 ****
  project:
  
     - Bill Clodius
!    - Dominique d'Humie`res
     - Kate Hedstrom
     - Erik Schnetter
     - Joost VandeVondele
--- 20003,20009 ----
  project:
  
     - Bill Clodius
!    - Dominique d'Humières
     - Kate Hedstrom
     - Erik Schnetter
     - Joost VandeVondele
*************** Node: Option Index780098
*** 23580,23582 ****
--- 23580,23587 ----
  Node: Keyword Index799159
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/gcc/fortran/interface.c gcc-10.4.0/gcc/fortran/interface.c
*** gcc-10.3.0/gcc/fortran/interface.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/interface.c	Tue Jun 28 08:54:28 2022
*************** compare_parameter (gfc_symbol *formal, g
*** 2326,2331 ****
--- 2326,2332 ----
    bool rank_check, is_pointer;
    char err[200];
    gfc_component *ppc;
+   bool codimension = false;
  
    /* If the formal arg has type BT_VOID, it's to one of the iso_c_binding
       procs c_f_pointer or c_f_procpointer, and we need to accept most
*************** compare_parameter (gfc_symbol *formal, g
*** 2489,2495 ****
        return false;
      }
  
!   if (formal->attr.codimension && !gfc_is_coarray (actual))
      {
        if (where)
  	gfc_error ("Actual argument to %qs at %L must be a coarray",
--- 2490,2501 ----
        return false;
      }
  
!   if (formal->ts.type == BT_CLASS && formal->attr.class_ok)
!     codimension = CLASS_DATA (formal)->attr.codimension;
!   else
!     codimension = formal->attr.codimension;
! 
!   if (codimension && !gfc_is_coarray (actual))
      {
        if (where)
  	gfc_error ("Actual argument to %qs at %L must be a coarray",
*************** compare_parameter (gfc_symbol *formal, g
*** 2497,2503 ****
        return false;
      }
  
!   if (formal->attr.codimension && formal->attr.allocatable)
      {
        gfc_ref *last = NULL;
  
--- 2503,2509 ----
        return false;
      }
  
!   if (codimension && formal->attr.allocatable)
      {
        gfc_ref *last = NULL;
  
*************** compare_parameter (gfc_symbol *formal, g
*** 2519,2525 ****
  	}
      }
  
!   if (formal->attr.codimension)
      {
        /* F2008, 12.5.2.8 + Corrig 2 (IR F08/0048).  */
        /* F2018, 12.5.2.8.  */
--- 2525,2531 ----
  	}
      }
  
!   if (codimension)
      {
        /* F2008, 12.5.2.8 + Corrig 2 (IR F08/0048).  */
        /* F2018, 12.5.2.8.  */
*************** compare_parameter (gfc_symbol *formal, g
*** 2585,2591 ****
        return false;
      }
  
!   if (formal->attr.allocatable && !formal->attr.codimension
        && actual_attr.codimension)
      {
        if (formal->attr.intent == INTENT_OUT)
--- 2591,2597 ----
        return false;
      }
  
!   if (formal->attr.allocatable && !codimension
        && actual_attr.codimension)
      {
        if (formal->attr.intent == INTENT_OUT)
*************** gfc_compare_actual_formal (gfc_actual_ar
*** 3248,3257 ****
  	  && f->sym->attr.flavor != FL_PROCEDURE)
  	{
  	  if (a->expr->ts.type == BT_CHARACTER && !f->sym->as && where)
! 	    gfc_warning (0, "Character length of actual argument shorter "
! 			 "than of dummy argument %qs (%lu/%lu) at %L",
! 			 f->sym->name, actual_size, formal_size,
! 			 &a->expr->where);
            else if (where)
  	    {
  	      /* Emit a warning for -std=legacy and an error otherwise. */
--- 3254,3266 ----
  	  && f->sym->attr.flavor != FL_PROCEDURE)
  	{
  	  if (a->expr->ts.type == BT_CHARACTER && !f->sym->as && where)
! 	    {
! 	      gfc_warning (0, "Character length of actual argument shorter "
! 			   "than of dummy argument %qs (%lu/%lu) at %L",
! 			   f->sym->name, actual_size, formal_size,
! 			   &a->expr->where);
! 	      goto skip_size_check;
! 	    }
            else if (where)
  	    {
  	      /* Emit a warning for -std=legacy and an error otherwise. */
diff -Nrcpad gcc-10.3.0/gcc/fortran/intrinsic.c gcc-10.4.0/gcc/fortran/intrinsic.c
*** gcc-10.3.0/gcc/fortran/intrinsic.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/intrinsic.c	Tue Jun 28 08:54:28 2022
*************** gfc_is_intrinsic (gfc_symbol* sym, int s
*** 1138,1143 ****
--- 1138,1144 ----
  
    /* Check for attributes which prevent the symbol from being INTRINSIC.  */
    if (sym->attr.external || sym->attr.contained
+       || sym->attr.recursive
        || sym->attr.if_source == IFSRC_IFBODY)
      return false;
  
*************** add_subroutines (void)
*** 3423,3429 ****
    /* Argument names.  These are used as argument keywords and so need to
       match the documentation.  Please keep this list in sorted order.  */
    static const char
!     *a = "a", *c = "count", *cm = "count_max", *com = "command",
      *cr = "count_rate", *dt = "date", *errmsg = "errmsg", *f = "from",
      *fp = "frompos", *gt = "get", *h = "harvest", *han = "handler",
      *length = "length", *ln = "len", *md = "mode", *msk = "mask",
--- 3424,3430 ----
    /* Argument names.  These are used as argument keywords and so need to
       match the documentation.  Please keep this list in sorted order.  */
    static const char
!     *a = "a", *c_ = "c", *c = "count", *cm = "count_max", *com = "command",
      *cr = "count_rate", *dt = "date", *errmsg = "errmsg", *f = "from",
      *fp = "frompos", *gt = "get", *h = "harvest", *han = "handler",
      *length = "length", *ln = "len", *md = "mode", *msk = "mask",
*************** add_subroutines (void)
*** 3803,3814 ****
    add_sym_3s ("fgetc", GFC_ISYM_FGETC, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetputc_sub, NULL, gfc_resolve_fgetc_sub,
  	      ut, BT_INTEGER, di, REQUIRED, INTENT_IN,
! 	      c, BT_CHARACTER, dc, REQUIRED, INTENT_OUT,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_2s ("fget", GFC_ISYM_FGET, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetput_sub, NULL, gfc_resolve_fget_sub,
! 	      c, BT_CHARACTER, dc, REQUIRED, INTENT_OUT,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_1s ("flush", GFC_ISYM_FLUSH, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
--- 3804,3815 ----
    add_sym_3s ("fgetc", GFC_ISYM_FGETC, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetputc_sub, NULL, gfc_resolve_fgetc_sub,
  	      ut, BT_INTEGER, di, REQUIRED, INTENT_IN,
! 	      c_, BT_CHARACTER, dc, REQUIRED, INTENT_OUT,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_2s ("fget", GFC_ISYM_FGET, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetput_sub, NULL, gfc_resolve_fget_sub,
! 	      c_, BT_CHARACTER, dc, REQUIRED, INTENT_OUT,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_1s ("flush", GFC_ISYM_FLUSH, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
*************** add_subroutines (void)
*** 3818,3829 ****
    add_sym_3s ("fputc", GFC_ISYM_FPUTC, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetputc_sub, NULL, gfc_resolve_fputc_sub,
  	      ut, BT_INTEGER, di, REQUIRED, INTENT_IN,
! 	      c, BT_CHARACTER, dc, REQUIRED, INTENT_IN,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_2s ("fput", GFC_ISYM_FPUT, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetput_sub, NULL, gfc_resolve_fput_sub,
! 	      c, BT_CHARACTER, dc, REQUIRED, INTENT_IN,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_1s ("free", GFC_ISYM_FREE, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
--- 3819,3830 ----
    add_sym_3s ("fputc", GFC_ISYM_FPUTC, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetputc_sub, NULL, gfc_resolve_fputc_sub,
  	      ut, BT_INTEGER, di, REQUIRED, INTENT_IN,
! 	      c_, BT_CHARACTER, dc, REQUIRED, INTENT_IN,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_2s ("fput", GFC_ISYM_FPUT, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
  	      gfc_check_fgetput_sub, NULL, gfc_resolve_fput_sub,
! 	      c_, BT_CHARACTER, dc, REQUIRED, INTENT_IN,
  	      st, BT_INTEGER, di, OPTIONAL, INTENT_OUT);
  
    add_sym_1s ("free", GFC_ISYM_FREE, CLASS_IMPURE, BT_UNKNOWN, 0, GFC_STD_GNU,
diff -Nrcpad gcc-10.3.0/gcc/fortran/io.c gcc-10.4.0/gcc/fortran/io.c
*** gcc-10.3.0/gcc/fortran/io.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/io.c	Tue Jun 28 08:54:28 2022
*************** resolve_tag_format (gfc_expr *e)
*** 1763,1769 ****
    if (e->ts.type != BT_CHARACTER)
      {
        if (e->ts.type == BT_DERIVED || e->ts.type == BT_CLASS
! 	  || e->ts.type == BT_VOID)
  	{
  	  gfc_error ("Non-character non-Hollerith in FORMAT tag at %L",
  		     &e->where);
--- 1763,1769 ----
    if (e->ts.type != BT_CHARACTER)
      {
        if (e->ts.type == BT_DERIVED || e->ts.type == BT_CLASS
! 	  || e->ts.type == BT_VOID || e->ts.type == BT_UNKNOWN)
  	{
  	  gfc_error ("Non-character non-Hollerith in FORMAT tag at %L",
  		     &e->where);
diff -Nrcpad gcc-10.3.0/gcc/fortran/match.c gcc-10.4.0/gcc/fortran/match.c
*** gcc-10.3.0/gcc/fortran/match.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/match.c	Tue Jun 28 08:54:28 2022
*************** gfc_match_pointer_assignment (void)
*** 1409,1415 ****
    gfc_matching_procptr_assignment = 0;
  
    m = gfc_match (" %v =>", &lvalue);
!   if (m != MATCH_YES)
      {
        m = MATCH_NO;
        goto cleanup;
--- 1409,1415 ----
    gfc_matching_procptr_assignment = 0;
  
    m = gfc_match (" %v =>", &lvalue);
!   if (m != MATCH_YES || !lvalue->symtree)
      {
        m = MATCH_NO;
        goto cleanup;
*************** select_type_set_tmp (gfc_typespec *ts)
*** 6338,6344 ****
        sym = tmp->n.sym;
        gfc_add_type (sym, ts, NULL);
  
!       if (selector->ts.type == BT_CLASS && selector->attr.class_ok)
  	{
  	  sym->attr.pointer
  		= CLASS_DATA (selector)->attr.class_pointer;
--- 6338,6345 ----
        sym = tmp->n.sym;
        gfc_add_type (sym, ts, NULL);
  
!       if (selector->ts.type == BT_CLASS && selector->attr.class_ok
! 	  && selector->ts.u.derived && CLASS_DATA (selector))
  	{
  	  sym->attr.pointer
  		= CLASS_DATA (selector)->attr.class_pointer;
diff -Nrcpad gcc-10.3.0/gcc/fortran/module.c gcc-10.4.0/gcc/fortran/module.c
*** gcc-10.3.0/gcc/fortran/module.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/module.c	Tue Jun 28 08:54:28 2022
*************** write_symtree (gfc_symtree *st)
*** 6078,6083 ****
--- 6078,6094 ----
    if (check_unique_name (st->name))
      return;
  
+   /* From F2003 onwards, intrinsic procedures are no longer subject to
+      the restriction, "that an elemental intrinsic function here be of
+      type integer or character and each argument must be an initialization
+      expr of type integer or character" is lifted so that intrinsic
+      procedures can be over-ridden. This requires that the intrinsic
+      symbol not appear in the module file, thereby preventing ambiguity
+      when USEd.  */
+   if (strcmp (sym->module, "(intrinsic)") == 0
+       && (gfc_option.allow_std & GFC_STD_F2003))
+     return;
+ 
    p = find_pointer (sym);
    if (p == NULL)
      gfc_internal_error ("write_symtree(): Symbol not written");
diff -Nrcpad gcc-10.3.0/gcc/fortran/openmp.c gcc-10.4.0/gcc/fortran/openmp.c
*** gcc-10.3.0/gcc/fortran/openmp.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/openmp.c	Tue Jun 28 08:54:28 2022
*************** gfc_match_omp_variable_list (const char
*** 260,265 ****
--- 260,266 ----
  	case MATCH_YES:
  	  gfc_expr *expr;
  	  expr = NULL;
+ 	  gfc_gobble_whitespace ();
  	  if ((allow_sections && gfc_peek_ascii_char () == '(')
  	      || (allow_derived && gfc_peek_ascii_char () == '%'))
  	    {
diff -Nrcpad gcc-10.3.0/gcc/fortran/parse.c gcc-10.4.0/gcc/fortran/parse.c
*** gcc-10.3.0/gcc/fortran/parse.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/parse.c	Tue Jun 28 08:54:28 2022
*************** gfc_check_do_variable (gfc_symtree *st)
*** 4440,4445 ****
--- 4440,4448 ----
  {
    gfc_state_data *s;
  
+   if (!st)
+     return 0;
+ 
    for (s=gfc_state_stack; s; s = s->previous)
      if (s->do_variable == st)
        {
*************** parse_associate (void)
*** 4675,4680 ****
--- 4678,4701 ----
  	 in case of association to a derived-type.  */
        sym->ts = a->target->ts;
  
+       /* Don’t share the character length information between associate
+ 	 variable and target if the length is not a compile-time constant,
+ 	 as we don’t want to touch some other character length variable when
+ 	 we try to initialize the associate variable’s character length
+ 	 variable.
+ 	 We do it here rather than later so that expressions referencing the
+ 	 associate variable will automatically have the correctly setup length
+ 	 information.  If we did it at resolution stage the expressions would
+ 	 use the original length information, and the variable a new different
+ 	 one, but only the latter one would be correctly initialized at
+ 	 translation stage, and the former one would need some additional setup
+ 	 there.  */
+       if (sym->ts.type == BT_CHARACTER
+ 	  && sym->ts.u.cl
+ 	  && !(sym->ts.u.cl->length
+ 	       && sym->ts.u.cl->length->expr_type == EXPR_CONSTANT))
+ 	sym->ts.u.cl = gfc_new_charlen (gfc_current_ns, NULL);
+ 
        /* Check if the target expression is array valued.  This cannot always
  	 be done by looking at target.rank, because that might not have been
  	 set yet.  Therefore traverse the chain of refs, looking for the last
diff -Nrcpad gcc-10.3.0/gcc/fortran/primary.c gcc-10.4.0/gcc/fortran/primary.c
*** gcc-10.3.0/gcc/fortran/primary.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/primary.c	Tue Jun 28 08:54:28 2022
*************** gfc_match_varspec (gfc_expr *primary, in
*** 2172,2177 ****
--- 2172,2178 ----
  	  && !(gfc_matching_procptr_assignment
  	       && sym->attr.flavor == FL_PROCEDURE))
        || (sym->ts.type == BT_CLASS && sym->attr.class_ok
+ 	  && sym->ts.u.derived && CLASS_DATA (sym)
  	  && (CLASS_DATA (sym)->attr.dimension
  	      || CLASS_DATA (sym)->attr.codimension)))
      {
*************** build_actual_constructor (gfc_structure_
*** 3062,3087 ****
  	  continue;
  	}
  
!       /* If it was not found, try the default initializer if there's any;
  	 otherwise, it's an error unless this is a deferred parameter.  */
        if (!comp_iter)
  	{
! 	  if (comp->initializer)
! 	    {
! 	      if (!gfc_notify_std (GFC_STD_F2003, "Structure constructor "
! 				   "with missing optional arguments at %C"))
! 		return false;
! 	      value = gfc_copy_expr (comp->initializer);
! 	    }
! 	  else if (comp->attr.allocatable
! 		   || (comp->ts.type == BT_CLASS
! 		       && CLASS_DATA (comp)->attr.allocatable))
  	    {
  	      if (!gfc_notify_std (GFC_STD_F2008, "No initializer for "
  				   "allocatable component %qs given in the "
  				   "structure constructor at %C", comp->name))
  		return false;
  	    }
  	  else if (!comp->attr.artificial)
  	    {
  	      gfc_error ("No initializer for component %qs given in the"
--- 3063,3098 ----
  	  continue;
  	}
  
!       /* If it was not found, apply NULL expression to set the component as
! 	 unallocated. Then try the default initializer if there's any;
  	 otherwise, it's an error unless this is a deferred parameter.  */
        if (!comp_iter)
  	{
! 	  /* F2018 7.5.10: If an allocatable component has no corresponding
! 	     component-data-source, then that component has an allocation
! 	     status of unallocated....  */
! 	  if (comp->attr.allocatable
! 	      || (comp->ts.type == BT_CLASS
! 		  && CLASS_DATA (comp)->attr.allocatable))
  	    {
  	      if (!gfc_notify_std (GFC_STD_F2008, "No initializer for "
  				   "allocatable component %qs given in the "
  				   "structure constructor at %C", comp->name))
  		return false;
+ 	      value = gfc_get_null_expr (&gfc_current_locus);
+ 	    }
+ 	  /* ....(Preceeding sentence) If a component with default
+ 	     initialization has no corresponding component-data-source, then
+ 	     the default initialization is applied to that component.  */
+ 	  else if (comp->initializer)
+ 	    {
+ 	      if (!gfc_notify_std (GFC_STD_F2003, "Structure constructor "
+ 				   "with missing optional arguments at %C"))
+ 		return false;
+ 	      value = gfc_copy_expr (comp->initializer);
  	    }
+ 	  /* Do not trap components such as the string length for deferred
+ 	     length character components.  */
  	  else if (!comp->attr.artificial)
  	    {
  	      gfc_error ("No initializer for component %qs given in the"
*************** gfc_match_structure_constructor (gfc_sym
*** 3365,3370 ****
--- 3376,3382 ----
    match m;
    gfc_expr *e;
    gfc_symtree *symtree;
+   bool t = true;
  
    gfc_get_ha_sym_tree (sym->name, &symtree);
  
*************** gfc_match_structure_constructor (gfc_sym
*** 3395,3404 ****
       in the structure constructor must be a constant.  Try to reduce the
       expression here.  */
    if (gfc_in_match_data ())
!     gfc_reduce_init_expr (e);
  
!   *result = e;
!   return MATCH_YES;
  }
  
  
--- 3407,3424 ----
       in the structure constructor must be a constant.  Try to reduce the
       expression here.  */
    if (gfc_in_match_data ())
!     t = gfc_reduce_init_expr (e);
  
!   if (t)
!     {
!       *result = e;
!       return MATCH_YES;
!     }
!   else
!     {
!       gfc_free_expr (e);
!       return MATCH_ERROR;
!     }
  }
  
  
diff -Nrcpad gcc-10.3.0/gcc/fortran/resolve.c gcc-10.4.0/gcc/fortran/resolve.c
*** gcc-10.3.0/gcc/fortran/resolve.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/resolve.c	Tue Jun 28 08:54:28 2022
*************** resolve_structure_cons (gfc_expr *expr,
*** 1436,1441 ****
--- 1436,1478 ----
  	    }
  	}
  
+       /* Validate shape, except for dynamic or PDT arrays.  */
+       if (cons->expr->expr_type == EXPR_ARRAY && rank == cons->expr->rank
+ 	  && comp->as && !comp->attr.allocatable && !comp->attr.pointer
+ 	  && !comp->attr.pdt_array)
+ 	{
+ 	  mpz_t len;
+ 	  mpz_init (len);
+ 	  for (int n = 0; n < rank; n++)
+ 	    {
+ 	      if (comp->as->upper[n]->expr_type != EXPR_CONSTANT
+ 		  || comp->as->lower[n]->expr_type != EXPR_CONSTANT)
+ 		{
+ 		  gfc_error ("Bad array spec of component %qs referenced in "
+ 			     "structure constructor at %L",
+ 			     comp->name, &cons->expr->where);
+ 		  t = false;
+ 		  break;
+ 		};
+ 	      if (cons->expr->shape == NULL)
+ 		continue;
+ 	      mpz_set_ui (len, 1);
+ 	      mpz_add (len, len, comp->as->upper[n]->value.integer);
+ 	      mpz_sub (len, len, comp->as->lower[n]->value.integer);
+ 	      if (mpz_cmp (cons->expr->shape[n], len) != 0)
+ 		{
+ 		  gfc_error ("The shape of component %qs in the structure "
+ 			     "constructor at %L differs from the shape of the "
+ 			     "declared component for dimension %d (%ld/%ld)",
+ 			     comp->name, &cons->expr->where, n+1,
+ 			     mpz_get_si (cons->expr->shape[n]),
+ 			     mpz_get_si (len));
+ 		  t = false;
+ 		}
+ 	    }
+ 	  mpz_clear (len);
+ 	}
+ 
        if (!comp->attr.pointer || comp->attr.proc_pointer
  	  || cons->expr->expr_type == EXPR_NULL)
  	continue;
*************** gfc_resolve_dim_arg (gfc_expr *dim)
*** 4858,4863 ****
--- 4895,4902 ----
     base symbol.  We traverse the list of reference structures, setting
     the stored reference to references.  Component references can
     provide an additional array specification.  */
+ static void
+ resolve_assoc_var (gfc_symbol* sym, bool resolve_target);
  
  static void
  find_array_spec (gfc_expr *e)
*************** find_array_spec (gfc_expr *e)
*** 4867,4872 ****
--- 4906,4918 ----
    gfc_ref *ref;
    bool class_as = false;
  
+   if (e->symtree->n.sym->assoc)
+     {
+       if (e->symtree->n.sym->assoc->target)
+ 	gfc_resolve_expr (e->symtree->n.sym->assoc->target);
+       resolve_assoc_var (e->symtree->n.sym, false);
+     }
+ 
    if (e->symtree->n.sym->ts.type == BT_CLASS)
      {
        as = CLASS_DATA (e->symtree->n.sym)->as;
*************** resolve_variable (gfc_expr *e)
*** 5633,5638 ****
--- 5679,5686 ----
       can't be translated that way.  */
    if (sym->assoc && e->rank == 0 && e->ref && sym->ts.type == BT_CLASS
        && sym->assoc->target && sym->assoc->target->ts.type == BT_CLASS
+       && sym->assoc->target->ts.u.derived
+       && CLASS_DATA (sym->assoc->target)
        && CLASS_DATA (sym->assoc->target)->as)
      {
        gfc_ref *ref = e->ref;
*************** resolve_variable (gfc_expr *e)
*** 5697,5703 ****
    /* Like above, but for class types, where the checking whether an array
       ref is present is more complicated.  Furthermore make sure not to add
       the full array ref to _vptr or _len refs.  */
!   if (sym->assoc && sym->ts.type == BT_CLASS
        && CLASS_DATA (sym)->attr.dimension
        && (e->ts.type != BT_DERIVED || !e->ts.u.derived->attr.vtype))
      {
--- 5745,5752 ----
    /* Like above, but for class types, where the checking whether an array
       ref is present is more complicated.  Furthermore make sure not to add
       the full array ref to _vptr or _len refs.  */
!   if (sym->assoc && sym->ts.type == BT_CLASS && sym->ts.u.derived
!       && CLASS_DATA (sym)
        && CLASS_DATA (sym)->attr.dimension
        && (e->ts.type != BT_DERIVED || !e->ts.u.derived->attr.vtype))
      {
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 9092,9099 ****
        if (!sym->ts.u.cl)
  	sym->ts.u.cl = target->ts.u.cl;
  
!       if (sym->ts.deferred && target->expr_type == EXPR_VARIABLE
! 	  && target->symtree->n.sym->attr.dummy
  	  && sym->ts.u.cl == target->ts.u.cl)
  	{
  	  sym->ts.u.cl = gfc_new_charlen (sym->ns, NULL);
--- 9141,9147 ----
        if (!sym->ts.u.cl)
  	sym->ts.u.cl = target->ts.u.cl;
  
!       if (sym->ts.deferred
  	  && sym->ts.u.cl == target->ts.u.cl)
  	{
  	  sym->ts.u.cl = gfc_new_charlen (sym->ns, NULL);
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 9112,9119 ****
  		|| sym->ts.u.cl->length->expr_type != EXPR_CONSTANT)
  		&& target->expr_type != EXPR_VARIABLE)
  	{
! 	  sym->ts.u.cl = gfc_new_charlen (sym->ns, NULL);
! 	  sym->ts.deferred = 1;
  
  	  /* This is reset in trans-stmt.c after the assignment
  	     of the target expression to the associate name.  */
--- 9160,9170 ----
  		|| sym->ts.u.cl->length->expr_type != EXPR_CONSTANT)
  		&& target->expr_type != EXPR_VARIABLE)
  	{
! 	  if (!sym->ts.deferred)
! 	    {
! 	      sym->ts.u.cl = gfc_new_charlen (sym->ns, NULL);
! 	      sym->ts.deferred = 1;
! 	    }
  
  	  /* This is reset in trans-stmt.c after the assignment
  	     of the target expression to the associate name.  */
*************** resolve_select_type (gfc_code *code, gfc
*** 9301,9306 ****
--- 9352,9358 ----
  
        /* Check F03:C815.  */
        if ((c->ts.type == BT_DERIVED || c->ts.type == BT_CLASS)
+ 	  && selector_type
  	  && !selector_type->attr.unlimited_polymorphic
  	  && !gfc_type_is_extensible (c->ts.u.derived))
  	{
*************** resolve_select_type (gfc_code *code, gfc
*** 9311,9317 ****
  	}
  
        /* Check F03:C816.  */
!       if (c->ts.type != BT_UNKNOWN && !selector_type->attr.unlimited_polymorphic
  	  && ((c->ts.type != BT_DERIVED && c->ts.type != BT_CLASS)
  	      || !gfc_type_is_extension_of (selector_type, c->ts.u.derived)))
  	{
--- 9363,9370 ----
  	}
  
        /* Check F03:C816.  */
!       if (c->ts.type != BT_UNKNOWN
! 	  && selector_type && !selector_type->attr.unlimited_polymorphic
  	  && ((c->ts.type != BT_DERIVED && c->ts.type != BT_CLASS)
  	      || !gfc_type_is_extension_of (selector_type, c->ts.u.derived)))
  	{
*************** gfc_resolve_code (gfc_code *code, gfc_na
*** 11733,11740 ****
  	      gfc_resolve_omp_do_blocks (code, ns);
  	      break;
  	    case EXEC_SELECT_TYPE:
! 	      /* Blocks are handled in resolve_select_type because we have
! 		 to transform the SELECT TYPE into ASSOCIATE first.  */
  	      break;
              case EXEC_DO_CONCURRENT:
  	      gfc_do_concurrent_flag = 1;
--- 11786,11794 ----
  	      gfc_resolve_omp_do_blocks (code, ns);
  	      break;
  	    case EXEC_SELECT_TYPE:
! 	    case EXEC_SELECT_RANK:
! 	      /* Blocks are handled in resolve_select_type/rank because we
! 		 have to transform the SELECT TYPE into ASSOCIATE first.  */
  	      break;
              case EXEC_DO_CONCURRENT:
  	      gfc_do_concurrent_flag = 1;
*************** resolve_fl_procedure (gfc_symbol *sym, i
*** 13095,13101 ****
  
    /* An elemental function is required to return a scalar 12.7.1  */
    if (sym->attr.elemental && sym->attr.function
!       && (sym->as || (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as)))
      {
        gfc_error ("ELEMENTAL function %qs at %L must have a scalar "
  		 "result", sym->name, &sym->declared_at);
--- 13149,13156 ----
  
    /* An elemental function is required to return a scalar 12.7.1  */
    if (sym->attr.elemental && sym->attr.function
!       && (sym->as || (sym->ts.type == BT_CLASS && sym->attr.class_ok
! 		      && CLASS_DATA (sym)->as)))
      {
        gfc_error ("ELEMENTAL function %qs at %L must have a scalar "
  		 "result", sym->name, &sym->declared_at);
diff -Nrcpad gcc-10.3.0/gcc/fortran/simplify.c gcc-10.4.0/gcc/fortran/simplify.c
*** gcc-10.3.0/gcc/fortran/simplify.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/simplify.c	Tue Jun 28 08:54:28 2022
*************** gfc_simplify_cshift (gfc_expr *array, gf
*** 2077,2082 ****
--- 2077,2085 ----
    else
      which = 0;
  
+   if (array->shape == NULL)
+     return NULL;
+ 
    gfc_array_size (array, &size);
    arraysize = mpz_get_ui (size);
    mpz_clear (size);
*************** gfc_simplify_eoshift (gfc_expr *array, g
*** 2537,2542 ****
--- 2540,2548 ----
    if (arraysize == 0)
      goto final;
  
+   if (array->shape == NULL)
+     goto final;
+ 
    arrayvec = XCNEWVEC (gfc_expr *, arraysize);
    array_ctor = gfc_constructor_first (array->value.constructor);
    for (i = 0; i < arraysize; i++)
*************** simplify_bound (gfc_expr *array, gfc_exp
*** 4231,4236 ****
--- 4237,4248 ----
  	     || (as->type == AS_ASSUMED_SHAPE && upper)))
      return NULL;
  
+   /* 'array' shall not be an unallocated allocatable variable or a pointer that
+      is not associated.  */
+   if (array->expr_type == EXPR_VARIABLE
+       && (gfc_expr_attr (array).allocatable || gfc_expr_attr (array).pointer))
+     return NULL;
+ 
    gcc_assert (!as
  	      || (as->type != AS_DEFERRED
  		  && array->expr_type == EXPR_VARIABLE
*************** gfc_simplify_reshape (gfc_expr *source,
*** 6759,6765 ****
        gfc_extract_int (e, &shape[rank]);
  
        gcc_assert (rank >= 0 && rank < GFC_MAX_DIMENSIONS);
!       gcc_assert (shape[rank] >= 0);
  
        rank++;
      }
--- 6771,6783 ----
        gfc_extract_int (e, &shape[rank]);
  
        gcc_assert (rank >= 0 && rank < GFC_MAX_DIMENSIONS);
!       if (shape[rank] < 0)
! 	{
! 	  gfc_error ("The SHAPE array for the RESHAPE intrinsic at %L has a "
! 		     "negative value %d for dimension %d",
! 		     &shape_exp->where, shape[rank], rank+1);
! 	  return &gfc_bad_expr;
! 	}
  
        rank++;
      }
*************** simplify_size (gfc_expr *array, gfc_expr
*** 7379,7384 ****
--- 7397,7403 ----
    mpz_t size;
    gfc_expr *return_value;
    int d;
+   gfc_ref *ref;
  
    /* For unary operations, the size of the result is given by the size
       of the operand.  For binary ones, it's the size of the first operand
*************** simplify_size (gfc_expr *array, gfc_expr
*** 7435,7440 ****
--- 7454,7463 ----
        return simplified;
      }
  
+   for (ref = array->ref; ref; ref = ref->next)
+     if (ref->type == REF_ARRAY && ref->u.ar.as)
+       gfc_resolve_array_spec (ref->u.ar.as, 0);
+ 
    if (dim == NULL)
      {
        if (!gfc_array_size (array, &size))
*************** gfc_simplify_transfer (gfc_expr *source,
*** 8031,8037 ****
       set even for array expressions, in order to pass this information into
       gfc_target_interpret_expr.  */
    if (result->ts.type == BT_CHARACTER && gfc_is_constant_expr (mold_element))
!     result->value.character.length = mold_element->value.character.length;
  
    /* Set the number of elements in the result, and determine its size.  */
  
--- 8054,8071 ----
       set even for array expressions, in order to pass this information into
       gfc_target_interpret_expr.  */
    if (result->ts.type == BT_CHARACTER && gfc_is_constant_expr (mold_element))
!     {
!       result->value.character.length = mold_element->value.character.length;
! 
!       /* Let the typespec of the result inherit the string length.
! 	 This is crucial if a resulting array has size zero.  */
!       if (mold_element->ts.u.cl->length)
! 	result->ts.u.cl->length = gfc_copy_expr (mold_element->ts.u.cl->length);
!       else
! 	result->ts.u.cl->length =
! 	  gfc_get_int_expr (gfc_charlen_int_kind, NULL,
! 			    mold_element->value.character.length);
!     }
  
    /* Set the number of elements in the result, and determine its size.  */
  
*************** gfc_simplify_transpose (gfc_expr *matrix
*** 8071,8076 ****
--- 8105,8113 ----
  
    gcc_assert (matrix->rank == 2);
  
+   if (matrix->shape == NULL)
+     return NULL;
+ 
    result = gfc_get_array_expr (matrix->ts.type, matrix->ts.kind,
  			       &matrix->where);
    result->rank = 2;
diff -Nrcpad gcc-10.3.0/gcc/fortran/target-memory.c gcc-10.4.0/gcc/fortran/target-memory.c
*** gcc-10.3.0/gcc/fortran/target-memory.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/target-memory.c	Tue Jun 28 08:54:28 2022
*************** gfc_interpret_character (unsigned char *
*** 486,492 ****
  
    result->value.character.string[result->value.character.length] = '\0';
  
!   return result->value.character.length;
  }
  
  
--- 486,492 ----
  
    result->value.character.string[result->value.character.length] = '\0';
  
!   return size_character (result->value.character.length, result->ts.kind);
  }
  
  
*************** gfc_interpret_derived (unsigned char *bu
*** 534,539 ****
--- 534,542 ----
  	{
  	  int n;
  
+ 	  if (cmp->as->type != AS_EXPLICIT)
+ 	    return 0;
+ 
  	  e->expr_type = EXPR_ARRAY;
  	  e->rank = cmp->as->rank;
  
diff -Nrcpad gcc-10.3.0/gcc/fortran/trans-array.c gcc-10.4.0/gcc/fortran/trans-array.c
*** gcc-10.3.0/gcc/fortran/trans-array.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/trans-array.c	Tue Jun 28 08:54:28 2022
*************** gfc_trans_g77_array (gfc_symbol * sym, g
*** 6611,6617 ****
    /* Set the pointer itself if we aren't using the parameter directly.  */
    if (TREE_CODE (parm) != PARM_DECL)
      {
!       tmp = convert (TREE_TYPE (parm), GFC_DECL_SAVED_DESCRIPTOR (parm));
        gfc_add_modify (&init, parm, tmp);
      }
    stmt = gfc_finish_block (&init);
--- 6611,6624 ----
    /* Set the pointer itself if we aren't using the parameter directly.  */
    if (TREE_CODE (parm) != PARM_DECL)
      {
!       tmp = GFC_DECL_SAVED_DESCRIPTOR (parm);
!       if (sym->ts.type == BT_CLASS)
! 	{
! 	  tmp = build_fold_indirect_ref_loc (input_location, tmp);
! 	  tmp = gfc_class_data_get (tmp);
! 	  tmp = gfc_conv_descriptor_data_get (tmp);
! 	}
!       tmp = convert (TREE_TYPE (parm), tmp);
        gfc_add_modify (&init, parm, tmp);
      }
    stmt = gfc_finish_block (&init);
*************** gfc_trans_dummy_array_bias (gfc_symbol *
*** 6713,6719 ****
        && VAR_P (sym->ts.u.cl->backend_decl))
      gfc_conv_string_length (sym->ts.u.cl, NULL, &init);
  
!   checkparm = (as->type == AS_EXPLICIT
  	       && (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS));
  
    no_repack = !(GFC_DECL_PACKED_ARRAY (tmpdesc)
--- 6720,6727 ----
        && VAR_P (sym->ts.u.cl->backend_decl))
      gfc_conv_string_length (sym->ts.u.cl, NULL, &init);
  
!   /* TODO: Fix the exclusion of class arrays from extent checking.  */
!   checkparm = (as->type == AS_EXPLICIT && !is_classarray
  	       && (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS));
  
    no_repack = !(GFC_DECL_PACKED_ARRAY (tmpdesc)
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 7531,7539 ****
  			 && expr->value.function.esym->attr.elemental)
  			|| (expr->value.function.isym != NULL
  			    && expr->value.function.isym->elemental)
  			|| gfc_inline_intrinsic_function_p (expr));
- 	  else
- 	    gcc_assert (ss_type == GFC_SS_INTRINSIC);
  
  	  need_tmp = 1;
  	  if (expr->ts.type == BT_CHARACTER
--- 7539,7547 ----
  			 && expr->value.function.esym->attr.elemental)
  			|| (expr->value.function.isym != NULL
  			    && expr->value.function.isym->elemental)
+ 			|| (gfc_expr_attr (expr).proc_pointer
+ 			    && gfc_expr_attr (expr).elemental)
  			|| gfc_inline_intrinsic_function_p (expr));
  
  	  need_tmp = 1;
  	  if (expr->ts.type == BT_CHARACTER
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 7722,7736 ****
        /* Set the string_length for a character array.  */
        if (expr->ts.type == BT_CHARACTER)
  	{
! 	  se->string_length =  gfc_get_expr_charlen (expr);
  	  if (VAR_P (se->string_length)
  	      && expr->ts.u.cl->backend_decl == se->string_length)
  	    tmp = ss_info->string_length;
  	  else
  	    tmp = se->string_length;
  
! 	  if (expr->ts.deferred)
  	    gfc_add_modify (&se->pre, expr->ts.u.cl->backend_decl, tmp);
  	}
  
        /* If we have an array section or are assigning make sure that
--- 7730,7750 ----
        /* Set the string_length for a character array.  */
        if (expr->ts.type == BT_CHARACTER)
  	{
! 	  if (deferred_array_component)
! 	    se->string_length = ss_info->string_length;
! 	  else
! 	    se->string_length =  gfc_get_expr_charlen (expr);
! 
  	  if (VAR_P (se->string_length)
  	      && expr->ts.u.cl->backend_decl == se->string_length)
  	    tmp = ss_info->string_length;
  	  else
  	    tmp = se->string_length;
  
! 	  if (expr->ts.deferred && VAR_P (expr->ts.u.cl->backend_decl))
  	    gfc_add_modify (&se->pre, expr->ts.u.cl->backend_decl, tmp);
+ 	  else
+ 	    expr->ts.u.cl->backend_decl = tmp;
  	}
  
        /* If we have an array section or are assigning make sure that
diff -Nrcpad gcc-10.3.0/gcc/fortran/trans-decl.c gcc-10.4.0/gcc/fortran/trans-decl.c
*** gcc-10.3.0/gcc/fortran/trans-decl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/trans-decl.c	Tue Jun 28 08:54:28 2022
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 737,742 ****
--- 737,744 ----
    /* Keep variables larger than max-stack-var-size off stack.  */
    if (!(sym->ns->proc_name && sym->ns->proc_name->attr.recursive)
        && !sym->attr.automatic
+       && sym->attr.save != SAVE_EXPLICIT
+       && sym->attr.save != SAVE_IMPLICIT
        && INTEGER_CST_P (DECL_SIZE_UNIT (decl))
        && !gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl))
  	 /* Put variable length auto array pointers always into stack.  */
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 747,761 ****
  	  || sym->attr.allocatable)
        && !DECL_ARTIFICIAL (decl))
      {
!       if (flag_max_stack_var_size > 0)
  	gfc_warning (OPT_Wsurprising,
! 		     "Array %qs at %L is larger than limit set by"
! 		     " %<-fmax-stack-var-size=%>, moved from stack to static"
! 		     " storage. This makes the procedure unsafe when called"
! 		     " recursively, or concurrently from multiple threads."
! 		     " Consider using %<-frecursive%>, or increase the"
! 		     " %<-fmax-stack-var-size=%> limit, or change the code to"
! 		     " use an ALLOCATABLE array.",
  		     sym->name, &sym->declared_at);
  
        TREE_STATIC (decl) = 1;
--- 749,769 ----
  	  || sym->attr.allocatable)
        && !DECL_ARTIFICIAL (decl))
      {
!       if (flag_max_stack_var_size > 0
! 	  && !(sym->ns->proc_name
! 	       && sym->ns->proc_name->attr.is_main_program))
  	gfc_warning (OPT_Wsurprising,
! 		     "Array %qs at %L is larger than limit set by "
! 		     "%<-fmax-stack-var-size=%>, moved from stack to static "
! 		     "storage. This makes the procedure unsafe when called "
! 		     "recursively, or concurrently from multiple threads. "
! 		     "Consider increasing the %<-fmax-stack-var-size=%> "
! 		     "limit (or use %<-frecursive%>, which implies "
! 		     "unlimited %<-fmax-stack-var-size%>) - or change the "
! 		     "code to use an ALLOCATABLE array. If the variable is "
! 		     "never accessed concurrently, this warning can be "
! 		     "ignored, and the variable could also be declared with "
! 		     "the SAVE attribute.",
  		     sym->name, &sym->declared_at);
  
        TREE_STATIC (decl) = 1;
*************** gfc_get_symbol_decl (gfc_symbol * sym)
*** 1527,1533 ****
       declaration of the entity and memory allocated/deallocated.  */
    if ((sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
        && sym->param_list != NULL
!       && !(sym->attr.host_assoc || sym->attr.use_assoc || sym->attr.dummy))
      gfc_defer_symbol_init (sym);
  
    /* Dummy PDT 'len' parameters should be checked when they are explicit.  */
--- 1535,1542 ----
       declaration of the entity and memory allocated/deallocated.  */
    if ((sym->ts.type == BT_DERIVED || sym->ts.type == BT_CLASS)
        && sym->param_list != NULL
!       && gfc_current_ns == sym->ns
!       && !(sym->attr.use_assoc || sym->attr.dummy))
      gfc_defer_symbol_init (sym);
  
    /* Dummy PDT 'len' parameters should be checked when they are explicit.  */
diff -Nrcpad gcc-10.3.0/gcc/fortran/trans-expr.c gcc-10.4.0/gcc/fortran/trans-expr.c
*** gcc-10.3.0/gcc/fortran/trans-expr.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/trans-expr.c	Tue Jun 28 08:54:28 2022
*************** gfc_trans_class_init_assign (gfc_code *c
*** 1648,1655 ****
  	}
      }
  
!   if (code->expr1->symtree->n.sym->attr.optional
!       || code->expr1->symtree->n.sym->ns->proc_name->attr.entry_master)
      {
        tree present = gfc_conv_expr_present (code->expr1->symtree->n.sym);
        tmp = build3_loc (input_location, COND_EXPR, TREE_TYPE (tmp),
--- 1648,1656 ----
  	}
      }
  
!   if (code->expr1->symtree->n.sym->attr.dummy
!       && (code->expr1->symtree->n.sym->attr.optional
! 	  || code->expr1->symtree->n.sym->ns->proc_name->attr.entry_master))
      {
        tree present = gfc_conv_expr_present (code->expr1->symtree->n.sym);
        tmp = build3_loc (input_location, COND_EXPR, TREE_TYPE (tmp),
*************** gfc_conv_string_length (gfc_charlen * cl
*** 2470,2476 ****
  			     se.expr, build_zero_cst (TREE_TYPE (se.expr)));
    gfc_add_block_to_block (pblock, &se.pre);
  
!   if (cl->backend_decl)
      gfc_add_modify (pblock, cl->backend_decl, se.expr);
    else
      cl->backend_decl = gfc_evaluate_now (se.expr, pblock);
--- 2471,2477 ----
  			     se.expr, build_zero_cst (TREE_TYPE (se.expr)));
    gfc_add_block_to_block (pblock, &se.pre);
  
!   if (cl->backend_decl && VAR_P (cl->backend_decl))
      gfc_add_modify (pblock, cl->backend_decl, se.expr);
    else
      cl->backend_decl = gfc_evaluate_now (se.expr, pblock);
*************** gfc_conv_substring (gfc_se * se, gfc_ref
*** 2536,2542 ****
    if (!CONSTANT_CLASS_P (tmp) && !DECL_P (tmp))
      end.expr = gfc_evaluate_now (end.expr, &se->pre);
  
!   if (gfc_option.rtcheck & GFC_RTCHECK_BOUNDS)
      {
        tree nonempty = fold_build2_loc (input_location, LE_EXPR,
  				       logical_type_node, start.expr,
--- 2537,2545 ----
    if (!CONSTANT_CLASS_P (tmp) && !DECL_P (tmp))
      end.expr = gfc_evaluate_now (end.expr, &se->pre);
  
!   if ((gfc_option.rtcheck & GFC_RTCHECK_BOUNDS)
!       && (ref->u.ss.start->symtree
! 	  && !ref->u.ss.start->symtree->n.sym->attr.implied_index))
      {
        tree nonempty = fold_build2_loc (input_location, LE_EXPR,
  				       logical_type_node, start.expr,
*************** gfc_conv_component_ref (gfc_se * se, gfc
*** 2669,2675 ****
    /* Allocatable deferred char arrays are to be handled by the gfc_deferred_
       strlen () conditional below.  */
    if (c->ts.type == BT_CHARACTER && !c->attr.proc_pointer
!       && !(c->attr.allocatable && c->ts.deferred)
        && !c->attr.pdt_string)
      {
        tmp = c->ts.u.cl->backend_decl;
--- 2672,2678 ----
    /* Allocatable deferred char arrays are to be handled by the gfc_deferred_
       strlen () conditional below.  */
    if (c->ts.type == BT_CHARACTER && !c->attr.proc_pointer
!       && !c->ts.deferred
        && !c->attr.pdt_string)
      {
        tmp = c->ts.u.cl->backend_decl;
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 5770,5776 ****
  				     CLASS_DATA (fsym)->attr.class_pointer
  				     || CLASS_DATA (fsym)->attr.allocatable);
  	}
!       else if (UNLIMITED_POLY (fsym) && e->ts.type != BT_CLASS)
  	{
  	  /* The intrinsic type needs to be converted to a temporary
  	     CLASS object for the unlimited polymorphic formal.  */
--- 5773,5782 ----
  				     CLASS_DATA (fsym)->attr.class_pointer
  				     || CLASS_DATA (fsym)->attr.allocatable);
  	}
!       else if (UNLIMITED_POLY (fsym) && e->ts.type != BT_CLASS
! 	       && e->ts.type != BT_PROCEDURE
! 	       && (gfc_expr_attr (e).flavor != FL_PROCEDURE
! 		   || gfc_expr_attr (e).proc != PROC_UNKNOWN))
  	{
  	  /* The intrinsic type needs to be converted to a temporary
  	     CLASS object for the unlimited polymorphic formal.  */
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 5958,5968 ****
  			    || (!e->value.function.esym
  				&& e->symtree->n.sym->attr.pointer))
  			&& fsym && fsym->attr.target)
! 		{
! 		  gfc_conv_expr (&parmse, e);
! 		  parmse.expr = gfc_build_addr_expr (NULL_TREE, parmse.expr);
! 		}
! 
  	      else if (e->expr_type == EXPR_FUNCTION
  		       && e->symtree->n.sym->result
  		       && e->symtree->n.sym->result != e->symtree->n.sym
--- 5964,5971 ----
  			    || (!e->value.function.esym
  				&& e->symtree->n.sym->attr.pointer))
  			&& fsym && fsym->attr.target)
! 		/* Make sure the function only gets called once.  */
! 		gfc_conv_expr_reference (&parmse, e, false);
  	      else if (e->expr_type == EXPR_FUNCTION
  		       && e->symtree->n.sym->result
  		       && e->symtree->n.sym->result != e->symtree->n.sym
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6072,6077 ****
--- 6075,6081 ----
  		      bool add_clobber;
  		      add_clobber = fsym && fsym->attr.intent == INTENT_OUT
  			&& !fsym->attr.allocatable && !fsym->attr.pointer
+ 			&& e->symtree && e->symtree->n.sym
  			&& !e->symtree->n.sym->attr.dimension
  			&& !e->symtree->n.sym->attr.pointer
  			&& !e->symtree->n.sym->attr.allocatable
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6364,6369 ****
--- 6368,6382 ----
  				fsym ? fsym->attr.intent : INTENT_INOUT,
  				fsym && fsym->attr.pointer);
  
+ 	      else if (e->ts.type == BT_CLASS && CLASS_DATA (e)->as
+ 		       && CLASS_DATA (e)->as->type == AS_ASSUMED_SIZE
+ 		       && nodesc_arg && fsym->ts.type == BT_DERIVED)
+ 		/* An assumed size class actual argument being passed to
+ 		   a 'no descriptor' formal argument just requires the
+ 		   data pointer to be passed. For class dummy arguments
+ 		   this is stored in the symbol backend decl..  */
+ 		parmse.expr = e->symtree->n.sym->backend_decl;
+ 
  	      else if (gfc_is_class_array_ref (e, NULL)
  		       && fsym && fsym->ts.type == BT_DERIVED)
  		/* The actual argument is a component reference to an
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 6435,6440 ****
--- 6448,6464 ----
  		    // deallocate the components first
  		    tmp = gfc_deallocate_alloc_comp (fsym->ts.u.derived,
  						     parmse.expr, e->rank);
+ 		    /* But check whether dummy argument is optional.  */
+ 		    if (tmp != NULL_TREE
+ 			&& fsym->attr.optional
+ 			&& e->expr_type == EXPR_VARIABLE
+ 			&& e->symtree->n.sym->attr.optional)
+ 		      {
+ 			tree present;
+ 			present = gfc_conv_expr_present (e->symtree->n.sym);
+ 			tmp = build3_v (COND_EXPR, present, tmp,
+ 					build_empty_stmt (input_location));
+ 		      }
  		    if (tmp != NULL_TREE)
  		      gfc_add_expr_to_block (&se->pre, tmp);
  		  }
*************** gfc_trans_structure_assign (tree dest, g
*** 8640,8647 ****
    return gfc_finish_block (&block);
  }
  
! void
! gfc_conv_union_initializer (vec<constructor_elt, va_gc> *v,
                              gfc_component *un, gfc_expr *init)
  {
    gfc_constructor *ctor;
--- 8664,8671 ----
    return gfc_finish_block (&block);
  }
  
! static void
! gfc_conv_union_initializer (vec<constructor_elt, va_gc> *&v,
                              gfc_component *un, gfc_expr *init)
  {
    gfc_constructor *ctor;
*************** gfc_trans_assignment_1 (gfc_expr * expr1
*** 11046,11052 ****
  		       || gfc_is_class_array_ref (expr1, NULL)
  		       || gfc_is_class_scalar_expr (expr1)
  		       || gfc_is_class_array_ref (expr2, NULL)
! 		       || gfc_is_class_scalar_expr (expr2));
  
    realloc_flag = flag_realloc_lhs
  		 && gfc_is_reallocatable_lhs (expr1)
--- 11070,11077 ----
  		       || gfc_is_class_array_ref (expr1, NULL)
  		       || gfc_is_class_scalar_expr (expr1)
  		       || gfc_is_class_array_ref (expr2, NULL)
! 		       || gfc_is_class_scalar_expr (expr2))
! 		   && lhs_attr.flavor != FL_PROCEDURE;
  
    realloc_flag = flag_realloc_lhs
  		 && gfc_is_reallocatable_lhs (expr1)
diff -Nrcpad gcc-10.3.0/gcc/fortran/trans-intrinsic.c gcc-10.4.0/gcc/fortran/trans-intrinsic.c
*** gcc-10.3.0/gcc/fortran/trans-intrinsic.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/trans-intrinsic.c	Tue Jun 28 08:54:28 2022
*************** rad2deg (int kind)
*** 4411,4416 ****
--- 4411,4428 ----
  }
  
  
+ static gfc_intrinsic_map_t *
+ gfc_lookup_intrinsic (gfc_isym_id id)
+ {
+   gfc_intrinsic_map_t *m = gfc_intrinsic_map;
+   for (; m->id != GFC_ISYM_NONE || m->double_built_in != END_BUILTINS; m++)
+     if (id == m->id)
+       break;
+   gcc_assert (id == m->id);
+   return m;
+ }
+ 
+ 
  /* ACOSD(x) is translated into ACOS(x) * 180 / pi.
     ASIND(x) is translated into ASIN(x) * 180 / pi.
     ATAND(x) is translated into ATAN(x) * 180 / pi.  */
*************** gfc_conv_intrinsic_atrigd (gfc_se * se,
*** 4421,4440 ****
    tree arg;
    tree atrigd;
    tree type;
  
    type = gfc_typenode_for_spec (&expr->ts);
  
    gfc_conv_intrinsic_function_args (se, expr, &arg, 1);
  
!   if (id == GFC_ISYM_ACOSD)
!     atrigd = gfc_builtin_decl_for_float_kind (BUILT_IN_ACOS, expr->ts.kind);
!   else if (id == GFC_ISYM_ASIND)
!     atrigd = gfc_builtin_decl_for_float_kind (BUILT_IN_ASIN, expr->ts.kind);
!   else if (id == GFC_ISYM_ATAND)
!     atrigd = gfc_builtin_decl_for_float_kind (BUILT_IN_ATAN, expr->ts.kind);
!   else
!     gcc_unreachable ();
! 
    atrigd = build_call_expr_loc (input_location, atrigd, 1, arg);
  
    se->expr = fold_build2_loc (input_location, MULT_EXPR, type, atrigd,
--- 4433,4459 ----
    tree arg;
    tree atrigd;
    tree type;
+   gfc_intrinsic_map_t *m;
  
    type = gfc_typenode_for_spec (&expr->ts);
  
    gfc_conv_intrinsic_function_args (se, expr, &arg, 1);
  
!   switch (id)
!     {
!     case GFC_ISYM_ACOSD:
!       m = gfc_lookup_intrinsic (GFC_ISYM_ACOS);
!       break;
!     case GFC_ISYM_ASIND:
!       m = gfc_lookup_intrinsic (GFC_ISYM_ASIN);
!       break;
!     case GFC_ISYM_ATAND:
!       m = gfc_lookup_intrinsic (GFC_ISYM_ATAN);
!       break;
!     default:
!       gcc_unreachable ();
!     }
!   atrigd = gfc_get_intrinsic_lib_fndecl (m, expr);
    atrigd = build_call_expr_loc (input_location, atrigd, 1, arg);
  
    se->expr = fold_build2_loc (input_location, MULT_EXPR, type, atrigd,
*************** gfc_conv_intrinsic_cotan (gfc_se *se, gf
*** 4470,4482 ****
        mpfr_clear (pio2);
  
        /* Find tan builtin function.  */
!       m = gfc_intrinsic_map;
!       for (; m->id != GFC_ISYM_NONE || m->double_built_in != END_BUILTINS; m++)
! 	if (GFC_ISYM_TAN == m->id)
! 	  break;
! 
!       tmp = fold_build2_loc (input_location, PLUS_EXPR, type, arg, tmp);
        tan = gfc_get_intrinsic_lib_fndecl (m, expr);
        tan = build_call_expr_loc (input_location, tan, 1, tmp);
        se->expr = fold_build1_loc (input_location, NEGATE_EXPR, type, tan);
      }
--- 4489,4497 ----
        mpfr_clear (pio2);
  
        /* Find tan builtin function.  */
!       m = gfc_lookup_intrinsic (GFC_ISYM_TAN);
        tan = gfc_get_intrinsic_lib_fndecl (m, expr);
+       tmp = fold_build2_loc (input_location, PLUS_EXPR, type, arg, tmp);
        tan = build_call_expr_loc (input_location, tan, 1, tmp);
        se->expr = fold_build1_loc (input_location, NEGATE_EXPR, type, tan);
      }
*************** gfc_conv_intrinsic_cotan (gfc_se *se, gf
*** 4486,4505 ****
        tree cos;
  
        /* Find cos builtin function.  */
!       m = gfc_intrinsic_map;
!       for (; m->id != GFC_ISYM_NONE || m->double_built_in != END_BUILTINS; m++)
! 	if (GFC_ISYM_COS == m->id)
! 	  break;
! 
        cos = gfc_get_intrinsic_lib_fndecl (m, expr);
        cos = build_call_expr_loc (input_location, cos, 1, arg);
  
        /* Find sin builtin function.  */
!       m = gfc_intrinsic_map;
!       for (; m->id != GFC_ISYM_NONE || m->double_built_in != END_BUILTINS; m++)
! 	if (GFC_ISYM_SIN == m->id)
! 	  break;
! 
        sin = gfc_get_intrinsic_lib_fndecl (m, expr);
        sin = build_call_expr_loc (input_location, sin, 1, arg);
  
--- 4501,4512 ----
        tree cos;
  
        /* Find cos builtin function.  */
!       m = gfc_lookup_intrinsic (GFC_ISYM_COS);
        cos = gfc_get_intrinsic_lib_fndecl (m, expr);
        cos = build_call_expr_loc (input_location, cos, 1, arg);
  
        /* Find sin builtin function.  */
!       m = gfc_lookup_intrinsic (GFC_ISYM_SIN);
        sin = gfc_get_intrinsic_lib_fndecl (m, expr);
        sin = build_call_expr_loc (input_location, sin, 1, arg);
  
*************** gfc_conv_intrinsic_cotand (gfc_se *se, g
*** 4531,4541 ****
    mpfr_clear (ninety);
  
    /* Find tand.  */
!   gfc_intrinsic_map_t *m = gfc_intrinsic_map;
!   for (; m->id != GFC_ISYM_NONE || m->double_built_in != END_BUILTINS; m++)
!     if (GFC_ISYM_TAND == m->id)
!       break;
! 
    tree tand = gfc_get_intrinsic_lib_fndecl (m, expr);
    tand = build_call_expr_loc (input_location, tand, 1, arg);
  
--- 4538,4544 ----
    mpfr_clear (ninety);
  
    /* Find tand.  */
!   gfc_intrinsic_map_t *m = gfc_lookup_intrinsic (GFC_ISYM_TAND);
    tree tand = gfc_get_intrinsic_lib_fndecl (m, expr);
    tand = build_call_expr_loc (input_location, tand, 1, arg);
  
*************** gfc_conv_intrinsic_atan2d (gfc_se *se, g
*** 4555,4561 ****
    gfc_conv_intrinsic_function_args (se, expr, args, 2);
    type = TREE_TYPE (args[0]);
  
!   atan2d = gfc_builtin_decl_for_float_kind (BUILT_IN_ATAN2, expr->ts.kind);
    atan2d = build_call_expr_loc (input_location, atan2d, 2, args[0], args[1]);
  
    se->expr = fold_build2_loc (input_location, MULT_EXPR, type, atan2d,
--- 4558,4565 ----
    gfc_conv_intrinsic_function_args (se, expr, args, 2);
    type = TREE_TYPE (args[0]);
  
!   gfc_intrinsic_map_t *m = gfc_lookup_intrinsic (GFC_ISYM_ATAN2);
!   atan2d = gfc_get_intrinsic_lib_fndecl (m, expr);
    atan2d = build_call_expr_loc (input_location, atan2d, 2, args[0], args[1]);
  
    se->expr = fold_build2_loc (input_location, MULT_EXPR, type, atan2d,
*************** gfc_conv_intrinsic_transfer (gfc_se * se
*** 8451,8457 ****
      {
      case BT_CHARACTER:
        tmp = size_of_string_in_bytes (arg->expr->ts.kind, argse.string_length);
!       mold_type = gfc_get_character_type_len (arg->expr->ts.kind, tmp);
        break;
      case BT_CLASS:
        tmp = gfc_class_vtab_size_get (argse.expr);
--- 8455,8462 ----
      {
      case BT_CHARACTER:
        tmp = size_of_string_in_bytes (arg->expr->ts.kind, argse.string_length);
!       mold_type = gfc_get_character_type_len (arg->expr->ts.kind,
! 					      argse.string_length);
        break;
      case BT_CLASS:
        tmp = gfc_class_vtab_size_get (argse.expr);
*************** gfc_conv_intrinsic_transfer (gfc_se * se
*** 8553,8559 ****
  
    se->expr = info->descriptor;
    if (expr->ts.type == BT_CHARACTER)
!     se->string_length = fold_convert (gfc_charlen_type_node, dest_word_len);
  
    return;
  
--- 8558,8570 ----
  
    se->expr = info->descriptor;
    if (expr->ts.type == BT_CHARACTER)
!     {
!       tmp = fold_convert (gfc_charlen_type_node,
! 			  TYPE_SIZE_UNIT (gfc_get_char_type (expr->ts.kind)));
!       se->string_length = fold_build2_loc (input_location, TRUNC_DIV_EXPR,
! 					   gfc_charlen_type_node,
! 					   dest_word_len, tmp);
!     }
  
    return;
  
*************** scalar_transfer:
*** 8607,8613 ****
        gfc_add_expr_to_block (&se->post, tmp);
  
        se->expr = tmpdecl;
!       se->string_length = fold_convert (gfc_charlen_type_node, dest_word_len);
      }
    else
      {
--- 8618,8628 ----
        gfc_add_expr_to_block (&se->post, tmp);
  
        se->expr = tmpdecl;
!       tmp = fold_convert (gfc_charlen_type_node,
! 			  TYPE_SIZE_UNIT (gfc_get_char_type (expr->ts.kind)));
!       se->string_length = fold_build2_loc (input_location, TRUNC_DIV_EXPR,
! 					   gfc_charlen_type_node,
! 					   dest_word_len, tmp);
      }
    else
      {
*************** gfc_conv_associated (gfc_se *se, gfc_exp
*** 8822,8828 ****
    else
      {
        /* An optional target.  */
!       if (arg2->expr->ts.type == BT_CLASS)
  	gfc_add_data_component (arg2->expr);
  
        if (scalar)
--- 8837,8844 ----
    else
      {
        /* An optional target.  */
!       if (arg2->expr->ts.type == BT_CLASS
! 	  && arg2->expr->expr_type != EXPR_FUNCTION)
  	gfc_add_data_component (arg2->expr);
  
        if (scalar)
*************** gfc_conv_associated (gfc_se *se, gfc_exp
*** 8843,8848 ****
--- 8859,8869 ----
  	      && arg2->expr->symtree->n.sym->attr.dummy)
  	    arg2se.expr = build_fold_indirect_ref_loc (input_location,
  						       arg2se.expr);
+ 	  if (arg2->expr->ts.type == BT_CLASS)
+ 	    {
+ 	      arg2se.expr = gfc_evaluate_now (arg2se.expr, &arg2se.pre);
+ 	      arg2se.expr = gfc_class_data_get (arg2se.expr);
+ 	    }
  	  gfc_add_block_to_block (&se->pre, &arg1se.pre);
  	  gfc_add_block_to_block (&se->post, &arg1se.post);
  	  gfc_add_block_to_block (&se->pre, &arg2se.pre);
diff -Nrcpad gcc-10.3.0/gcc/fortran/trans-stmt.c gcc-10.4.0/gcc/fortran/trans-stmt.c
*** gcc-10.3.0/gcc/fortran/trans-stmt.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/trans-stmt.c	Tue Jun 28 08:54:28 2022
*************** trans_associate_var (gfc_symbol *sym, gf
*** 1757,1763 ****
        if (e->ts.type == BT_CLASS)
  	{
  	  /* Go straight to the class data.  */
! 	  if (sym2->attr.dummy)
  	    {
  	      class_decl = DECL_LANG_SPECIFIC (sym2->backend_decl) ?
  			   GFC_DECL_SAVED_DESCRIPTOR (sym2->backend_decl) :
--- 1757,1763 ----
        if (e->ts.type == BT_CLASS)
  	{
  	  /* Go straight to the class data.  */
! 	  if (sym2->attr.dummy && !sym2->attr.optional)
  	    {
  	      class_decl = DECL_LANG_SPECIFIC (sym2->backend_decl) ?
  			   GFC_DECL_SAVED_DESCRIPTOR (sym2->backend_decl) :
*************** trans_associate_var (gfc_symbol *sym, gf
*** 1890,1896 ****
        gfc_conv_expr_descriptor (&se, e);
  
        if (sym->ts.type == BT_CHARACTER
! 	  && !se.direct_byref && sym->ts.deferred
  	  && !sym->attr.select_type_temporary
  	  && VAR_P (sym->ts.u.cl->backend_decl)
  	  && se.string_length != sym->ts.u.cl->backend_decl)
--- 1890,1896 ----
        gfc_conv_expr_descriptor (&se, e);
  
        if (sym->ts.type == BT_CHARACTER
! 	  && sym->ts.deferred
  	  && !sym->attr.select_type_temporary
  	  && VAR_P (sym->ts.u.cl->backend_decl)
  	  && se.string_length != sym->ts.u.cl->backend_decl)
diff -Nrcpad gcc-10.3.0/gcc/fortran/trans-types.c gcc-10.4.0/gcc/fortran/trans-types.c
*** gcc-10.3.0/gcc/fortran/trans-types.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/fortran/trans-types.c	Tue Jun 28 08:54:28 2022
*************** gfc_get_nodesc_array_type (tree etype, g
*** 1618,1624 ****
        GFC_TYPE_ARRAY_STRIDE (type, n) = tmp;
  
        expr = as->lower[n];
!       if (expr->expr_type == EXPR_CONSTANT)
          {
            tmp = gfc_conv_mpz_to_tree (expr->value.integer,
  				      gfc_index_integer_kind);
--- 1618,1624 ----
        GFC_TYPE_ARRAY_STRIDE (type, n) = tmp;
  
        expr = as->lower[n];
!       if (expr && expr->expr_type == EXPR_CONSTANT)
          {
            tmp = gfc_conv_mpz_to_tree (expr->value.integer,
  				      gfc_index_integer_kind);
*************** gfc_get_nodesc_array_type (tree etype, g
*** 1668,1674 ****
    for (n = as->rank; n < as->rank + as->corank; n++)
      {
        expr = as->lower[n];
!       if (expr->expr_type == EXPR_CONSTANT)
  	tmp = gfc_conv_mpz_to_tree (expr->value.integer,
  				    gfc_index_integer_kind);
        else
--- 1668,1674 ----
    for (n = as->rank; n < as->rank + as->corank; n++)
      {
        expr = as->lower[n];
!       if (expr && expr->expr_type == EXPR_CONSTANT)
  	tmp = gfc_conv_mpz_to_tree (expr->value.integer,
  				    gfc_index_integer_kind);
        else
*************** gfc_get_function_type (gfc_symbol * sym,
*** 3115,3128 ****
  	vec_safe_push (typelist, boolean_type_node);
        /* Coarrays which are descriptorless or assumed-shape pass with
  	 -fcoarray=lib the token and the offset as hidden arguments.  */
!       else if (arg
! 	       && flag_coarray == GFC_FCOARRAY_LIB
! 	       && ((arg->ts.type != BT_CLASS
! 		    && arg->attr.codimension
! 		    && !arg->attr.allocatable)
! 		   || (arg->ts.type == BT_CLASS
! 		       && CLASS_DATA (arg)->attr.codimension
! 		       && !CLASS_DATA (arg)->attr.allocatable)))
  	{
  	  vec_safe_push (typelist, pvoid_type_node);  /* caf_token.  */
  	  vec_safe_push (typelist, gfc_array_index_type);  /* caf_offset.  */
--- 3115,3128 ----
  	vec_safe_push (typelist, boolean_type_node);
        /* Coarrays which are descriptorless or assumed-shape pass with
  	 -fcoarray=lib the token and the offset as hidden arguments.  */
!       if (arg
! 	  && flag_coarray == GFC_FCOARRAY_LIB
! 	  && ((arg->ts.type != BT_CLASS
! 	       && arg->attr.codimension
! 	       && !arg->attr.allocatable)
! 	      || (arg->ts.type == BT_CLASS
! 		  && CLASS_DATA (arg)->attr.codimension
! 		  && !CLASS_DATA (arg)->attr.allocatable)))
  	{
  	  vec_safe_push (typelist, pvoid_type_node);  /* caf_token.  */
  	  vec_safe_push (typelist, gfc_array_index_type);  /* caf_offset.  */
*************** gfc_get_array_descr_info (const_tree typ
*** 3386,3393 ****
        if (!integer_zerop (dtype_off))
  	t = fold_build_pointer_plus (t, rank_off);
  
!       t = build1 (NOP_EXPR, build_pointer_type (gfc_array_index_type), t);
!       t = build1 (INDIRECT_REF, gfc_array_index_type, t);
        info->rank = t;
        t = build0 (PLACEHOLDER_EXPR, TREE_TYPE (dim_off));
        t = size_binop (MULT_EXPR, t, dim_size);
--- 3386,3393 ----
        if (!integer_zerop (dtype_off))
  	t = fold_build_pointer_plus (t, rank_off);
  
!       t = build1 (NOP_EXPR, build_pointer_type (TREE_TYPE (field)), t);
!       t = build1 (INDIRECT_REF, TREE_TYPE (field), t);
        info->rank = t;
        t = build0 (PLACEHOLDER_EXPR, TREE_TYPE (dim_off));
        t = size_binop (MULT_EXPR, t, dim_size);
diff -Nrcpad gcc-10.3.0/gcc/function.c gcc-10.4.0/gcc/function.c
*** gcc-10.3.0/gcc/function.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/function.c	Tue Jun 28 08:54:28 2022
*************** push_dummy_function (bool with_decl)
*** 4916,4921 ****
--- 4916,4924 ----
        fn_result_decl = build_decl (UNKNOWN_LOCATION, RESULT_DECL,
  					 NULL_TREE, void_type_node);
        DECL_RESULT (fn_decl) = fn_result_decl;
+       DECL_ARTIFICIAL (fn_decl) = 1;
+       tree fn_name = get_identifier (" ");
+       SET_DECL_ASSEMBLER_NAME (fn_decl, fn_name);
      }
    else
      fn_decl = NULL_TREE;
diff -Nrcpad gcc-10.3.0/gcc/gcc.c gcc-10.4.0/gcc/gcc.c
*** gcc-10.3.0/gcc/gcc.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gcc.c	Tue Jun 28 08:54:28 2022
*************** find_a_file (const struct path_prefix *p
*** 2864,2869 ****
--- 2864,2874 ----
      return xstrdup (DEFAULT_LINKER);
  #endif
  
+ #ifdef DEFAULT_DSYMUTIL
+   if (! strcmp (name, "dsymutil") && access (DEFAULT_DSYMUTIL, mode) == 0)
+     return xstrdup (DEFAULT_DSYMUTIL);
+ #endif
+ 
    /* Determine the filename to execute (special case for absolute paths).  */
  
    if (IS_ABSOLUTE_PATH (name))
diff -Nrcpad gcc-10.3.0/gcc/gengtype-lex.c gcc-10.4.0/gcc/gengtype-lex.c
*** gcc-10.3.0/gcc/gengtype-lex.c	Thu Apr  8 11:57:41 2021
--- gcc-10.4.0/gcc/gengtype-lex.c	Tue Jun 28 08:56:18 2022
*************** int yy_flex_debug = 0;
*** 1188,1194 ****
  #define YY_MORE_ADJ 0
  #define YY_RESTORE_YY_MORE_OFFSET
  char *yytext;
! #line 1 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* -*- indented-text -*- */
  /* Process source files and output type information.
     Copyright (C) 2002-2020 Free Software Foundation, Inc.
--- 1188,1194 ----
  #define YY_MORE_ADJ 0
  #define YY_RESTORE_YY_MORE_OFFSET
  char *yytext;
! #line 1 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* -*- indented-text -*- */
  /* Process source files and output type information.
     Copyright (C) 2002-2020 Free Software Foundation, Inc.
*************** You should have received a copy of the G
*** 1209,1215 ****
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  #define YY_NO_INPUT 1
! #line 24 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  #ifdef HOST_GENERATOR_FILE
  #include "config.h"
  #define GENERATOR_FILE 1
--- 1209,1215 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  #define YY_NO_INPUT 1
! #line 24 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  #ifdef HOST_GENERATOR_FILE
  #include "config.h"
  #define GENERATOR_FILE 1
*************** update_lineno (const char *l, size_t len
*** 1238,1244 ****
  }
  
  #line 1235 "gengtype-lex.c"
! #line 59 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
      /* Include '::' in identifiers to capture C++ scope qualifiers.  */
  
  #line 1239 "gengtype-lex.c"
--- 1238,1244 ----
  }
  
  #line 1235 "gengtype-lex.c"
! #line 59 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
      /* Include '::' in identifiers to capture C++ scope qualifiers.  */
  
  #line 1239 "gengtype-lex.c"
*************** YY_DECL
*** 1462,1468 ****
  		}
  
  	{
! #line 67 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  
    /* Do this on entry to yylex():  */
    *yylval = 0;
--- 1462,1468 ----
  		}
  
  	{
! #line 67 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  
    /* Do this on entry to yylex():  */
    *yylval = 0;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1534,1540 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 78 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return TYPEDEF;
--- 1534,1540 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 78 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return TYPEDEF;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1547,1553 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 82 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
--- 1547,1553 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 82 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1560,1566 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 86 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return UNION;
--- 1560,1566 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 86 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return UNION;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1573,1579 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 90 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
--- 1573,1579 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 90 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STRUCT;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1586,1592 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 94 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return EXTERN;
--- 1586,1592 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 94 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return EXTERN;
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1599,1605 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 98 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STATIC;
--- 1599,1605 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 98 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    BEGIN(in_struct);
    return STATIC;
*************** YY_RULE_SETUP
*** 1610,1634 ****
  
  case 7:
  YY_RULE_SETUP
! #line 106 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct_comment); }
  	YY_BREAK
  case 8:
  /* rule 8 can match eol */
  YY_RULE_SETUP
! #line 107 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 9:
  /* rule 9 can match eol */
  YY_RULE_SETUP
! #line 109 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 10:
  /* rule 10 can match eol */
  YY_RULE_SETUP
! #line 110 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 11:
--- 1610,1634 ----
  
  case 7:
  YY_RULE_SETUP
! #line 106 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct_comment); }
  	YY_BREAK
  case 8:
  /* rule 8 can match eol */
  YY_RULE_SETUP
! #line 107 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 9:
  /* rule 9 can match eol */
  YY_RULE_SETUP
! #line 109 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 10:
  /* rule 10 can match eol */
  YY_RULE_SETUP
! #line 110 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 11:
*************** YY_LINENO_REWIND_TO(yy_bp + 5);
*** 1638,1644 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 112 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* don't care */
  	YY_BREAK
  case 12:
--- 1638,1644 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 112 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* don't care */
  	YY_BREAK
  case 12:
*************** case 12:
*** 1647,1663 ****
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 114 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 13:
  /* rule 13 can match eol */
! #line 115 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 14:
  /* rule 14 can match eol */
! #line 116 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 15:
  /* rule 15 can match eol */
  YY_RULE_SETUP
! #line 116 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
      *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1);
      return IGNORABLE_CXX_KEYWORD;
--- 1647,1663 ----
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 114 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 13:
  /* rule 13 can match eol */
! #line 115 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 14:
  /* rule 14 can match eol */
! #line 116 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 15:
  /* rule 15 can match eol */
  YY_RULE_SETUP
! #line 116 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
      *yylval = XDUPVAR (const char, yytext, yyleng, yyleng + 1);
      return IGNORABLE_CXX_KEYWORD;
*************** YY_LINENO_REWIND_TO(yy_bp + 3);
*** 1670,1676 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 3;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 120 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return GTY_TOKEN; }
  	YY_BREAK
  case 17:
--- 1670,1676 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 3;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 120 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return GTY_TOKEN; }
  	YY_BREAK
  case 17:
*************** YY_LINENO_REWIND_TO(yy_bp + 5);
*** 1680,1686 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 121 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return UNION; }
  	YY_BREAK
  case 18:
--- 1680,1686 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 121 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return UNION; }
  	YY_BREAK
  case 18:
*************** YY_LINENO_REWIND_TO(yy_bp + 6);
*** 1690,1696 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 6;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 122 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 19:
--- 1690,1696 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 6;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 122 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 19:
*************** YY_LINENO_REWIND_TO(yy_bp + 5);
*** 1700,1706 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 123 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 20:
--- 1700,1706 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 5;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 123 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return STRUCT; }
  	YY_BREAK
  case 20:
*************** YY_LINENO_REWIND_TO(yy_bp + 7);
*** 1710,1716 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 7;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 124 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return TYPEDEF; }
  	YY_BREAK
  case 21:
--- 1710,1716 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 7;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 124 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return TYPEDEF; }
  	YY_BREAK
  case 21:
*************** YY_LINENO_REWIND_TO(yy_bp + 4);
*** 1720,1726 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 125 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return ENUM; }
  	YY_BREAK
  case 22:
--- 1720,1726 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 125 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return ENUM; }
  	YY_BREAK
  case 22:
*************** YY_LINENO_REWIND_TO(yy_bp + 9);
*** 1730,1736 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 9;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 126 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return PTR_ALIAS; }
  	YY_BREAK
  case 23:
--- 1730,1736 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 9;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 126 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return PTR_ALIAS; }
  	YY_BREAK
  case 23:
*************** YY_LINENO_REWIND_TO(yy_bp + 10);
*** 1740,1746 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 10;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 127 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return NESTED_PTR; }
  	YY_BREAK
  case 24:
--- 1740,1746 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 10;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 127 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return NESTED_PTR; }
  	YY_BREAK
  case 24:
*************** YY_LINENO_REWIND_TO(yy_bp + 4);
*** 1750,1761 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 128 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return USER_GTY; }
  	YY_BREAK
  case 25:
  YY_RULE_SETUP
! #line 129 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return NUM; }
  	YY_BREAK
  case 26:
--- 1750,1761 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 4;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 128 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return USER_GTY; }
  	YY_BREAK
  case 25:
  YY_RULE_SETUP
! #line 129 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return NUM; }
  	YY_BREAK
  case 26:
*************** case 26:
*** 1764,1774 ****
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 132 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 27:
  /* rule 27 can match eol */
  YY_RULE_SETUP
! #line 132 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    size_t len;
  
--- 1764,1774 ----
  YY_LINENO_REWIND_TO(yy_cp - 1);
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
! #line 132 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 27:
  /* rule 27 can match eol */
  YY_RULE_SETUP
! #line 132 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    size_t len;
  
*************** YY_LINENO_REWIND_TO(yy_cp - 1);
*** 1787,1793 ****
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 143 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
    return ID;
--- 1787,1793 ----
  (yy_c_buf_p) = yy_cp -= 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 143 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext, yyleng, yyleng+1);
    return ID;
*************** YY_RULE_SETUP
*** 1796,1802 ****
  case 29:
  /* rule 29 can match eol */
  YY_RULE_SETUP
! #line 148 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return STRING;
--- 1796,1802 ----
  case 29:
  /* rule 29 can match eol */
  YY_RULE_SETUP
! #line 148 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return STRING;
*************** YY_RULE_SETUP
*** 1806,1812 ****
  case 30:
  /* rule 30 can match eol */
  YY_RULE_SETUP
! #line 153 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return ARRAY;
--- 1806,1812 ----
  case 30:
  /* rule 30 can match eol */
  YY_RULE_SETUP
! #line 153 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng-1);
    return ARRAY;
*************** YY_RULE_SETUP
*** 1815,1821 ****
  case 31:
  /* rule 31 can match eol */
  YY_RULE_SETUP
! #line 157 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
    return CHAR;
--- 1815,1821 ----
  case 31:
  /* rule 31 can match eol */
  YY_RULE_SETUP
! #line 157 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    *yylval = XDUPVAR (const char, yytext+1, yyleng-2, yyleng);
    return CHAR;
*************** YY_RULE_SETUP
*** 1823,1846 ****
  	YY_BREAK
  case 32:
  YY_RULE_SETUP
! #line 162 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return ELLIPSIS; }
  	YY_BREAK
  case 33:
  YY_RULE_SETUP
! #line 163 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { return yytext[0]; }
  	YY_BREAK
  /* ignore pp-directives */
  case 34:
  /* rule 34 can match eol */
  YY_RULE_SETUP
! #line 166 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {lexer_line.line++;}
  	YY_BREAK
  case 35:
  YY_RULE_SETUP
! #line 168 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, "unexpected character `%s'", yytext);
  }
--- 1823,1846 ----
  	YY_BREAK
  case 32:
  YY_RULE_SETUP
! #line 162 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return ELLIPSIS; }
  	YY_BREAK
  case 33:
  YY_RULE_SETUP
! #line 163 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { return yytext[0]; }
  	YY_BREAK
  /* ignore pp-directives */
  case 34:
  /* rule 34 can match eol */
  YY_RULE_SETUP
! #line 166 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {lexer_line.line++;}
  	YY_BREAK
  case 35:
  YY_RULE_SETUP
! #line 168 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, "unexpected character `%s'", yytext);
  }
*************** YY_RULE_SETUP
*** 1848,1883 ****
  
  case 36:
  YY_RULE_SETUP
! #line 173 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_comment); }
  	YY_BREAK
  case 37:
  /* rule 37 can match eol */
  YY_RULE_SETUP
! #line 174 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 38:
  /* rule 38 can match eol */
  YY_RULE_SETUP
! #line 175 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 39:
! #line 177 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 40:
  /* rule 40 can match eol */
! #line 178 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 41:
  /* rule 41 can match eol */
  YY_RULE_SETUP
! #line 178 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 42:
  /* rule 42 can match eol */
  YY_RULE_SETUP
! #line 179 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 43:
--- 1848,1883 ----
  
  case 36:
  YY_RULE_SETUP
! #line 173 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_comment); }
  	YY_BREAK
  case 37:
  /* rule 37 can match eol */
  YY_RULE_SETUP
! #line 174 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 38:
  /* rule 38 can match eol */
  YY_RULE_SETUP
! #line 175 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 39:
! #line 177 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 40:
  /* rule 40 can match eol */
! #line 178 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 41:
  /* rule 41 can match eol */
  YY_RULE_SETUP
! #line 178 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 42:
  /* rule 42 can match eol */
  YY_RULE_SETUP
! #line 179 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { update_lineno (yytext, yyleng); }
  	YY_BREAK
  case 43:
*************** YY_LINENO_REWIND_TO(yy_bp + 1);
*** 1887,1907 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 180 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 44:
  /* rule 44 can match eol */
  YY_RULE_SETUP
! #line 183 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 45:
! #line 185 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 46:
  YY_RULE_SETUP
! #line 185 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 47:
--- 1887,1907 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 180 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 44:
  /* rule 44 can match eol */
  YY_RULE_SETUP
! #line 183 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { lexer_line.line++; }
  	YY_BREAK
  case 45:
! #line 185 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 46:
  YY_RULE_SETUP
! #line 185 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 47:
*************** YY_LINENO_REWIND_TO(yy_bp + 1);
*** 1911,1935 ****
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 186 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 48:
  YY_RULE_SETUP
! #line 189 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { BEGIN(INITIAL); } 
  	YY_BREAK
  case 49:
  YY_RULE_SETUP
! #line 190 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct); }
  	YY_BREAK
  case 50:
! #line 193 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  case 51:
  YY_RULE_SETUP
! #line 193 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, 
  		 "unterminated comment or string; unexpected EOF");
--- 1911,1935 ----
  (yy_c_buf_p) = yy_cp = yy_bp + 1;
  YY_DO_BEFORE_ACTION; /* set up yytext again */
  YY_RULE_SETUP
! #line 186 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  
  case 48:
  YY_RULE_SETUP
! #line 189 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { BEGIN(INITIAL); } 
  	YY_BREAK
  case 49:
  YY_RULE_SETUP
! #line 190 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  { BEGIN(in_struct); }
  	YY_BREAK
  case 50:
! #line 193 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  case 51:
  YY_RULE_SETUP
! #line 193 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  {
    error_at_line (&lexer_line, 
  		 "unterminated comment or string; unexpected EOF");
*************** YY_RULE_SETUP
*** 1938,1949 ****
  case 52:
  /* rule 52 can match eol */
  YY_RULE_SETUP
! #line 198 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 53:
  YY_RULE_SETUP
! #line 200 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  YY_FATAL_ERROR( "flex scanner jammed" );
  	YY_BREAK
  #line 1944 "gengtype-lex.c"
--- 1938,1949 ----
  case 52:
  /* rule 52 can match eol */
  YY_RULE_SETUP
! #line 198 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  /* do nothing */
  	YY_BREAK
  case 53:
  YY_RULE_SETUP
! #line 200 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  YY_FATAL_ERROR( "flex scanner jammed" );
  	YY_BREAK
  #line 1944 "gengtype-lex.c"
*************** void yyfree (void * ptr )
*** 2921,2927 ****
  
  #define YYTABLES_NAME "yytables"
  
! #line 200 "/home/rguenther/src/releases/gcc-10.3.0/gcc-10.3.0/gcc/gengtype-lex.l"
  
  
  void
--- 2921,2927 ----
  
  #define YYTABLES_NAME "yytables"
  
! #line 200 "/d/gcc-10.4.0/gcc-10.4.0/gcc/gengtype-lex.l"
  
  
  void
diff -Nrcpad gcc-10.3.0/gcc/gimple-expr.c gcc-10.4.0/gcc/gimple-expr.c
*** gcc-10.3.0/gcc/gimple-expr.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-expr.c	Tue Jun 28 08:54:28 2022
*************** is_gimple_lvalue (tree t)
*** 612,623 ****
  /* Helper for is_gimple_condexpr and is_gimple_condexpr_for_cond.  */
  
  static bool
! is_gimple_condexpr_1 (tree t, bool allow_traps)
  {
!   return (is_gimple_val (t) || (COMPARISON_CLASS_P (t)
! 				&& (allow_traps || !tree_could_throw_p (t))
! 				&& is_gimple_val (TREE_OPERAND (t, 0))
! 				&& is_gimple_val (TREE_OPERAND (t, 1))));
  }
  
  /* Return true if T is a GIMPLE condition.  */
--- 612,627 ----
  /* Helper for is_gimple_condexpr and is_gimple_condexpr_for_cond.  */
  
  static bool
! is_gimple_condexpr_1 (tree t, bool allow_traps, bool allow_cplx)
  {
!   tree op0;
!   return (is_gimple_val (t)
! 	  || (COMPARISON_CLASS_P (t)
! 	      && (allow_traps || !tree_could_throw_p (t))
! 	      && ((op0 = TREE_OPERAND (t, 0)), true)
! 	      && (allow_cplx || TREE_CODE (TREE_TYPE (op0)) != COMPLEX_TYPE)
! 	      && is_gimple_val (op0)
! 	      && is_gimple_val (TREE_OPERAND (t, 1))));
  }
  
  /* Return true if T is a GIMPLE condition.  */
*************** is_gimple_condexpr_1 (tree t, bool allow
*** 625,631 ****
  bool
  is_gimple_condexpr (tree t)
  {
!   return is_gimple_condexpr_1 (t, true);
  }
  
  /* Like is_gimple_condexpr, but does not allow T to trap.  */
--- 629,637 ----
  bool
  is_gimple_condexpr (tree t)
  {
!   /* Always split out _Complex type compares since complex lowering
!      doesn't handle this case.  */
!   return is_gimple_condexpr_1 (t, true, false);
  }
  
  /* Like is_gimple_condexpr, but does not allow T to trap.  */
*************** is_gimple_condexpr (tree t)
*** 633,639 ****
  bool
  is_gimple_condexpr_for_cond (tree t)
  {
!   return is_gimple_condexpr_1 (t, false);
  }
  
  /* Return true if T is a gimple address.  */
--- 639,645 ----
  bool
  is_gimple_condexpr_for_cond (tree t)
  {
!   return is_gimple_condexpr_1 (t, false, true);
  }
  
  /* Return true if T is a gimple address.  */
diff -Nrcpad gcc-10.3.0/gcc/gimple-fold.c gcc-10.4.0/gcc/gimple-fold.c
*** gcc-10.3.0/gcc/gimple-fold.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-fold.c	Tue Jun 28 08:54:28 2022
*************** get_symbol_constant_value (tree sym)
*** 285,291 ****
        if (val)
  	{
  	  val = canonicalize_constructor_val (unshare_expr (val), sym);
! 	  if (val && is_gimple_min_invariant (val))
  	    return val;
  	  else
  	    return NULL_TREE;
--- 285,293 ----
        if (val)
  	{
  	  val = canonicalize_constructor_val (unshare_expr (val), sym);
! 	  if (val
! 	      && is_gimple_min_invariant (val)
! 	      && useless_type_conversion_p (TREE_TYPE (sym), TREE_TYPE (val)))
  	    return val;
  	  else
  	    return NULL_TREE;
*************** fold_gimple_assign (gimple_stmt_iterator
*** 445,451 ****
  					   CONSTRUCTOR_ELTS (rhs));
  	  }
  
! 	else if (DECL_P (rhs))
  	  return get_symbol_constant_value (rhs);
        }
        break;
--- 447,454 ----
  					   CONSTRUCTOR_ELTS (rhs));
  	  }
  
! 	else if (DECL_P (rhs)
! 		 && is_gimple_reg_type (TREE_TYPE (rhs)))
  	  return get_symbol_constant_value (rhs);
        }
        break;
*************** static bool
*** 4840,4845 ****
--- 4843,4849 ----
  maybe_canonicalize_mem_ref_addr (tree *t, bool is_debug = false)
  {
    bool res = false;
+   tree *orig_t = t;
  
    if (TREE_CODE (*t) == ADDR_EXPR)
      t = &TREE_OPERAND (*t, 0);
*************** maybe_canonicalize_mem_ref_addr (tree *t
*** 4952,4957 ****
--- 4956,4963 ----
        if (tem)
  	{
  	  *t = tem;
+ 	  if (TREE_CODE (*orig_t) == ADDR_EXPR)
+ 	    recompute_tree_invariant_for_addr_expr (*orig_t);
  	  res = true;
  	}
      }
diff -Nrcpad gcc-10.3.0/gcc/gimple-loop-interchange.cc gcc-10.4.0/gcc/gimple-loop-interchange.cc
*** gcc-10.3.0/gcc/gimple-loop-interchange.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-loop-interchange.cc	Tue Jun 28 08:54:28 2022
*************** tree_loop_interchange::valid_data_depend
*** 1044,1050 ****
  
  	  /* Be conservative, skip case if either direction at i_idx/o_idx
  	     levels is not '=' or '<'.  */
! 	  if (dist_vect[i_idx] < 0 || dist_vect[o_idx] < 0)
  	    return false;
  	}
      }
--- 1044,1053 ----
  
  	  /* Be conservative, skip case if either direction at i_idx/o_idx
  	     levels is not '=' or '<'.  */
! 	  if ((!DDR_REVERSED_P (ddr) && dist_vect[i_idx] < 0)
! 	      || (DDR_REVERSED_P (ddr) && dist_vect[i_idx] > 0)
! 	      || (!DDR_REVERSED_P (ddr) && dist_vect[o_idx] < 0)
! 	      || (DDR_REVERSED_P (ddr) && dist_vect[o_idx] > 0))
  	    return false;
  	}
      }
diff -Nrcpad gcc-10.3.0/gcc/gimple-loop-jam.c gcc-10.4.0/gcc/gimple-loop-jam.c
*** gcc-10.3.0/gcc/gimple-loop-jam.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-loop-jam.c	Tue Jun 28 08:54:28 2022
*************** adjust_unroll_factor (class loop *inner,
*** 403,412 ****
  	     a >= N, or b > 0, or b is zero and a > 0.  Otherwise the unroll
  	     factor needs to be limited so that the first condition holds.
  	     That may limit the factor down to zero in the worst case.  */
! 	  int dist = dist_v[0];
  	  if (dist < 0)
  	    gcc_unreachable ();
! 	  else if ((unsigned)dist >= *unroll)
  	    ;
  	  else if (lambda_vector_zerop (dist_v + 1, DDR_NB_LOOPS (ddr) - 1))
  	    {
--- 403,412 ----
  	     a >= N, or b > 0, or b is zero and a > 0.  Otherwise the unroll
  	     factor needs to be limited so that the first condition holds.
  	     That may limit the factor down to zero in the worst case.  */
! 	  lambda_int dist = dist_v[0];
  	  if (dist < 0)
  	    gcc_unreachable ();
! 	  else if (dist >= (lambda_int)*unroll)
  	    ;
  	  else if (lambda_vector_zerop (dist_v + 1, DDR_NB_LOOPS (ddr) - 1))
  	    {
diff -Nrcpad gcc-10.3.0/gcc/gimple-ssa-evrp-analyze.c gcc-10.4.0/gcc/gimple-ssa-evrp-analyze.c
*** gcc-10.3.0/gcc/gimple-ssa-evrp-analyze.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-ssa-evrp-analyze.c	Tue Jun 28 08:54:28 2022
*************** evrp_range_analyzer::record_ranges_from_
*** 220,226 ****
  	      push_value_range (vrs[i].first, vrs[i].second);
  	      if (is_fallthru
  		  && m_update_global_ranges
! 		  && all_uses_feed_or_dominated_by_stmt (vrs[i].first, stmt))
  		{
  		  set_ssa_range_info (vrs[i].first, vrs[i].second);
  		  maybe_set_nonzero_bits (pred_e, vrs[i].first);
--- 220,230 ----
  	      push_value_range (vrs[i].first, vrs[i].second);
  	      if (is_fallthru
  		  && m_update_global_ranges
! 		  && all_uses_feed_or_dominated_by_stmt (vrs[i].first, stmt)
! 		  /* The condition must post-dominate the definition point.  */
! 		  && (SSA_NAME_IS_DEFAULT_DEF (vrs[i].first)
! 		      || (gimple_bb (SSA_NAME_DEF_STMT (vrs[i].first))
! 			  == pred_e->src)))
  		{
  		  set_ssa_range_info (vrs[i].first, vrs[i].second);
  		  maybe_set_nonzero_bits (pred_e, vrs[i].first);
diff -Nrcpad gcc-10.3.0/gcc/gimple-ssa-store-merging.c gcc-10.4.0/gcc/gimple-ssa-store-merging.c
*** gcc-10.3.0/gcc/gimple-ssa-store-merging.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-ssa-store-merging.c	Tue Jun 28 08:54:28 2022
*************** find_bswap_or_nop_finalize (struct symbo
*** 822,833 ****
  	{
  	  mask = ((uint64_t) 1 << (rsize * BITS_PER_MARKER)) - 1;
  	  *cmpxchg &= mask;
! 	  *cmpnop >>= (n->range - rsize) * BITS_PER_MARKER;
  	}
        else
  	{
  	  mask = ((uint64_t) 1 << (rsize * BITS_PER_MARKER)) - 1;
! 	  *cmpxchg >>= (n->range - rsize) * BITS_PER_MARKER;
  	  *cmpnop &= mask;
  	}
        n->range = rsize;
--- 822,839 ----
  	{
  	  mask = ((uint64_t) 1 << (rsize * BITS_PER_MARKER)) - 1;
  	  *cmpxchg &= mask;
! 	  if (n->range - rsize == sizeof (int64_t))
! 	    *cmpnop = 0;
! 	  else
! 	    *cmpnop >>= (n->range - rsize) * BITS_PER_MARKER;
  	}
        else
  	{
  	  mask = ((uint64_t) 1 << (rsize * BITS_PER_MARKER)) - 1;
! 	  if (n->range - rsize == sizeof (int64_t))
! 	    *cmpxchg = 0;
! 	  else
! 	    *cmpxchg >>= (n->range - rsize) * BITS_PER_MARKER;
  	  *cmpnop &= mask;
  	}
        n->range = rsize;
*************** mem_valid_for_store_merging (tree mem, p
*** 4574,4580 ****
    tree base_addr = get_inner_reference (mem, &bitsize, &bitpos, &offset, &mode,
  					&unsignedp, &reversep, &volatilep);
    *pbitsize = bitsize;
!   if (known_eq (bitsize, 0))
      return NULL_TREE;
  
    if (TREE_CODE (mem) == COMPONENT_REF
--- 4580,4586 ----
    tree base_addr = get_inner_reference (mem, &bitsize, &bitpos, &offset, &mode,
  					&unsignedp, &reversep, &volatilep);
    *pbitsize = bitsize;
!   if (known_le (bitsize, 0))
      return NULL_TREE;
  
    if (TREE_CODE (mem) == COMPONENT_REF
*************** get_status_for_store_merging (basic_bloc
*** 4957,4962 ****
--- 4963,4969 ----
    unsigned int num_statements = 0;
    gimple_stmt_iterator gsi;
    edge e;
+   gimple *last_stmt = NULL;
  
    for (gsi = gsi_after_labels (bb); !gsi_end_p (gsi); gsi_next (&gsi))
      {
*************** get_status_for_store_merging (basic_bloc
*** 4965,4970 ****
--- 4972,4979 ----
        if (is_gimple_debug (stmt))
  	continue;
  
+       last_stmt = stmt;
+ 
        if (store_valid_for_store_merging_p (stmt) && ++num_statements >= 2)
  	break;
      }
*************** get_status_for_store_merging (basic_bloc
*** 4973,4979 ****
      return BB_INVALID;
  
    if (cfun->can_throw_non_call_exceptions && cfun->eh
!       && store_valid_for_store_merging_p (gimple_seq_last_stmt (bb_seq (bb)))
        && (e = find_fallthru_edge (bb->succs))
        && e->dest == bb->next_bb)
      return BB_EXTENDED_VALID;
--- 4982,4988 ----
      return BB_INVALID;
  
    if (cfun->can_throw_non_call_exceptions && cfun->eh
!       && store_valid_for_store_merging_p (last_stmt)
        && (e = find_fallthru_edge (bb->succs))
        && e->dest == bb->next_bb)
      return BB_EXTENDED_VALID;
diff -Nrcpad gcc-10.3.0/gcc/gimple-ssa-warn-restrict.c gcc-10.4.0/gcc/gimple-ssa-warn-restrict.c
*** gcc-10.3.0/gcc/gimple-ssa-warn-restrict.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimple-ssa-warn-restrict.c	Tue Jun 28 08:54:28 2022
*************** builtin_memref::set_base_and_offset (tre
*** 505,511 ****
      {
        tree memrefoff = fold_convert (ptrdiff_type_node, TREE_OPERAND (base, 1));
        extend_offset_range (memrefoff);
-       base = TREE_OPERAND (base, 0);
  
        if (refoff != HOST_WIDE_INT_MIN
        	  && TREE_CODE (expr) == COMPONENT_REF)
--- 505,510 ----
*************** builtin_memref::set_base_and_offset (tre
*** 518,531 ****
  	     REFOFF is set to s[1].b - (char*)s.  */
  	  offset_int off = tree_to_shwi (memrefoff);
  	  refoff += off;
-       	}
  
!       if (!integer_zerop (memrefoff))
! 	/* A non-zero offset into an array of struct with flexible array
! 	   members implies that the array is empty because there is no
! 	   way to initialize such a member when it belongs to an array.
! 	   This must be some sort of a bug.  */
! 	refsize = 0;
      }
  
    if (TREE_CODE (ref) == COMPONENT_REF)
--- 517,535 ----
  	     REFOFF is set to s[1].b - (char*)s.  */
  	  offset_int off = tree_to_shwi (memrefoff);
  	  refoff += off;
  
! 	  if (!integer_zerop (memrefoff)
! 	      && !COMPLETE_TYPE_P (TREE_TYPE (expr))
! 	      && multiple_of_p (sizetype, memrefoff,
! 				TYPE_SIZE_UNIT (TREE_TYPE (base))))
! 	    /* A non-zero offset into an array of struct with flexible array
! 	       members implies that the array is empty because there is no
! 	       way to initialize such a member when it belongs to an array.
! 	       This must be some sort of a bug.  */
! 	    refsize = 0;
! 	}
! 
!       base = TREE_OPERAND (base, 0);
      }
  
    if (TREE_CODE (ref) == COMPONENT_REF)
diff -Nrcpad gcc-10.3.0/gcc/gimplify.c gcc-10.4.0/gcc/gimplify.c
*** gcc-10.3.0/gcc/gimplify.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/gimplify.c	Tue Jun 28 08:54:28 2022
*************** omp_check_private (struct gimplify_omp_c
*** 7738,7744 ****
  
        if ((ctx->region_type & (ORT_TARGET | ORT_TARGET_DATA)) != 0
  	  && (n == NULL || (n->value & GOVD_DATA_SHARE_CLASS) == 0))
! 	continue;
  
        if (n != NULL)
  	{
--- 7738,7750 ----
  
        if ((ctx->region_type & (ORT_TARGET | ORT_TARGET_DATA)) != 0
  	  && (n == NULL || (n->value & GOVD_DATA_SHARE_CLASS) == 0))
! 	{
! 	  if ((ctx->region_type & ORT_TARGET_DATA) != 0
! 	      || n == NULL
! 	      || (n->value & GOVD_MAP) == 0)
! 	    continue;
! 	  return false;
! 	}
  
        if (n != NULL)
  	{
*************** omp_check_private (struct gimplify_omp_c
*** 7747,7757 ****
  	    return false;
  	  return (n->value & GOVD_SHARED) == 0;
  	}
      }
!   while (ctx->region_type == ORT_WORKSHARE
! 	 || ctx->region_type == ORT_TASKGROUP
! 	 || ctx->region_type == ORT_SIMD
! 	 || ctx->region_type == ORT_ACC);
    return false;
  }
  
--- 7753,7768 ----
  	    return false;
  	  return (n->value & GOVD_SHARED) == 0;
  	}
+ 
+       if (ctx->region_type == ORT_WORKSHARE
+ 	  || ctx->region_type == ORT_TASKGROUP
+ 	  || ctx->region_type == ORT_SIMD
+ 	  || ctx->region_type == ORT_ACC)
+ 	continue;
+ 
+       break;
      }
!   while (1);
    return false;
  }
  
*************** gimplify_omp_for (tree *expr_p, gimple_s
*** 12244,12264 ****
  /* Helper for gimplify_omp_loop, called through walk_tree.  */
  
  static tree
! replace_reduction_placeholders (tree *tp, int *walk_subtrees, void *data)
  {
!   if (DECL_P (*tp))
      {
!       tree *d = (tree *) data;
!       if (*tp == OMP_CLAUSE_REDUCTION_PLACEHOLDER (d[0]))
! 	{
! 	  *tp = OMP_CLAUSE_REDUCTION_PLACEHOLDER (d[1]);
! 	  *walk_subtrees = 0;
! 	}
!       else if (*tp == OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (d[0]))
! 	{
! 	  *tp = OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (d[1]);
! 	  *walk_subtrees = 0;
! 	}
      }
    return NULL_TREE;
  }
--- 12255,12269 ----
  /* Helper for gimplify_omp_loop, called through walk_tree.  */
  
  static tree
! note_no_context_vars (tree *tp, int *, void *data)
  {
!   if (VAR_P (*tp)
!       && DECL_CONTEXT (*tp) == NULL_TREE
!       && !is_global_var (*tp))
      {
!       vec<tree> *d = (vec<tree> *) data;
!       d->safe_push (*tp);
!       DECL_CONTEXT (*tp) = current_function_decl;
      }
    return NULL_TREE;
  }
*************** gimplify_omp_loop (tree *expr_p, gimple_
*** 12427,12433 ****
      {
        if (pass == 2)
  	{
! 	  tree bind = build3 (BIND_EXPR, void_type_node, NULL, NULL, NULL);
  	  append_to_statement_list (*expr_p, &BIND_EXPR_BODY (bind));
  	  *expr_p = make_node (OMP_PARALLEL);
  	  TREE_TYPE (*expr_p) = void_type_node;
--- 12432,12439 ----
      {
        if (pass == 2)
  	{
! 	  tree bind = build3 (BIND_EXPR, void_type_node, NULL, NULL,
! 			      make_node (BLOCK));
  	  append_to_statement_list (*expr_p, &BIND_EXPR_BODY (bind));
  	  *expr_p = make_node (OMP_PARALLEL);
  	  TREE_TYPE (*expr_p) = void_type_node;
*************** gimplify_omp_loop (tree *expr_p, gimple_
*** 12494,12518 ****
  	    *pc = copy_node (c);
  	    OMP_CLAUSE_DECL (*pc) = unshare_expr (OMP_CLAUSE_DECL (c));
  	    TREE_TYPE (*pc) = unshare_expr (TREE_TYPE (c));
- 	    OMP_CLAUSE_REDUCTION_INIT (*pc)
- 	      = unshare_expr (OMP_CLAUSE_REDUCTION_INIT (c));
- 	    OMP_CLAUSE_REDUCTION_MERGE (*pc)
- 	      = unshare_expr (OMP_CLAUSE_REDUCTION_MERGE (c));
  	    if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (*pc))
  	      {
  		OMP_CLAUSE_REDUCTION_PLACEHOLDER (*pc)
  		  = copy_node (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c));
  		if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (*pc))
  		  OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (*pc)
  		    = copy_node (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (c));
! 		tree nc = *pc;
! 		tree data[2] = { c, nc };
! 		walk_tree_without_duplicates (&OMP_CLAUSE_REDUCTION_INIT (nc),
! 					      replace_reduction_placeholders,
! 					      data);
! 		walk_tree_without_duplicates (&OMP_CLAUSE_REDUCTION_MERGE (nc),
! 					      replace_reduction_placeholders,
! 					      data);
  	      }
  	    pc = &OMP_CLAUSE_CHAIN (*pc);
  	    break;
--- 12500,12565 ----
  	    *pc = copy_node (c);
  	    OMP_CLAUSE_DECL (*pc) = unshare_expr (OMP_CLAUSE_DECL (c));
  	    TREE_TYPE (*pc) = unshare_expr (TREE_TYPE (c));
  	    if (OMP_CLAUSE_REDUCTION_PLACEHOLDER (*pc))
  	      {
+ 		auto_vec<tree> no_context_vars;
+ 		int walk_subtrees = 0;
+ 		note_no_context_vars (&OMP_CLAUSE_REDUCTION_PLACEHOLDER (c),
+ 				      &walk_subtrees, &no_context_vars);
+ 		if (tree p = OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (c))
+ 		  note_no_context_vars (&p, &walk_subtrees, &no_context_vars);
+ 		walk_tree_without_duplicates (&OMP_CLAUSE_REDUCTION_INIT (c),
+ 					      note_no_context_vars,
+ 					      &no_context_vars);
+ 		walk_tree_without_duplicates (&OMP_CLAUSE_REDUCTION_MERGE (c),
+ 					      note_no_context_vars,
+ 					      &no_context_vars);
+ 
  		OMP_CLAUSE_REDUCTION_PLACEHOLDER (*pc)
  		  = copy_node (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c));
  		if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (*pc))
  		  OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (*pc)
  		    = copy_node (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (c));
! 
! 		hash_map<tree, tree> decl_map;
! 		decl_map.put (OMP_CLAUSE_DECL (c), OMP_CLAUSE_DECL (c));
! 		decl_map.put (OMP_CLAUSE_REDUCTION_PLACEHOLDER (c),
! 			      OMP_CLAUSE_REDUCTION_PLACEHOLDER (*pc));
! 		if (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (*pc))
! 		  decl_map.put (OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (c),
! 				OMP_CLAUSE_REDUCTION_DECL_PLACEHOLDER (*pc));
! 
! 		copy_body_data id;
! 		memset (&id, 0, sizeof (id));
! 		id.src_fn = current_function_decl;
! 		id.dst_fn = current_function_decl;
! 		id.src_cfun = cfun;
! 		id.decl_map = &decl_map;
! 		id.copy_decl = copy_decl_no_change;
! 		id.transform_call_graph_edges = CB_CGE_DUPLICATE;
! 		id.transform_new_cfg = true;
! 		id.transform_return_to_modify = false;
! 		id.transform_lang_insert_block = NULL;
! 		id.eh_lp_nr = 0;
! 		walk_tree (&OMP_CLAUSE_REDUCTION_INIT (*pc), copy_tree_body_r,
! 			   &id, NULL);
! 		walk_tree (&OMP_CLAUSE_REDUCTION_MERGE (*pc), copy_tree_body_r,
! 			   &id, NULL);
! 
! 		tree d;
! 		unsigned i;
! 		FOR_EACH_VEC_ELT (no_context_vars, i, d)
! 		  {
! 		    DECL_CONTEXT (d) = NULL_TREE;
! 		    DECL_CONTEXT (*decl_map.get (d)) = NULL_TREE;
! 		  }
! 	      }
! 	    else
! 	      {
! 		OMP_CLAUSE_REDUCTION_INIT (*pc)
! 		  = unshare_expr (OMP_CLAUSE_REDUCTION_INIT (c));
! 		OMP_CLAUSE_REDUCTION_MERGE (*pc)
! 		  = unshare_expr (OMP_CLAUSE_REDUCTION_MERGE (c));
  	      }
  	    pc = &OMP_CLAUSE_CHAIN (*pc);
  	    break;
diff -Nrcpad gcc-10.3.0/gcc/go/ChangeLog gcc-10.4.0/gcc/go/ChangeLog
*** gcc-10.3.0/gcc/go/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/go/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/go/gofrontend/expressions.cc gcc-10.4.0/gcc/go/gofrontend/expressions.cc
*** gcc-10.3.0/gcc/go/gofrontend/expressions.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/go/gofrontend/expressions.cc	Tue Jun 28 08:54:28 2022
*************** Builtin_call_expression::flatten_append(
*** 9075,9081 ****
                ref2 = Expression::make_cast(uint_type, ref2, loc);
                cond = Expression::make_binary(OPERATOR_GT, ref, ref2, loc);
                zero = Expression::make_integer_ul(0, int_type, loc);
!               call = Expression::make_conditional(cond, call, zero, loc);
              }
          }
        else
--- 9075,9081 ----
                ref2 = Expression::make_cast(uint_type, ref2, loc);
                cond = Expression::make_binary(OPERATOR_GT, ref, ref2, loc);
                zero = Expression::make_integer_ul(0, int_type, loc);
!               call = Expression::make_conditional(cond, zero, call, loc);
              }
          }
        else
diff -Nrcpad gcc-10.3.0/gcc/godump.c gcc-10.4.0/gcc/godump.c
*** gcc-10.3.0/gcc/godump.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/godump.c	Tue Jun 28 08:54:28 2022
*************** static FILE *go_dump_file;
*** 56,61 ****
--- 56,63 ----
  
  static GTY(()) vec<tree, va_gc> *queue;
  
+ struct godump_str_hash : string_hash, ggc_remove <const char *> {};
+ 
  /* A hash table of macros we have seen.  */
  
  static htab_t macro_hash;
*************** public:
*** 543,549 ****
  
    /* Types which may potentially have to be defined as dummy
       types.  */
!   hash_set<const char *> pot_dummy_types;
  
    /* Go keywords.  */
    htab_t keyword_hash;
--- 545,551 ----
  
    /* Types which may potentially have to be defined as dummy
       types.  */
!   hash_set<const char *, false, godump_str_hash> pot_dummy_types;
  
    /* Go keywords.  */
    htab_t keyword_hash;
diff -Nrcpad gcc-10.3.0/gcc/ifcvt.c gcc-10.4.0/gcc/ifcvt.c
*** gcc-10.3.0/gcc/ifcvt.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ifcvt.c	Tue Jun 28 08:54:28 2022
*************** bb_valid_for_noce_process_p (basic_block
*** 3064,3069 ****
--- 3064,3075 ----
  
    if (!insn_valid_noce_process_p (last_insn, cc))
      return false;
+ 
+   /* Punt on blocks ending with asm goto or jumps with other side-effects,
+      last_active_insn ignores JUMP_INSNs.  */
+   if (JUMP_P (BB_END (test_bb)) && !onlyjump_p (BB_END (test_bb)))
+     return false;
+ 
    last_set = single_set (last_insn);
  
    rtx x = SET_DEST (last_set);
*************** find_if_case_1 (basic_block test_bb, edg
*** 4897,4910 ****
    if ((BB_END (then_bb)
         && JUMP_P (BB_END (then_bb))
         && CROSSING_JUMP_P (BB_END (then_bb)))
!       || (BB_END (test_bb)
! 	  && JUMP_P (BB_END (test_bb))
  	  && CROSSING_JUMP_P (BB_END (test_bb)))
        || (BB_END (else_bb)
  	  && JUMP_P (BB_END (else_bb))
  	  && CROSSING_JUMP_P (BB_END (else_bb))))
      return FALSE;
  
    /* THEN has one successor.  */
    if (!single_succ_p (then_bb))
      return FALSE;
--- 4903,4919 ----
    if ((BB_END (then_bb)
         && JUMP_P (BB_END (then_bb))
         && CROSSING_JUMP_P (BB_END (then_bb)))
!       || (JUMP_P (BB_END (test_bb))
  	  && CROSSING_JUMP_P (BB_END (test_bb)))
        || (BB_END (else_bb)
  	  && JUMP_P (BB_END (else_bb))
  	  && CROSSING_JUMP_P (BB_END (else_bb))))
      return FALSE;
  
+   /* Verify test_bb ends in a conditional jump with no other side-effects.  */
+   if (!onlyjump_p (BB_END (test_bb)))
+     return FALSE;
+ 
    /* THEN has one successor.  */
    if (!single_succ_p (then_bb))
      return FALSE;
*************** find_if_case_2 (basic_block test_bb, edg
*** 5018,5031 ****
    if ((BB_END (then_bb)
         && JUMP_P (BB_END (then_bb))
         && CROSSING_JUMP_P (BB_END (then_bb)))
!       || (BB_END (test_bb)
! 	  && JUMP_P (BB_END (test_bb))
  	  && CROSSING_JUMP_P (BB_END (test_bb)))
        || (BB_END (else_bb)
  	  && JUMP_P (BB_END (else_bb))
  	  && CROSSING_JUMP_P (BB_END (else_bb))))
      return FALSE;
  
    /* ELSE has one successor.  */
    if (!single_succ_p (else_bb))
      return FALSE;
--- 5027,5043 ----
    if ((BB_END (then_bb)
         && JUMP_P (BB_END (then_bb))
         && CROSSING_JUMP_P (BB_END (then_bb)))
!       || (JUMP_P (BB_END (test_bb))
  	  && CROSSING_JUMP_P (BB_END (test_bb)))
        || (BB_END (else_bb)
  	  && JUMP_P (BB_END (else_bb))
  	  && CROSSING_JUMP_P (BB_END (else_bb))))
      return FALSE;
  
+   /* Verify test_bb ends in a conditional jump with no other side-effects.  */
+   if (!onlyjump_p (BB_END (test_bb)))
+     return FALSE;
+ 
    /* ELSE has one successor.  */
    if (!single_succ_p (else_bb))
      return FALSE;
diff -Nrcpad gcc-10.3.0/gcc/ipa-cp.c gcc-10.4.0/gcc/ipa-cp.c
*** gcc-10.3.0/gcc/ipa-cp.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-cp.c	Tue Jun 28 08:54:28 2022
*************** public:
*** 275,291 ****
  class ipcp_bits_lattice
  {
  public:
!   bool bottom_p () { return m_lattice_val == IPA_BITS_VARYING; }
!   bool top_p () { return m_lattice_val == IPA_BITS_UNDEFINED; }
!   bool constant_p () { return m_lattice_val == IPA_BITS_CONSTANT; }
    bool set_to_bottom ();
    bool set_to_constant (widest_int, widest_int);
  
!   widest_int get_value () { return m_value; }
!   widest_int get_mask () { return m_mask; }
  
    bool meet_with (ipcp_bits_lattice& other, unsigned, signop,
! 		  enum tree_code, tree);
  
    bool meet_with (widest_int, widest_int, unsigned);
  
--- 275,292 ----
  class ipcp_bits_lattice
  {
  public:
!   bool bottom_p () const { return m_lattice_val == IPA_BITS_VARYING; }
!   bool top_p () const { return m_lattice_val == IPA_BITS_UNDEFINED; }
!   bool constant_p () const { return m_lattice_val == IPA_BITS_CONSTANT; }
    bool set_to_bottom ();
    bool set_to_constant (widest_int, widest_int);
+   bool known_nonzero_p () const;
  
!   widest_int get_value () const { return m_value; }
!   widest_int get_mask () const { return m_mask; }
  
    bool meet_with (ipcp_bits_lattice& other, unsigned, signop,
! 		  enum tree_code, tree, bool);
  
    bool meet_with (widest_int, widest_int, unsigned);
  
*************** private:
*** 299,305 ****
       value is known to be constant.  */
    widest_int m_value, m_mask;
  
!   bool meet_with_1 (widest_int, widest_int, unsigned);
    void get_value_and_mask (tree, widest_int *, widest_int *);
  };
  
--- 300,306 ----
       value is known to be constant.  */
    widest_int m_value, m_mask;
  
!   bool meet_with_1 (widest_int, widest_int, unsigned, bool);
    void get_value_and_mask (tree, widest_int *, widest_int *);
  };
  
*************** ipcp_bits_lattice::set_to_constant (wide
*** 1015,1020 ****
--- 1016,1031 ----
    return true;
  }
  
+ /* Return true if any of the known bits are non-zero.  */
+ 
+ bool
+ ipcp_bits_lattice::known_nonzero_p () const
+ {
+   if (!constant_p ())
+     return false;
+   return wi::ne_p (wi::bit_and (wi::bit_not (m_mask), m_value), 0);
+ }
+ 
  /* Convert operand to value, mask form.  */
  
  void
*************** ipcp_bits_lattice::get_value_and_mask (t
*** 1037,1052 ****
  /* Meet operation, similar to ccp_lattice_meet, we xor values
     if this->value, value have different values at same bit positions, we want
     to drop that bit to varying. Return true if mask is changed.
!    This function assumes that the lattice value is in CONSTANT state  */
  
  bool
  ipcp_bits_lattice::meet_with_1 (widest_int value, widest_int mask,
! 				unsigned precision)
  {
    gcc_assert (constant_p ());
  
    widest_int old_mask = m_mask;
    m_mask = (m_mask | mask) | (m_value ^ value);
    m_value &= ~m_mask;
  
    if (wi::sext (m_mask, precision) == -1)
--- 1048,1066 ----
  /* Meet operation, similar to ccp_lattice_meet, we xor values
     if this->value, value have different values at same bit positions, we want
     to drop that bit to varying. Return true if mask is changed.
!    This function assumes that the lattice value is in CONSTANT state.  If
!    DROP_ALL_ONES, mask out any known bits with value one afterwards.  */
  
  bool
  ipcp_bits_lattice::meet_with_1 (widest_int value, widest_int mask,
! 				unsigned precision, bool drop_all_ones)
  {
    gcc_assert (constant_p ());
  
    widest_int old_mask = m_mask;
    m_mask = (m_mask | mask) | (m_value ^ value);
+   if (drop_all_ones)
+     m_mask |= m_value;
    m_value &= ~m_mask;
  
    if (wi::sext (m_mask, precision) == -1)
*************** ipcp_bits_lattice::meet_with (widest_int
*** 1072,1087 ****
        return set_to_constant (value, mask);
      }
  
!   return meet_with_1 (value, mask, precision);
  }
  
  /* Meet bits lattice with the result of bit_value_binop (other, operand)
     if code is binary operation or bit_value_unop (other) if code is unary op.
!    In the case when code is nop_expr, no adjustment is required. */
  
  bool
  ipcp_bits_lattice::meet_with (ipcp_bits_lattice& other, unsigned precision,
! 			      signop sgn, enum tree_code code, tree operand)
  {
    if (other.bottom_p ())
      return set_to_bottom ();
--- 1086,1103 ----
        return set_to_constant (value, mask);
      }
  
!   return meet_with_1 (value, mask, precision, false);
  }
  
  /* Meet bits lattice with the result of bit_value_binop (other, operand)
     if code is binary operation or bit_value_unop (other) if code is unary op.
!    In the case when code is nop_expr, no adjustment is required.  If
!    DROP_ALL_ONES, mask out any known bits with value one afterwards.  */
  
  bool
  ipcp_bits_lattice::meet_with (ipcp_bits_lattice& other, unsigned precision,
! 			      signop sgn, enum tree_code code, tree operand,
! 			      bool drop_all_ones)
  {
    if (other.bottom_p ())
      return set_to_bottom ();
*************** ipcp_bits_lattice::meet_with (ipcp_bits_
*** 1120,1131 ****
  
    if (top_p ())
      {
        if (wi::sext (adjusted_mask, precision) == -1)
  	return set_to_bottom ();
        return set_to_constant (adjusted_value, adjusted_mask);
      }
    else
!     return meet_with_1 (adjusted_value, adjusted_mask, precision);
  }
  
  /* Mark bot aggregate and scalar lattices as containing an unknown variable,
--- 1136,1153 ----
  
    if (top_p ())
      {
+       if (drop_all_ones)
+ 	{
+ 	  adjusted_mask |= adjusted_value;
+ 	  adjusted_value &= ~adjusted_mask;
+ 	}
        if (wi::sext (adjusted_mask, precision) == -1)
  	return set_to_bottom ();
        return set_to_constant (adjusted_value, adjusted_mask);
      }
    else
!     return meet_with_1 (adjusted_value, adjusted_mask, precision,
! 			drop_all_ones);
  }
  
  /* Mark bot aggregate and scalar lattices as containing an unknown variable,
*************** ipa_get_jf_ancestor_result (struct ipa_j
*** 1362,1367 ****
--- 1384,1392 ----
  		     fold_build2 (MEM_REF, TREE_TYPE (TREE_TYPE (input)), input,
  				  build_int_cst (ptr_type_node, byte_offset)));
      }
+   else if (ipa_get_jf_ancestor_keep_null (jfunc)
+ 	   && zerop (input))
+     return input;
    else
      return NULL_TREE;
  }
*************** propagate_bits_across_jump_function (cgr
*** 2317,2322 ****
--- 2342,2348 ----
        tree operand = NULL_TREE;
        enum tree_code code;
        unsigned src_idx;
+       bool keep_null = false;
  
        if (jfunc->type == IPA_JF_PASS_THROUGH)
  	{
*************** propagate_bits_across_jump_function (cgr
*** 2329,2335 ****
  	{
  	  code = POINTER_PLUS_EXPR;
  	  src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
! 	  unsigned HOST_WIDE_INT offset = ipa_get_jf_ancestor_offset (jfunc) / BITS_PER_UNIT;
  	  operand = build_int_cstu (size_type_node, offset);
  	}
  
--- 2355,2363 ----
  	{
  	  code = POINTER_PLUS_EXPR;
  	  src_idx = ipa_get_jf_ancestor_formal_id (jfunc);
! 	  unsigned HOST_WIDE_INT offset
! 	    = ipa_get_jf_ancestor_offset (jfunc) / BITS_PER_UNIT;
! 	  keep_null = (ipa_get_jf_ancestor_keep_null (jfunc) || !offset);
  	  operand = build_int_cstu (size_type_node, offset);
  	}
  
*************** propagate_bits_across_jump_function (cgr
*** 2346,2363 ****
  	 result of x & 0xff == 0xff, which gets computed during ccp1 pass
  	 and we store it in jump function during analysis stage.  */
  
!       if (src_lats->bits_lattice.bottom_p ()
! 	  && jfunc->bits)
! 	return dest_lattice->meet_with (jfunc->bits->value, jfunc->bits->mask,
! 					precision);
!       else
! 	return dest_lattice->meet_with (src_lats->bits_lattice, precision, sgn,
! 					code, operand);
      }
  
!   else if (jfunc->type == IPA_JF_ANCESTOR)
!     return dest_lattice->set_to_bottom ();
!   else if (jfunc->bits)
      return dest_lattice->meet_with (jfunc->bits->value, jfunc->bits->mask,
  				    precision);
    else
--- 2374,2390 ----
  	 result of x & 0xff == 0xff, which gets computed during ccp1 pass
  	 and we store it in jump function during analysis stage.  */
  
!       if (!src_lats->bits_lattice.bottom_p ())
! 	{
! 	  bool drop_all_ones
! 	    = keep_null && !src_lats->bits_lattice.known_nonzero_p ();
! 
! 	  return dest_lattice->meet_with (src_lats->bits_lattice, precision,
! 					  sgn, code, operand, drop_all_ones);
! 	}
      }
  
!   if (jfunc->bits)
      return dest_lattice->meet_with (jfunc->bits->value, jfunc->bits->mask,
  				    precision);
    else
diff -Nrcpad gcc-10.3.0/gcc/ipa-fnsummary.c gcc-10.4.0/gcc/ipa-fnsummary.c
*** gcc-10.3.0/gcc/ipa-fnsummary.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-fnsummary.c	Tue Jun 28 08:54:28 2022
*************** inline_read_section (struct lto_file_dec
*** 4239,4251 ****
        bp = streamer_read_bitpack (&ib);
        if (info)
  	{
!           info->inlinable = bp_unpack_value (&bp, 1);
!           info->fp_expressions = bp_unpack_value (&bp, 1);
  	}
        else
  	{
!           bp_unpack_value (&bp, 1);
!           bp_unpack_value (&bp, 1);
  	}
  
        count2 = streamer_read_uhwi (&ib);
--- 4239,4258 ----
        bp = streamer_read_bitpack (&ib);
        if (info)
  	{
! 	  info->inlinable = bp_unpack_value (&bp, 1);
! 	  /* On the side of streaming out, there is still one bit
! 	     streamed out between inlinable and fp_expressions bits,
! 	     which was used for cilk+ before but now always false.
! 	     To remove the bit packing need to bump LTO minor version,
! 	     so unpack a dummy bit here to keep consistent instead.  */
! 	  bp_unpack_value (&bp, 1);
! 	  info->fp_expressions = bp_unpack_value (&bp, 1);
  	}
        else
  	{
! 	  bp_unpack_value (&bp, 1);
! 	  bp_unpack_value (&bp, 1);
! 	  bp_unpack_value (&bp, 1);
  	}
  
        count2 = streamer_read_uhwi (&ib);
diff -Nrcpad gcc-10.3.0/gcc/ipa-param-manipulation.c gcc-10.4.0/gcc/ipa-param-manipulation.c
*** gcc-10.3.0/gcc/ipa-param-manipulation.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-param-manipulation.c	Tue Jun 28 08:54:28 2022
*************** ipa_dump_adjusted_parameters (FILE *f,
*** 145,151 ****
  	  fprintf (f, " prefix: %s",
  		   ipa_param_prefixes[apm->param_prefix_index]);
  	  if (apm->reverse)
! 	    fprintf (f, ", reverse-sso");
  	  break;
  	}
        fprintf (f, "\n");
--- 145,151 ----
  	  fprintf (f, " prefix: %s",
  		   ipa_param_prefixes[apm->param_prefix_index]);
  	  if (apm->reverse)
! 	    fprintf (f, ", reverse");
  	  break;
  	}
        fprintf (f, "\n");
*************** ipa_param_body_adjustments::modify_call_
*** 1676,1682 ****
        if (tree lhs = gimple_call_lhs (stmt))
  	{
  	  modify_expression (&lhs, false);
! 	  gimple_call_set_lhs (new_stmt, lhs);
  	}
        *stmt_p = new_stmt;
        return true;
--- 1676,1684 ----
        if (tree lhs = gimple_call_lhs (stmt))
  	{
  	  modify_expression (&lhs, false);
! 	  /* Avoid adjusting SSA_NAME_DEF_STMT of a SSA lhs, SSA names
! 	     have not yet been remapped.  */
! 	  *gimple_call_lhs_ptr (new_stmt) = lhs;
  	}
        *stmt_p = new_stmt;
        return true;
diff -Nrcpad gcc-10.3.0/gcc/ipa-prop.c gcc-10.4.0/gcc/ipa-prop.c
*** gcc-10.3.0/gcc/ipa-prop.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-prop.c	Tue Jun 28 08:54:28 2022
*************** ipa_print_node_jump_functions_for_edge (
*** 353,358 ****
--- 353,360 ----
  		   jump_func->value.ancestor.offset);
  	  if (jump_func->value.ancestor.agg_preserved)
  	    fprintf (f, ", agg_preserved");
+ 	  if (jump_func->value.ancestor.keep_null)
+ 	    fprintf (f, ", keep_null");
  	  fprintf (f, "\n");
  	}
  
*************** ipa_set_jf_arith_pass_through (struct ip
*** 595,606 ****
  
  static void
  ipa_set_ancestor_jf (struct ipa_jump_func *jfunc, HOST_WIDE_INT offset,
! 		     int formal_id, bool agg_preserved)
  {
    jfunc->type = IPA_JF_ANCESTOR;
    jfunc->value.ancestor.formal_id = formal_id;
    jfunc->value.ancestor.offset = offset;
    jfunc->value.ancestor.agg_preserved = agg_preserved;
  }
  
  /* Get IPA BB information about the given BB.  FBI is the context of analyzis
--- 597,609 ----
  
  static void
  ipa_set_ancestor_jf (struct ipa_jump_func *jfunc, HOST_WIDE_INT offset,
! 		     int formal_id, bool agg_preserved, bool keep_null)
  {
    jfunc->type = IPA_JF_ANCESTOR;
    jfunc->value.ancestor.formal_id = formal_id;
    jfunc->value.ancestor.offset = offset;
    jfunc->value.ancestor.agg_preserved = agg_preserved;
+   jfunc->value.ancestor.keep_null = keep_null;
  }
  
  /* Get IPA BB information about the given BB.  FBI is the context of analyzis
*************** ipa_load_from_parm_agg (struct ipa_func_
*** 1097,1102 ****
--- 1100,1109 ----
    if (!base)
      return false;
  
+   /* We can not propagate across volatile loads.  */
+   if (TREE_THIS_VOLATILE (op))
+     return false;
+ 
    if (DECL_P (base))
      {
        int index = ipa_get_param_decl_index_1 (descriptors, base);
*************** compute_complex_assign_jump_func (struct
*** 1361,1367 ****
    index = ipa_get_param_decl_index (info, SSA_NAME_VAR (ssa));
    if (index >= 0 && param_type && POINTER_TYPE_P (param_type))
      ipa_set_ancestor_jf (jfunc, offset,  index,
! 			 parm_ref_data_pass_through_p (fbi, index, call, ssa));
  }
  
  /* Extract the base, offset and MEM_REF expression from a statement ASSIGN if
--- 1368,1375 ----
    index = ipa_get_param_decl_index (info, SSA_NAME_VAR (ssa));
    if (index >= 0 && param_type && POINTER_TYPE_P (param_type))
      ipa_set_ancestor_jf (jfunc, offset,  index,
! 			 parm_ref_data_pass_through_p (fbi, index, call, ssa),
! 			 false);
  }
  
  /* Extract the base, offset and MEM_REF expression from a statement ASSIGN if
*************** compute_complex_ancestor_jump_func (stru
*** 1487,1493 ****
      }
  
    ipa_set_ancestor_jf (jfunc, offset, index,
! 		       parm_ref_data_pass_through_p (fbi, index, call, parm));
  }
  
  /* Inspect the given TYPE and return true iff it has the same structure (the
--- 1495,1502 ----
      }
  
    ipa_set_ancestor_jf (jfunc, offset, index,
! 		       parm_ref_data_pass_through_p (fbi, index, call, parm),
! 		       true);
  }
  
  /* Inspect the given TYPE and return true iff it has the same structure (the
*************** update_jump_functions_after_inlining (st
*** 3065,3070 ****
--- 3074,3080 ----
  	      dst->value.ancestor.offset += src->value.ancestor.offset;
  	      dst->value.ancestor.agg_preserved &=
  		src->value.ancestor.agg_preserved;
+ 	      dst->value.ancestor.keep_null |= src->value.ancestor.keep_null;
  	    }
  	  else
  	    ipa_set_jf_unknown (dst);
*************** update_jump_functions_after_inlining (st
*** 3142,3148 ****
  		    ipa_set_ancestor_jf (dst,
  					 ipa_get_jf_ancestor_offset (src),
  					 ipa_get_jf_ancestor_formal_id (src),
! 					 agg_p);
  		    break;
  		  }
  		default:
--- 3152,3159 ----
  		    ipa_set_ancestor_jf (dst,
  					 ipa_get_jf_ancestor_offset (src),
  					 ipa_get_jf_ancestor_formal_id (src),
! 					 agg_p,
! 					 ipa_get_jf_ancestor_keep_null (src));
  		    break;
  		  }
  		default:
*************** ipa_write_jump_function (struct output_b
*** 4535,4540 ****
--- 4546,4552 ----
        streamer_write_uhwi (ob, jump_func->value.ancestor.formal_id);
        bp = bitpack_create (ob->main_stream);
        bp_pack_value (&bp, jump_func->value.ancestor.agg_preserved, 1);
+       bp_pack_value (&bp, jump_func->value.ancestor.keep_null, 1);
        streamer_write_bitpack (&bp);
        break;
      default:
*************** ipa_read_jump_function (class lto_input_
*** 4660,4666 ****
  	int formal_id = streamer_read_uhwi (ib);
  	struct bitpack_d bp = streamer_read_bitpack (ib);
  	bool agg_preserved = bp_unpack_value (&bp, 1);
! 	ipa_set_ancestor_jf (jump_func, offset, formal_id, agg_preserved);
  	break;
        }
      default:
--- 4672,4680 ----
  	int formal_id = streamer_read_uhwi (ib);
  	struct bitpack_d bp = streamer_read_bitpack (ib);
  	bool agg_preserved = bp_unpack_value (&bp, 1);
! 	bool keep_null = bp_unpack_value (&bp, 1);
! 	ipa_set_ancestor_jf (jump_func, offset, formal_id, agg_preserved,
! 			     keep_null);
  	break;
        }
      default:
diff -Nrcpad gcc-10.3.0/gcc/ipa-prop.h gcc-10.4.0/gcc/ipa-prop.h
*** gcc-10.3.0/gcc/ipa-prop.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-prop.h	Tue Jun 28 08:54:28 2022
*************** struct GTY(()) ipa_ancestor_jf_data
*** 138,143 ****
--- 138,145 ----
    int formal_id;
    /* Flag with the same meaning like agg_preserve in ipa_pass_through_data.  */
    unsigned agg_preserved : 1;
+   /* When set, the operation should not have any effect on NULL pointers.  */
+   unsigned keep_null : 1;
  };
  
  /* A jump function for an aggregate part at a given offset, which describes how
*************** ipa_get_jf_ancestor_type_preserved (stru
*** 433,438 ****
--- 435,451 ----
    return jfunc->value.ancestor.agg_preserved;
  }
  
+ /* Return if jfunc represents an operation whether we first check the formal
+    parameter for non-NULLness unless it does not matter because the offset is
+    zero anyway.  */
+ 
+ static inline bool
+ ipa_get_jf_ancestor_keep_null (struct ipa_jump_func *jfunc)
+ {
+   gcc_checking_assert (jfunc->type == IPA_JF_ANCESTOR);
+   return jfunc->value.ancestor.keep_null;
+ }
+ 
  /* Summary describing a single formal parameter.  */
  
  struct GTY(()) ipa_param_descriptor
diff -Nrcpad gcc-10.3.0/gcc/ipa-pure-const.c gcc-10.4.0/gcc/ipa-pure-const.c
*** gcc-10.3.0/gcc/ipa-pure-const.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-pure-const.c	Tue Jun 28 08:54:28 2022
*************** propagate_pure_const (void)
*** 1665,1673 ****
  	  if (w_l->state_previously_known != IPA_NEITHER
  	      && this_state > w_l->state_previously_known)
  	    {
-               this_state = w_l->state_previously_known;
  	      if (this_state == IPA_NEITHER)
! 	        this_looping = w_l->looping_previously_known;
  	    }
  	  if (!this_looping && self_recursive_p (w))
  	    this_looping = true;
--- 1665,1673 ----
  	  if (w_l->state_previously_known != IPA_NEITHER
  	      && this_state > w_l->state_previously_known)
  	    {
  	      if (this_state == IPA_NEITHER)
! 		this_looping = w_l->looping_previously_known;
! 	      this_state = w_l->state_previously_known;
  	    }
  	  if (!this_looping && self_recursive_p (w))
  	    this_looping = true;
diff -Nrcpad gcc-10.3.0/gcc/ipa-sra.c gcc-10.4.0/gcc/ipa-sra.c
*** gcc-10.3.0/gcc/ipa-sra.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa-sra.c	Tue Jun 28 08:54:28 2022
***************
*** 1,6 ****
  /* Interprocedural scalar replacement of aggregates
!    Copyright (C) 2008-2020 Free Software Foundation, Inc.
! 
     Contributed by Martin Jambor <mjambor@suse.cz>
  
  This file is part of GCC.
--- 1,5 ----
  /* Interprocedural scalar replacement of aggregates
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by Martin Jambor <mjambor@suse.cz>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,27 ****
  
  /* IPA-SRA is an interprocedural pass that removes unused function return
     values (turning functions returning a value which is never used into void
!    functions), removes unused function parameters.  It can also replace an
     aggregate parameter by a set of other parameters representing part of the
     original, turning those passed by reference into new ones which pass the
     value directly.
--- 20,26 ----
  
  /* IPA-SRA is an interprocedural pass that removes unused function return
     values (turning functions returning a value which is never used into void
!    functions) and removes unused function parameters.  It can also replace an
     aggregate parameter by a set of other parameters representing part of the
     original, turning those passed by reference into new ones which pass the
     value directly.
*************** along with GCC; see the file COPYING3.
*** 57,63 ****
     ipa-param-manipulation.h for more details.  */
  
  
- 
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
--- 56,61 ----
*************** along with GCC; see the file COPYING3.
*** 89,95 ****
  #define ISRA_ARG_SIZE_LIMIT_BITS 16
  #define ISRA_ARG_SIZE_LIMIT (1 << ISRA_ARG_SIZE_LIMIT_BITS)
  /* How many parameters can feed into a call actual argument and still be
!    tracked. */
  #define IPA_SRA_MAX_PARAM_FLOW_LEN 7
  
  /* Structure describing accesses to a specific portion of an aggregate
--- 87,93 ----
  #define ISRA_ARG_SIZE_LIMIT_BITS 16
  #define ISRA_ARG_SIZE_LIMIT (1 << ISRA_ARG_SIZE_LIMIT_BITS)
  /* How many parameters can feed into a call actual argument and still be
!    tracked.  */
  #define IPA_SRA_MAX_PARAM_FLOW_LEN 7
  
  /* Structure describing accesses to a specific portion of an aggregate
*************** struct GTY(()) param_access
*** 118,124 ****
       transformed function - initially not set for portions of formal parameters
       that are only used as actual function arguments passed to callees.  */
    unsigned certain : 1;
!   /* Set if the access has a reversed scalar storage order.  */
    unsigned reverse : 1;
  };
  
--- 116,122 ----
       transformed function - initially not set for portions of formal parameters
       that are only used as actual function arguments passed to callees.  */
    unsigned certain : 1;
!   /* Set if the access has reverse scalar storage order.  */
    unsigned reverse : 1;
  };
  
*************** struct gensum_param_access
*** 152,158 ****
       arguments to a function call that can be tracked.  */
    bool nonarg;
  
!   /* Set if the access has a reversed scalar storage order.  */
    bool reverse;
  };
  
--- 150,156 ----
       arguments to a function call that can be tracked.  */
    bool nonarg;
  
!   /* Set if the access has reverse scalar storage order.  */
    bool reverse;
  };
  
*************** struct gensum_param_desc
*** 215,222 ****
  };
  
  /* Properly deallocate accesses of DESC.  TODO: Since this data structure is
!    not in GC memory, this is not necessary and we can consider removing the
!    function.  */
  
  static void
  free_param_decl_accesses (isra_param_desc *desc)
--- 213,220 ----
  };
  
  /* Properly deallocate accesses of DESC.  TODO: Since this data structure is
!    allocated in GC memory, this is not necessary and we can consider removing
!    the function.  */
  
  static void
  free_param_decl_accesses (isra_param_desc *desc)
*************** public:
*** 271,279 ****
    unsigned m_queued : 1;
  };
  
! /* Clean up and deallocate isra_func_summary points to.  TODO: Since this data
!    structure is not in GC memory, this is not necessary and we can consider
!    removing the destructor.  */
  
  isra_func_summary::~isra_func_summary ()
  {
--- 269,277 ----
    unsigned m_queued : 1;
  };
  
! /* Deallocate the memory pointed to by isra_func_summary.  TODO: Since this
!    data structure is allocated in GC memory, this is not necessary and we can
!    consider removing the destructor.  */
  
  isra_func_summary::~isra_func_summary ()
  {
*************** isra_func_summary::~isra_func_summary ()
*** 283,289 ****
    vec_free (m_parameters);
  }
  
- 
  /* Mark the function as not a candidate for any IPA-SRA transformation.  Return
     true if it was a candidate until now.  */
  
--- 281,286 ----
*************** isra_func_summary::zap ()
*** 293,298 ****
--- 290,296 ----
    bool ret = m_candidate;
    m_candidate = false;
  
+   /* TODO: see the destructor above.  */
    unsigned len = vec_safe_length (m_parameters);
    for (unsigned i = 0; i < len; ++i)
      free_param_decl_accesses (&(*m_parameters)[i]);
*************** isra_func_summary::zap ()
*** 302,308 ****
  }
  
  /* Structure to describe which formal parameters feed into a particular actual
!    arguments.  */
  
  struct isra_param_flow
  {
--- 300,306 ----
  }
  
  /* Structure to describe which formal parameters feed into a particular actual
!    argument.  */
  
  struct isra_param_flow
  {
*************** class isra_call_summary
*** 340,346 ****
  public:
    isra_call_summary ()
      : m_arg_flow (), m_return_ignored (false), m_return_returned (false),
!       m_bit_aligned_arg (false)
    {}
  
    void init_inputs (unsigned arg_count);
--- 338,344 ----
  public:
    isra_call_summary ()
      : m_arg_flow (), m_return_ignored (false), m_return_returned (false),
!       m_bit_aligned_arg (false), m_before_any_store (false)
    {}
  
    void init_inputs (unsigned arg_count);
*************** public:
*** 359,364 ****
--- 357,366 ----
  
    /* Set when any of the call arguments are not byte-aligned.  */
    unsigned m_bit_aligned_arg : 1;
+ 
+   /* Set to true if the call happend before any (other) store to memory in the
+      caller.  */
+   unsigned m_before_any_store : 1;
  };
  
  /* Class to manage function summaries.  */
*************** ipa_sra_function_summaries::duplicate (c
*** 417,422 ****
--- 419,425 ----
  	  to->unit_offset = from->unit_offset;
  	  to->unit_size = from->unit_size;
  	  to->certain = from->certain;
+ 	  to->reverse = from->reverse;
  	  d->accesses->quick_push (to);
  	}
      }
*************** isra_call_summary::dump (FILE *f)
*** 472,477 ****
--- 475,482 ----
      fprintf (f, "    return value ignored\n");
    if (m_return_returned)
      fprintf (f, "    return value used only to compute caller return value\n");
+   if (m_before_any_store)
+     fprintf (f, "    happens before any store to memory\n");
    for (unsigned i = 0; i < m_arg_flow.length (); i++)
      {
        fprintf (f, "    Parameter %u:\n", i);
*************** ipa_sra_call_summaries::duplicate (cgrap
*** 516,521 ****
--- 521,527 ----
    new_sum->m_return_ignored = old_sum->m_return_ignored;
    new_sum->m_return_returned = old_sum->m_return_returned;
    new_sum->m_bit_aligned_arg = old_sum->m_bit_aligned_arg;
+   new_sum->m_before_any_store = old_sum->m_before_any_store;
  }
  
  
*************** namespace {
*** 525,531 ****
  
  hash_map<tree, gensum_param_desc *> *decl2desc;
  
! /* Countdown of allowed Alias analysis steps during summary building.  */
  
  int aa_walking_limit;
  
--- 531,537 ----
  
  hash_map<tree, gensum_param_desc *> *decl2desc;
  
! /* Countdown of allowed Alias Analysis steps during summary building.  */
  
  int aa_walking_limit;
  
*************** dump_isra_access (FILE *f, param_access
*** 645,651 ****
    if (access->certain)
      fprintf (f, ", certain");
    else
!     fprintf (f, ", not-certain");
    if (access->reverse)
      fprintf (f, ", reverse");
    fprintf (f, "\n");
--- 651,657 ----
    if (access->certain)
      fprintf (f, ", certain");
    else
!     fprintf (f, ", not certain");
    if (access->reverse)
      fprintf (f, ", reverse");
    fprintf (f, "\n");
*************** isra_track_scalar_value_uses (function *
*** 907,914 ****
  
     This function is similar to ptr_parm_has_nonarg_uses but its results are
     meant for unused parameter removal, as opposed to splitting of parameters
!    passed by reference or converting them to passed by value.
!   */
  
  static bool
  isra_track_scalar_param_local_uses (function *fun, cgraph_node *node, tree parm,
--- 913,919 ----
  
     This function is similar to ptr_parm_has_nonarg_uses but its results are
     meant for unused parameter removal, as opposed to splitting of parameters
!    passed by reference or converting them to passed by value.  */
  
  static bool
  isra_track_scalar_param_local_uses (function *fun, cgraph_node *node, tree parm,
*************** isra_track_scalar_param_local_uses (func
*** 948,955 ****
     This function is similar to isra_track_scalar_param_local_uses but its
     results are meant for splitting of parameters passed by reference or turning
     them into bits passed by value, as opposed to generic unused parameter
!    removal.
!  */
  
  static bool
  ptr_parm_has_nonarg_uses (cgraph_node *node, function *fun, tree parm,
--- 953,959 ----
     This function is similar to isra_track_scalar_param_local_uses but its
     results are meant for splitting of parameters passed by reference or turning
     them into bits passed by value, as opposed to generic unused parameter
!    removal.  */
  
  static bool
  ptr_parm_has_nonarg_uses (cgraph_node *node, function *fun, tree parm,
*************** ptr_parm_has_nonarg_uses (cgraph_node *n
*** 979,993 ****
        if (gimple_assign_single_p (stmt))
  	{
  	  tree rhs = gimple_assign_rhs1 (stmt);
! 	  while (handled_component_p (rhs))
! 	    rhs = TREE_OPERAND (rhs, 0);
! 	  if (TREE_CODE (rhs) == MEM_REF
! 	      && TREE_OPERAND (rhs, 0) == name
! 	      && integer_zerop (TREE_OPERAND (rhs, 1))
! 	      && types_compatible_p (TREE_TYPE (rhs),
! 				     TREE_TYPE (TREE_TYPE (name)))
! 	      && !TREE_THIS_VOLATILE (rhs))
! 	    uses_ok++;
  	}
        else if (is_gimple_call (stmt))
  	{
--- 983,999 ----
        if (gimple_assign_single_p (stmt))
  	{
  	  tree rhs = gimple_assign_rhs1 (stmt);
! 	  if (!TREE_THIS_VOLATILE (rhs))
! 	    {
! 	      while (handled_component_p (rhs))
! 		rhs = TREE_OPERAND (rhs, 0);
! 	      if (TREE_CODE (rhs) == MEM_REF
! 		  && TREE_OPERAND (rhs, 0) == name
! 		  && integer_zerop (TREE_OPERAND (rhs, 1))
! 		  && types_compatible_p (TREE_TYPE (rhs),
! 					 TREE_TYPE (TREE_TYPE (name))))
! 		uses_ok++;
! 	    }
  	}
        else if (is_gimple_call (stmt))
  	{
*************** ptr_parm_has_nonarg_uses (cgraph_node *n
*** 1021,1035 ****
  		  continue;
  		}
  
! 	      while (handled_component_p (arg))
! 		arg = TREE_OPERAND (arg, 0);
! 	      if (TREE_CODE (arg) == MEM_REF
! 		  && TREE_OPERAND (arg, 0) == name
! 		  && integer_zerop (TREE_OPERAND (arg, 1))
! 		  && types_compatible_p (TREE_TYPE (arg),
! 					 TREE_TYPE (TREE_TYPE (name)))
! 		  && !TREE_THIS_VOLATILE (arg))
! 		uses_ok++;
  	    }
  	}
  
--- 1027,1043 ----
  		  continue;
  		}
  
! 	      if (!TREE_THIS_VOLATILE (arg))
! 		{
! 		  while (handled_component_p (arg))
! 		    arg = TREE_OPERAND (arg, 0);
! 		  if (TREE_CODE (arg) == MEM_REF
! 		      && TREE_OPERAND (arg, 0) == name
! 		      && integer_zerop (TREE_OPERAND (arg, 1))
! 		      && types_compatible_p (TREE_TYPE (arg),
! 					     TREE_TYPE (TREE_TYPE (name))))
! 		    uses_ok++;
! 		}
  	    }
  	}
  
*************** record_nonregister_call_use (gensum_para
*** 1626,1632 ****
  }
  
  /* Callback of walk_aliased_vdefs, just mark that there was a possible
!    modification. */
  
  static bool
  mark_maybe_modified (ao_ref *, tree, void *data)
--- 1634,1640 ----
  }
  
  /* Callback of walk_aliased_vdefs, just mark that there was a possible
!    modification.  */
  
  static bool
  mark_maybe_modified (ao_ref *, tree, void *data)
*************** scan_function (cgraph_node *node, struct
*** 1901,1907 ****
  		if (lhs)
  		  scan_expr_access (lhs, stmt, ISRA_CTX_STORE, bb);
  		int flags = gimple_call_flags (stmt);
! 		if ((flags & (ECF_CONST | ECF_PURE)) == 0)
  		  bitmap_set_bit (final_bbs, bb->index);
  	      }
  	      break;
--- 1909,1916 ----
  		if (lhs)
  		  scan_expr_access (lhs, stmt, ISRA_CTX_STORE, bb);
  		int flags = gimple_call_flags (stmt);
! 		if (((flags & (ECF_CONST | ECF_PURE)) == 0)
! 		    || (flags & ECF_LOOPING_CONST_OR_PURE))
  		  bitmap_set_bit (final_bbs, bb->index);
  	      }
  	      break;
*************** static bool
*** 2170,2176 ****
  check_gensum_access (tree parm, gensum_param_desc *desc,
  		     gensum_param_access *access,
  		     HOST_WIDE_INT *nonarg_acc_size, bool *only_calls,
! 		      int entry_bb_index)
  {
    if (access->nonarg)
      {
--- 2179,2185 ----
  check_gensum_access (tree parm, gensum_param_desc *desc,
  		     gensum_param_access *access,
  		     HOST_WIDE_INT *nonarg_acc_size, bool *only_calls,
! 		     int entry_bb_index)
  {
    if (access->nonarg)
      {
*************** process_scan_results (cgraph_node *node,
*** 2338,2345 ****
       offset in this function at IPA level.
  
       TODO: Measure the overhead and the effect of just being pessimistic.
!      Maybe this is only -O3 material?
!   */
    bool pdoms_calculated = false;
    if (check_pass_throughs)
      for (cgraph_edge *cs = node->callees; cs; cs = cs->next_callee)
--- 2347,2354 ----
       offset in this function at IPA level.
  
       TODO: Measure the overhead and the effect of just being pessimistic.
!      Maybe this is only -O3 material?  */
! 
    bool pdoms_calculated = false;
    if (check_pass_throughs)
      for (cgraph_edge *cs = node->callees; cs; cs = cs->next_callee)
*************** process_scan_results (cgraph_node *node,
*** 2355,2360 ****
--- 2364,2370 ----
  	unsigned count = gimple_call_num_args (call_stmt);
  	isra_call_summary *csum = call_sums->get_create (cs);
  	csum->init_inputs (count);
+ 	csum->m_before_any_store = uses_memory_as_obtained;
  	for (unsigned argidx = 0; argidx < count; argidx++)
  	  {
  	    if (!csum->m_arg_flow[argidx].pointer_pass_through)
*************** isra_write_edge_summary (output_block *o
*** 2601,2606 ****
--- 2611,2617 ----
    bp_pack_value (&bp, csum->m_return_ignored, 1);
    bp_pack_value (&bp, csum->m_return_returned, 1);
    bp_pack_value (&bp, csum->m_bit_aligned_arg, 1);
+   bp_pack_value (&bp, csum->m_before_any_store, 1);
    streamer_write_bitpack (&bp);
  }
  
*************** isra_write_node_summary (output_block *o
*** 2631,2636 ****
--- 2642,2648 ----
  	  streamer_write_uhwi (ob, acc->unit_size);
  	  bitpack_d bp = bitpack_create (ob->main_stream);
  	  bp_pack_value (&bp, acc->certain, 1);
+ 	  bp_pack_value (&bp, acc->reverse, 1);
  	  streamer_write_bitpack (&bp);
  	}
        streamer_write_uhwi (ob, desc->param_size_limit);
*************** isra_read_edge_summary (struct lto_input
*** 2719,2724 ****
--- 2731,2737 ----
    csum->m_return_ignored = bp_unpack_value (&bp, 1);
    csum->m_return_returned = bp_unpack_value (&bp, 1);
    csum->m_bit_aligned_arg = bp_unpack_value (&bp, 1);
+   csum->m_before_any_store = bp_unpack_value (&bp, 1);
  }
  
  /* Read intraprocedural analysis information about NODE and all of its outgoing
*************** isra_read_node_info (struct lto_input_bl
*** 2748,2753 ****
--- 2761,2767 ----
  	  acc->unit_size = streamer_read_uhwi (ib);
  	  bitpack_d bp = streamer_read_bitpack (ib);
  	  acc->certain = bp_unpack_value (&bp, 1);
+ 	  acc->reverse = bp_unpack_value (&bp, 1);
  	  vec_safe_push (desc->accesses, acc);
  	}
        desc->param_size_limit = streamer_read_uhwi (ib);
*************** isra_mark_caller_param_used (isra_func_s
*** 3207,3213 ****
  
  /* Propagate information that any parameter is not used only locally within a
     SCC across CS to the caller, which must be in the same SCC as the
!    callee. Push any callers that need to be re-processed to STACK.  */
  
  static void
  propagate_used_across_scc_edge (cgraph_edge *cs, vec<cgraph_node *> *stack)
--- 3221,3227 ----
  
  /* Propagate information that any parameter is not used only locally within a
     SCC across CS to the caller, which must be in the same SCC as the
!    callee.  Push any callers that need to be re-processed to STACK.  */
  
  static void
  propagate_used_across_scc_edge (cgraph_edge *cs, vec<cgraph_node *> *stack)
*************** propagate_used_across_scc_edge (cgraph_e
*** 3245,3251 ****
  
  /* Propagate information that any parameter is not used only locally within a
     SCC (i.e. is used also elsewhere) to all callers of NODE that are in the
!    same SCC. Push any callers that need to be re-processed to STACK.  */
  
  static bool
  propagate_used_to_scc_callers (cgraph_node *node, void *data)
--- 3259,3265 ----
  
  /* Propagate information that any parameter is not used only locally within a
     SCC (i.e. is used also elsewhere) to all callers of NODE that are in the
!    same SCC.  Push any callers that need to be re-processed to STACK.  */
  
  static bool
  propagate_used_to_scc_callers (cgraph_node *node, void *data)
*************** pull_accesses_from_callee (cgraph_node *
*** 3338,3344 ****
  	      && pacc->unit_size == argacc->unit_size)
  	    {
  	      if (argacc->alias_ptr_type != pacc->alias_ptr_type
! 		  || !types_compatible_p (argacc->type, pacc->type))
  		return "propagated access types would not match existing ones";
  
  	      exact_match = true;
--- 3352,3359 ----
  	      && pacc->unit_size == argacc->unit_size)
  	    {
  	      if (argacc->alias_ptr_type != pacc->alias_ptr_type
! 		  || !types_compatible_p (argacc->type, pacc->type)
! 		  || argacc->reverse != pacc->reverse)
  		return "propagated access types would not match existing ones";
  
  	      exact_match = true;
*************** pull_accesses_from_callee (cgraph_node *
*** 3395,3400 ****
--- 3410,3416 ----
  	  copy->type = argacc->type;
  	  copy->alias_ptr_type = argacc->alias_ptr_type;
  	  copy->certain = true;
+ 	  copy->reverse = argacc->reverse;
  	  vec_safe_push (param_desc->accesses, copy);
  	}
        else if (prop_kinds[j] == ACC_PROP_CERTAIN)
*************** param_splitting_across_edge (cgraph_edge
*** 3475,3481 ****
  	    }
  	  else if (!ipf->safe_to_import_accesses)
  	    {
! 	      if (!all_callee_accesses_present_p (param_desc, arg_desc))
  		{
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    fprintf (dump_file, "  %u->%u: cannot import accesses.\n",
--- 3491,3498 ----
  	    }
  	  else if (!ipf->safe_to_import_accesses)
  	    {
! 	      if (!csum->m_before_any_store
! 		  || !all_callee_accesses_present_p (param_desc, arg_desc))
  		{
  		  if (dump_file && (dump_flags & TDF_DETAILS))
  		    fprintf (dump_file, "  %u->%u: cannot import accesses.\n",
*************** retval_used_p (cgraph_node *node, void *
*** 3655,3661 ****
     PREV_ADJUSTMENT.  If the parent clone is the original function,
     PREV_ADJUSTMENT is NULL and PREV_CLONE_INDEX is equal to BASE_INDEX.  */
  
- 
  static void
  push_param_adjustments_for_index (isra_func_summary *ifs, unsigned base_index,
  				  unsigned prev_clone_index,
--- 3672,3677 ----
diff -Nrcpad gcc-10.3.0/gcc/ipa.c gcc-10.4.0/gcc/ipa.c
*** gcc-10.3.0/gcc/ipa.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/ipa.c	Tue Jun 28 08:54:28 2022
*************** ipa_discover_variable_flags (void)
*** 834,840 ****
     FINAL specify whether the externally visible name for collect2 should
     be produced. */
  
! static void
  cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final,
  			     tree optimization,
  			     tree target)
--- 834,840 ----
     FINAL specify whether the externally visible name for collect2 should
     be produced. */
  
! static tree
  cgraph_build_static_cdtor_1 (char which, tree body, int priority, bool final,
  			     tree optimization,
  			     tree target)
*************** cgraph_build_static_cdtor_1 (char which,
*** 913,918 ****
--- 913,919 ----
  
    set_cfun (NULL);
    current_function_decl = NULL;
+   return decl;
  }
  
  /* Generate and emit a static constructor or destructor.  WHICH must
*************** build_cdtor (bool ctor_p, const vec<tree
*** 1019,1024 ****
--- 1020,1143 ----
      }
  }
  
+ /* Helper functions for build_cxa_dtor_registrations ().
+    Build a decl for __cxa_atexit ().  */
+ 
+ static tree
+ build_cxa_atexit_decl ()
+ {
+   /* The parameter to "__cxa_atexit" is "void (*)(void *)".  */
+   tree fn_type = build_function_type_list (void_type_node,
+ 					   ptr_type_node, NULL_TREE);
+   tree fn_ptr_type = build_pointer_type (fn_type);
+   /* The declaration for `__cxa_atexit' is:
+      int __cxa_atexit (void (*)(void *), void *, void *).  */
+   const char *name = "__cxa_atexit";
+   tree cxa_name = get_identifier (name);
+   fn_type = build_function_type_list (integer_type_node, fn_ptr_type,
+ 				      ptr_type_node, ptr_type_node, NULL_TREE);
+   tree atexit_fndecl = build_decl (BUILTINS_LOCATION, FUNCTION_DECL,
+ 				   cxa_name, fn_type);
+   SET_DECL_ASSEMBLER_NAME (atexit_fndecl, cxa_name);
+   DECL_VISIBILITY (atexit_fndecl) = VISIBILITY_DEFAULT;
+   DECL_VISIBILITY_SPECIFIED (atexit_fndecl) = true;
+   set_call_expr_flags (atexit_fndecl, ECF_LEAF | ECF_NOTHROW);
+   TREE_PUBLIC (atexit_fndecl) = true;
+   DECL_EXTERNAL (atexit_fndecl) = true;
+   DECL_ARTIFICIAL (atexit_fndecl) = true;
+   return atexit_fndecl;
+ }
+ 
+ /* Build a decl for __dso_handle.  */
+ 
+ static tree
+ build_dso_handle_decl ()
+ {
+   /* Declare the __dso_handle variable.  */
+   tree dso_handle_decl = build_decl (UNKNOWN_LOCATION, VAR_DECL,
+ 				     get_identifier ("__dso_handle"),
+ 				     ptr_type_node);
+   TREE_PUBLIC (dso_handle_decl) = true;
+   DECL_EXTERNAL (dso_handle_decl) = true;
+   DECL_ARTIFICIAL (dso_handle_decl) = true;
+ #ifdef HAVE_GAS_HIDDEN
+   if (dso_handle_decl != error_mark_node)
+     {
+       DECL_VISIBILITY (dso_handle_decl) = VISIBILITY_HIDDEN;
+       DECL_VISIBILITY_SPECIFIED (dso_handle_decl) = true;
+     }
+ #endif
+   return dso_handle_decl;
+ }
+ 
+ /*  This builds one or more constructor functions that register DTORs with
+     __cxa_atexit ().  Within a priority level, DTORs are registered in TU
+     order - which means that they will run in reverse TU order from cxa_atexit.
+     This is the same behavior as using a .fini / .mod_term_funcs section.
+     As the functions are built, they are appended to the CTORs vector.  */
+ 
+ static void
+ build_cxa_dtor_registrations (const vec<tree> &dtors, vec<tree> *ctors)
+ {
+   size_t i,j;
+   size_t len = dtors.length ();
+ 
+   location_t sav_loc = input_location;
+   input_location = UNKNOWN_LOCATION;
+ 
+   tree atexit_fndecl = build_cxa_atexit_decl ();
+   tree dso_handle_decl = build_dso_handle_decl ();
+ 
+   /* We want &__dso_handle.  */
+   tree dso_ptr = build1_loc (UNKNOWN_LOCATION, ADDR_EXPR,
+ 			     ptr_type_node, dso_handle_decl);
+ 
+   i = 0;
+   while (i < len)
+     {
+       priority_type priority = 0;
+       tree body = NULL_TREE;
+       j = i;
+       do
+ 	{
+ 	  priority_type p;
+ 	  tree fn = dtors[j];
+ 	  p = DECL_FINI_PRIORITY (fn);
+ 	  if (j == i)
+ 	    priority = p;
+ 	  else if (p != priority)
+ 	    break;
+ 	  j++;
+ 	}
+       while (j < len);
+ 
+       /* Find the next batch of destructors with the same initialization
+ 	 priority.  */
+       for (;i < j; i++)
+ 	{
+ 	  tree fn = dtors[i];
+ 	  DECL_STATIC_DESTRUCTOR (fn) = 0;
+ 	  tree dtor_ptr = build1_loc (UNKNOWN_LOCATION, ADDR_EXPR,
+ 				      ptr_type_node, fn);
+ 	  tree call_cxa_atexit
+ 	    = build_call_expr_loc (UNKNOWN_LOCATION, atexit_fndecl, 3,
+ 				   dtor_ptr, null_pointer_node, dso_ptr);
+ 	  TREE_SIDE_EFFECTS (call_cxa_atexit) = 1;
+ 	  append_to_statement_list (call_cxa_atexit, &body);
+ 	}
+ 
+       gcc_assert (body != NULL_TREE);
+       /* Generate a function to register the DTORs at this priority.  */
+       tree new_ctor
+ 	= cgraph_build_static_cdtor_1 ('I', body, priority, true,
+ 				       DECL_FUNCTION_SPECIFIC_OPTIMIZATION (dtors[0]),
+ 				       DECL_FUNCTION_SPECIFIC_TARGET (dtors[0]));
+       /* Add this to the list of ctors.  */
+       ctors->safe_push (new_ctor);
+     }
+   input_location = sav_loc;
+ }
+ 
  /* Comparison function for qsort.  P1 and P2 are actually of type
     "tree *" and point to static constructors.  DECL_INIT_PRIORITY is
     used to determine the sort order.  */
*************** compare_dtor (const void *p1, const void
*** 1068,1074 ****
    else if (priority1 > priority2)
      return 1;
    else
!     /* Ensure a stable sort.  */
      return DECL_UID (f1) - DECL_UID (f2);
  }
  
--- 1187,1232 ----
    else if (priority1 > priority2)
      return 1;
    else
!     /* Ensure a stable sort - into TU order.  */
!     return DECL_UID (f1) - DECL_UID (f2);
! }
! 
! /* Comparison function for qsort.  P1 and P2 are of type "tree *" and point to
!    a pair of static constructors or destructors.  We first sort on the basis of
!    priority and then into TU order (on the strict assumption that DECL_UIDs are
!    ordered in the same way as the original functions).  ???: this seems quite
!    fragile. */
! 
! static int
! compare_cdtor_tu_order (const void *p1, const void *p2)
! {
!   tree f1;
!   tree f2;
!   int priority1;
!   int priority2;
! 
!   f1 = *(const tree *)p1;
!   f2 = *(const tree *)p2;
!   /* We process the DTORs first, and then remove their flag, so this order
!      allows for functions that are declared as both CTOR and DTOR.  */
!   if (DECL_STATIC_DESTRUCTOR (f1))
!     {
!       gcc_checking_assert (DECL_STATIC_DESTRUCTOR (f2));
!       priority1 = DECL_FINI_PRIORITY (f1);
!       priority2 = DECL_FINI_PRIORITY (f2);
!     }
!   else
!     {
!       priority1 = DECL_INIT_PRIORITY (f1);
!       priority2 = DECL_INIT_PRIORITY (f2);
!     }
! 
!   if (priority1 < priority2)
!     return -1;
!   else if (priority1 > priority2)
!     return 1;
!   else
!     /* For equal priority, sort into the order of definition in the TU.  */
      return DECL_UID (f1) - DECL_UID (f2);
  }
  
*************** build_cdtor_fns (vec<tree> *ctors, vec<t
*** 1094,1099 ****
--- 1252,1288 ----
      }
  }
  
+ /* Generate new CTORs to register static destructors with __cxa_atexit and add
+    them to the existing list of CTORs; we then process the revised CTORs list.
+ 
+    We sort the DTORs into priority and then TU order, this means that they are
+    registered in that order with __cxa_atexit () and therefore will be run in
+    the reverse order.
+ 
+    Likewise, CTORs are sorted into priority and then TU order, which means that
+    they will run in that order.
+ 
+    This matches the behavior of using init/fini or mod_init_func/mod_term_func
+    sections.  */
+ 
+ static void
+ build_cxa_atexit_fns (vec<tree> *ctors, vec<tree> *dtors)
+ {
+   if (!dtors->is_empty ())
+     {
+       gcc_assert (targetm.dtors_from_cxa_atexit);
+       dtors->qsort (compare_cdtor_tu_order);
+       build_cxa_dtor_registrations (*dtors, ctors);
+     }
+ 
+   if (!ctors->is_empty ())
+     {
+       gcc_assert (targetm.dtors_from_cxa_atexit);
+       ctors->qsort (compare_cdtor_tu_order);
+       build_cdtor (/*ctor_p=*/true, *ctors);
+     }
+ }
+ 
  /* Look for constructors and destructors and produce function calling them.
     This is needed for targets not supporting ctors or dtors, but we perform the
     transformation also at linktime to merge possibly numerous
*************** ipa_cdtor_merge (void)
*** 1112,1118 ****
      if (DECL_STATIC_CONSTRUCTOR (node->decl)
  	|| DECL_STATIC_DESTRUCTOR (node->decl))
         record_cdtor_fn (node, &ctors, &dtors);
!   build_cdtor_fns (&ctors, &dtors);
    return 0;
  }
  
--- 1301,1310 ----
      if (DECL_STATIC_CONSTRUCTOR (node->decl)
  	|| DECL_STATIC_DESTRUCTOR (node->decl))
         record_cdtor_fn (node, &ctors, &dtors);
!   if (targetm.dtors_from_cxa_atexit)
!     build_cxa_atexit_fns (&ctors, &dtors);
!   else
!     build_cdtor_fns (&ctors, &dtors);
    return 0;
  }
  
*************** pass_ipa_cdtor_merge::gate (function *)
*** 1159,1165 ****
    /* Perform the pass when we have no ctors/dtors support
       or at LTO time to merge multiple constructors into single
       function.  */
!   return !targetm.have_ctors_dtors || in_lto_p;
  }
  
  } // anon namespace
--- 1351,1357 ----
    /* Perform the pass when we have no ctors/dtors support
       or at LTO time to merge multiple constructors into single
       function.  */
!   return !targetm.have_ctors_dtors || in_lto_p || targetm.dtors_from_cxa_atexit;
  }
  
  } // anon namespace
diff -Nrcpad gcc-10.3.0/gcc/jit/ChangeLog gcc-10.4.0/gcc/jit/ChangeLog
*** gcc-10.3.0/gcc/jit/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/jit/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,32 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* docs/examples/tut04-toyvm/toyvm.c: Include jit-dejagnu.h.
+ 	* docs/examples/tut04-toyvm/toyvm.cc: Likewise.
+ 	* jit-dejagnu.h: New file, imported from dejagnu-1.6.2 and
+ 	patched for this application.
+ 
+ 2022-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR jit/100613
+ 	* Make-lang.in: Provide clauses for Darwin hosts.
+ 
+ 2021-11-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-11-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* jit-playback.c (function): Initialize m_blocks vector.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/jit/Make-lang.in gcc-10.4.0/gcc/jit/Make-lang.in
*** gcc-10.3.0/gcc/jit/Make-lang.in	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/jit/Make-lang.in	Tue Jun 28 08:54:28 2022
***************
*** 40,49 ****
  # into the jit rule, but that needs a little bit of work
  # to do the right thing within all.cross.
  
- LIBGCCJIT_LINKER_NAME = libgccjit.so
  LIBGCCJIT_VERSION_NUM = 0
  LIBGCCJIT_MINOR_NUM = 0
  LIBGCCJIT_RELEASE_NUM = 1
  LIBGCCJIT_SONAME = $(LIBGCCJIT_LINKER_NAME).$(LIBGCCJIT_VERSION_NUM)
  LIBGCCJIT_FILENAME = \
    $(LIBGCCJIT_SONAME).$(LIBGCCJIT_MINOR_NUM).$(LIBGCCJIT_RELEASE_NUM)
--- 40,83 ----
  # into the jit rule, but that needs a little bit of work
  # to do the right thing within all.cross.
  
  LIBGCCJIT_VERSION_NUM = 0
  LIBGCCJIT_MINOR_NUM = 0
  LIBGCCJIT_RELEASE_NUM = 1
+ 
+ ifneq (,$(findstring darwin,$(host)))
+ 
+ LIBGCCJIT_AGE = 1
+ LIBGCCJIT_BASENAME = libgccjit
+ 
+ LIBGCCJIT_SONAME = \
+   ${libdir}/$(LIBGCCJIT_BASENAME).$(LIBGCCJIT_VERSION_NUM).dylib
+ LIBGCCJIT_FILENAME = $(LIBGCCJIT_BASENAME).$(LIBGCCJIT_VERSION_NUM).dylib
+ LIBGCCJIT_LINKER_NAME = $(LIBGCCJIT_BASENAME).dylib
+ 
+ # Conditionalize the use of the LD_VERSION_SCRIPT_OPTION and
+ # LD_SONAME_OPTION depending if configure found them, using $(if)
+ # We have to define a COMMA here, otherwise the commas in the "true"
+ # result are treated as separators by the $(if).
+ COMMA := ,
+ LIBGCCJIT_VERSION_SCRIPT_OPTION = \
+ 	$(if $(LD_VERSION_SCRIPT_OPTION),\
+ 	  -Wl$(COMMA)$(LD_VERSION_SCRIPT_OPTION)$(COMMA)$(srcdir)/jit/libgccjit.map)
+ 
+ LIBGCCJIT_SONAME_OPTION = \
+ 	$(if $(LD_SONAME_OPTION), \
+ 	     -Wl$(COMMA)$(LD_SONAME_OPTION)$(COMMA)$(LIBGCCJIT_SONAME))
+ 
+ LIBGCCJIT_SONAME_SYMLINK = $(LIBGCCJIT_FILENAME)
+ LIBGCCJIT_LINKER_NAME_SYMLINK = $(LIBGCCJIT_LINKER_NAME)
+ 
+ jit: $(LIBGCCJIT_FILENAME) \
+ 	$(LIBGCCJIT_SYMLINK) \
+ 	$(LIBGCCJIT_LINKER_NAME_SYMLINK) \
+ 	$(FULL_DRIVER_NAME)
+ 
+ else
+ 
+ LIBGCCJIT_LINKER_NAME = libgccjit.so
  LIBGCCJIT_SONAME = $(LIBGCCJIT_LINKER_NAME).$(LIBGCCJIT_VERSION_NUM)
  LIBGCCJIT_FILENAME = \
    $(LIBGCCJIT_SONAME).$(LIBGCCJIT_MINOR_NUM).$(LIBGCCJIT_RELEASE_NUM)
*************** jit: $(LIBGCCJIT_FILENAME) \
*** 69,74 ****
--- 103,112 ----
  	$(LIBGCCJIT_LINKER_NAME_SYMLINK) \
  	$(FULL_DRIVER_NAME)
  
+ endif
+ 
+ jit.serial = $(LIBGCCJIT_FILENAME)
+ 
  # Tell GNU make to ignore these if they exist.
  .PHONY: jit
  
*************** jit_OBJS = attribs.o \
*** 87,92 ****
--- 125,142 ----
  # Use strict warnings for this front end.
  jit-warn = $(STRICT_WARN)
  
+ ifneq (,$(findstring darwin,$(host)))
+ # TODO : Construct a Darwin-style symbol export file.
+ LIBGCCJIT_EXTRA_OPTS = -Wl,-compatibility_version,$(LIBGCCJIT_VERSION_NUM) \
+ 	-Wl,-current_version,$(LIBGCCJIT_VERSION_NUM).$(LIBGCCJIT_MINOR_NUM).$(LIBGCCJIT_AGE) \
+ 	$(LIBGCCJIT_VERSION_SCRIPT_OPTION) \
+ 	$(LIBGCCJIT_SONAME_OPTION)
+ else
+ 
+ LIBGCCJIT_EXTRA_OPTS = $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \
+ 	$(LIBGCCJIT_SONAME_OPTION)
+ endif
+ 
  # We avoid using $(BACKEND) from Makefile.in in order to avoid pulling
  # in main.o
  $(LIBGCCJIT_FILENAME): $(jit_OBJS) \
*************** $(LIBGCCJIT_FILENAME): $(jit_OBJS) \
*** 98,108 ****
  	     $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \
  	     $(CPPLIB) $(LIBDECNUMBER) $(EXTRA_GCC_LIBS) $(LIBS) $(BACKENDLIBS) \
  	     $(EXTRA_GCC_OBJS) \
! 	     $(LIBGCCJIT_VERSION_SCRIPT_OPTION) \
! 	     $(LIBGCCJIT_SONAME_OPTION)
  
  $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME)
  	ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK)
  
  $(LIBGCCJIT_LINKER_NAME_SYMLINK): $(LIBGCCJIT_SONAME_SYMLINK)
  	ln -sf $(LIBGCCJIT_SONAME_SYMLINK) $(LIBGCCJIT_LINKER_NAME_SYMLINK)
--- 148,162 ----
  	     $(jit_OBJS) libbackend.a libcommon-target.a libcommon.a \
  	     $(CPPLIB) $(LIBDECNUMBER) $(EXTRA_GCC_LIBS) $(LIBS) $(BACKENDLIBS) \
  	     $(EXTRA_GCC_OBJS) \
! 	     $(LIBGCCJIT_EXTRA_OPTS)
  
+ # Create symlinks
+ 
+ ifeq (,$(findstring darwin,$(host)))
+ # but only one level for Darwin, version info is embedded.
  $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME)
  	ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK)
+ endif
  
  $(LIBGCCJIT_LINKER_NAME_SYMLINK): $(LIBGCCJIT_SONAME_SYMLINK)
  	ln -sf $(LIBGCCJIT_SONAME_SYMLINK) $(LIBGCCJIT_LINKER_NAME_SYMLINK)
*************** selftest-jit:
*** 275,281 ****
  
  #
  # Install hooks:
! jit.install-common: installdirs
  	$(INSTALL_PROGRAM) $(LIBGCCJIT_FILENAME) \
  	  $(DESTDIR)/$(libdir)/$(LIBGCCJIT_FILENAME)
  	ln -sf \
--- 329,354 ----
  
  #
  # Install hooks:
! 
! jit.install-headers: installdirs
! 	$(INSTALL_DATA) $(srcdir)/jit/libgccjit.h \
! 	  $(DESTDIR)$(includedir)/libgccjit.h
! 	$(INSTALL_DATA) $(srcdir)/jit/libgccjit++.h \
! 	  $(DESTDIR)$(includedir)/libgccjit++.h
! 
! 
! ifneq (,$(findstring darwin,$(host)))
! # but only one level for Darwin
! 
! jit.install-common: installdirs jit.install-headers
! 	$(INSTALL_PROGRAM) $(LIBGCCJIT_FILENAME) \
! 	  $(DESTDIR)$(libdir)/$(LIBGCCJIT_FILENAME)
! 	ln -sf \
! 	  $(LIBGCCJIT_SONAME_SYMLINK)\
! 	  $(DESTDIR)$(libdir)/$(LIBGCCJIT_LINKER_NAME_SYMLINK)
! 
! else
! jit.install-common: installdirs jit.install-headers
  	$(INSTALL_PROGRAM) $(LIBGCCJIT_FILENAME) \
  	  $(DESTDIR)/$(libdir)/$(LIBGCCJIT_FILENAME)
  	ln -sf \
*************** jit.install-common: installdirs
*** 283,293 ****
  	  $(DESTDIR)/$(libdir)/$(LIBGCCJIT_SONAME_SYMLINK)
  	ln -sf \
  	  $(LIBGCCJIT_SONAME_SYMLINK)\
! 	  $(DESTDIR)/$(libdir)/$(LIBGCCJIT_LINKER_NAME_SYMLINK)
! 	$(INSTALL_DATA) $(srcdir)/jit/libgccjit.h \
! 	  $(DESTDIR)/$(includedir)/libgccjit.h
! 	$(INSTALL_DATA) $(srcdir)/jit/libgccjit++.h \
! 	  $(DESTDIR)/$(includedir)/libgccjit++.h
  
  jit.install-man:
  
--- 356,363 ----
  	  $(DESTDIR)/$(libdir)/$(LIBGCCJIT_SONAME_SYMLINK)
  	ln -sf \
  	  $(LIBGCCJIT_SONAME_SYMLINK)\
! 	  $(DESTDIR)$(libdir)/$(LIBGCCJIT_LINKER_NAME_SYMLINK)
! endif
  
  jit.install-man:
  
diff -Nrcpad gcc-10.3.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.c gcc-10.4.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.c
*** gcc-10.3.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.c	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 24,30 ****
  #include <stdlib.h>
  #include <string.h>
  
! #include <dejagnu.h>
  
  #include <libgccjit.h>
  
--- 24,30 ----
  #include <stdlib.h>
  #include <string.h>
  
! #include "jit-dejagnu.h"
  
  #include <libgccjit.h>
  
diff -Nrcpad gcc-10.3.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc gcc-10.4.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
*** gcc-10.3.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/jit/docs/examples/tut04-toyvm/toyvm.cc	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 24,30 ****
  #include <stdlib.h>
  #include <string.h>
  
! #include <dejagnu.h>
  
  #include <libgccjit++.h>
  
--- 24,30 ----
  #include <stdlib.h>
  #include <string.h>
  
! #include "jit-dejagnu.h"
  
  #include <libgccjit++.h>
  
diff -Nrcpad gcc-10.3.0/gcc/jit/jit-dejagnu.h gcc-10.4.0/gcc/jit/jit-dejagnu.h
*** gcc-10.3.0/gcc/jit/jit-dejagnu.h	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/jit/jit-dejagnu.h	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,338 ----
+ /* DejaGnu unit testing header.
+    Copyright (C) 2000-2016 Free Software Foundation, Inc.
+ 
+ This file is part of DejaGnu.
+ 
+ DejaGnu 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.
+ 
+ DejaGnu 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 DejaGnu; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+ 
+ /* Imported from 1.6.2 with modifications
+    * to avoid and unused symbol in C compilations
+    * avoid wait () clashing with system-provided routines
+    * provide a deterministic last line of output after the totals.  */
+ 
+ #ifndef __DEJAGNU_H__
+ #define __DEJAGNU_H__
+ 
+ #include <stdio.h>
+ #include <stdarg.h>
+ #include <string.h>
+ 
+ /* If you have problems with DejaGnu dropping failed, untested, or
+  * unresolved messages generated by a unit testcase, then:  */
+ 
+ /* #define _DEJAGNU_WAIT_  */
+ 
+ #ifdef _DEJAGNU_WAIT_
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+ #endif
+ 
+ static int passed;
+ static int failed;
+ static int untest;
+ static int unresolve;
+ static int xfailed;
+ #ifdef __cplusplus
+ static int xpassed;
+ #endif
+ 
+ static char buffer[512];
+ 
+ #ifdef _DEJAGNU_WAIT_
+ void
+ dg_wait (void)
+ {
+   fd_set rfds;
+   struct timeval tv;
+ 
+   FD_ZERO (&rfds);
+   tv.tv_sec = 0;
+   tv.tv_usec = 1;
+ 
+   select (0, &rfds, NULL, NULL, &tv);
+ }
+ #endif
+ 
+ static inline void
+ pass (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   passed++;
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tPASSED: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ xpass (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   passed++;
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tXPASSED: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ fail (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   failed++;
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tFAILED: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ xfail (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   failed++;
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tXFAILED: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ untested (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   untest++;
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tUNTESTED: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ unresolved (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   unresolve++;
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tUNRESOLVED: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ note (const char* fmt, ...)
+ {
+   va_list ap;
+ 
+   va_start (ap, fmt);
+   vsnprintf (buffer, sizeof (buffer), fmt, ap);
+   va_end (ap);
+   printf ("\tNOTE: %s\n", buffer);
+ #ifdef _DEJAGNU_WAIT_
+   dg_wait ();
+ #endif
+ }
+ 
+ static inline void
+ totals (void)
+ {
+   printf ("\nTotals:\n");
+   printf ("\t#passed:\t\t%d\n", passed);
+   printf ("\t#real failed:\t\t%d\n", failed);
+   if (xfailed)
+     printf ("\t#expected failures:\t\t%d\n", xfailed);
+   if (untest)
+     printf ("\t#untested:\t\t%d\n", untest);
+   if (unresolve)
+     printf ("\t#unresolved:\t\t%d\n", unresolve);
+   printf ("\njit-dg-harness-complete\n");
+ }
+ 
+ #ifdef __cplusplus
+ 
+ #include <iostream>
+ #include <iomanip>
+ #include <fstream>
+ #include <string>
+ 
+ const char *outstate_list[] = {
+   "FAILED: ", "PASSED: ", "UNTESTED: ", "UNRESOLVED: ", "XFAILED: ", "XPASSED: "
+ };
+ 
+ const char ** outstate = outstate_list;
+ 
+ enum teststate { FAILED, PASSED, UNTESTED, UNRESOLVED, XFAILED, XPASSED} laststate;
+ 
+ class TestState {
+  private:
+   teststate laststate;
+   std::string lastmsg;
+  public:
+   TestState (void)
+     {
+       passed = 0;
+       failed = 0;
+       untest = 0;
+       xpassed = 0;
+       xfailed = 0;
+       unresolve = 0;
+     }
+ 
+   ~TestState (void) { totals(); }
+ 
+   void testrun (bool b, std::string s)
+     {
+       if (b)
+ 	pass (s);
+       else
+ 	fail (s);
+     }
+ 
+     void pass (std::string s)
+       {
+ 	passed++;
+ 	laststate = PASSED;
+ 	lastmsg = s;
+ 	std::cout << "\t" << outstate[PASSED] << s << std::endl;
+       }
+ 
+     void pass (const char *c)
+       {
+ 	std::string s = c;
+ 	pass (s);
+       }
+ 
+     void xpass (std::string s)
+       {
+ 	xpassed++;
+ 	laststate = PASSED;
+ 	lastmsg = s;
+ 	std::cout << "\t" << outstate[XPASSED] << s << std::endl;
+       }
+ 
+     void xpass (const char *c)
+       {
+ 	std::string s = c;
+ 	xpass (s);
+       }
+ 
+     void fail (std::string s)
+       {
+ 	failed++;
+ 	laststate = FAILED;
+ 	lastmsg = s;
+ 	std::cout << "\t" << outstate[FAILED] << s << std::endl;
+       }
+ 
+     void fail (const char *c)
+       {
+ 	std::string s = c;
+ 	fail (s);
+       }
+ 
+     void xfail (std::string s)
+       {
+ 	xfailed++;
+ 	laststate = XFAILED;
+ 	lastmsg = s;
+ 	std::cout << "\t" << outstate[XFAILED] << s << std::endl;
+       }
+ 
+     void xfail (const char *c)
+       {
+ 	std::string s = c;
+ 	xfail (s);
+       }
+ 
+     void untested (std::string s)
+       {
+ 	untest++;
+ 	laststate = UNTESTED;
+ 	lastmsg = s;
+ 	std::cout << "\t" << outstate[UNTESTED] << s << std::endl;
+       }
+ 
+     void untested (const char *c)
+       {
+ 	std::string s = c;
+ 	untested (s);
+       }
+ 
+     void unresolved (std::string s)
+       {
+ 	unresolve++;
+ 	laststate = UNRESOLVED;
+ 	lastmsg = s;
+ 	std::cout << "\t" << outstate[UNRESOLVED] << s << std::endl;
+       }
+ 
+     void unresolved (const char *c)
+       {
+ 	std::string s = c;
+ 	unresolved (s);
+       }
+ 
+     void totals (void)
+       {
+ 	std::cout << "\t#passed:\t\t" << passed << std::endl;
+ 	std::cout << "\t#real failed:\t\t" << failed << std::endl;
+ 	if (xfailed)
+ 	  std::cout << "\t#expected failures:\t\t" << xfailed << std::endl;
+ 	if (xpassed)
+ 	  std::cout << "\t#unexpected passes:\t\t" << xpassed << std::endl;
+ 	if (untest)
+ 	  std::cout << "\t#untested:\t\t" << untest << std::endl;
+ 	if (unresolve)
+ 	  std::cout << "\t#unresolved:\t\t" << unresolve << std::endl;
+         std::cout << "\njit-dg-harness-complete" << std::endl;
+       }
+ 
+     // This is so this class can be printed in an ostream.
+     friend std::ostream & operator << (std::ostream &os, TestState& t)
+       {
+ 	return os << "\t" << outstate[t.laststate] << t.lastmsg ;
+       }
+ 
+     int GetState (void) { return laststate; }
+     std::string GetMsg (void) { return lastmsg; }
+ };
+ 
+ #endif /* __cplusplus */
+ #endif /* _DEJAGNU_H_ */
diff -Nrcpad gcc-10.3.0/gcc/jit/jit-playback.c gcc-10.4.0/gcc/jit/jit-playback.c
*** gcc-10.3.0/gcc/jit/jit-playback.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/jit/jit-playback.c	Tue Jun 28 08:54:28 2022
*************** function (context *ctxt,
*** 1357,1363 ****
  : m_ctxt(ctxt),
    m_inner_fndecl (fndecl),
    m_inner_bind_expr (NULL),
!   m_kind (kind)
  {
    if (m_kind != GCC_JIT_FUNCTION_IMPORTED)
      {
--- 1357,1364 ----
  : m_ctxt(ctxt),
    m_inner_fndecl (fndecl),
    m_inner_bind_expr (NULL),
!   m_kind (kind),
!   m_blocks ()
  {
    if (m_kind != GCC_JIT_FUNCTION_IMPORTED)
      {
diff -Nrcpad gcc-10.3.0/gcc/jump.c gcc-10.4.0/gcc/jump.c
*** gcc-10.3.0/gcc/jump.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/jump.c	Tue Jun 28 08:54:28 2022
*************** rtx_renumbered_equal_p (const_rtx x, con
*** 1767,1772 ****
--- 1767,1777 ----
      CASE_CONST_UNIQUE:
        return 0;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case LABEL_REF:
        /* We can't assume nonlocal labels have their following insns yet.  */
        if (LABEL_REF_NONLOCAL_P (x) || LABEL_REF_NONLOCAL_P (y))
diff -Nrcpad gcc-10.3.0/gcc/loop-invariant.c gcc-10.4.0/gcc/loop-invariant.c
*** gcc-10.3.0/gcc/loop-invariant.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/loop-invariant.c	Tue Jun 28 08:54:28 2022
*************** can_move_invariant_reg (class loop *loop
*** 1692,1697 ****
--- 1692,1698 ----
    unsigned int dest_regno, defs_in_loop_count = 0;
    rtx_insn *insn = inv->insn;
    basic_block bb = BLOCK_FOR_INSN (inv->insn);
+   auto_vec <rtx_insn *, 16> debug_insns_to_reset;
  
    /* We ignore hard register and memory access for cost and complexity reasons.
       Hard register are few at this stage and expensive to consider as they
*************** can_move_invariant_reg (class loop *loop
*** 1726,1735 ****
  	continue;
  
        /* Don't move if a use is not dominated by def in insn.  */
!       if (use_bb == bb && DF_INSN_LUID (insn) >= DF_INSN_LUID (use_insn))
! 	return false;
!       if (!dominated_by_p (CDI_DOMINATORS, use_bb, bb))
! 	return false;
      }
  
    /* Check for other defs.  Any other def in the loop might reach a use
--- 1727,1739 ----
  	continue;
  
        /* Don't move if a use is not dominated by def in insn.  */
!       if ((use_bb == bb && DF_INSN_LUID (insn) >= DF_INSN_LUID (use_insn))
! 	  || !dominated_by_p (CDI_DOMINATORS, use_bb, bb))
! 	{
! 	  if (!DEBUG_INSN_P (use_insn))
! 	    return false;
! 	  debug_insns_to_reset.safe_push (use_insn);
! 	}
      }
  
    /* Check for other defs.  Any other def in the loop might reach a use
*************** can_move_invariant_reg (class loop *loop
*** 1752,1757 ****
--- 1756,1770 ----
  	return false;
      }
  
+   /* Reset debug uses if a use is not dominated by def in insn.  */
+   rtx_insn *use_insn;
+   unsigned i;
+   FOR_EACH_VEC_ELT (debug_insns_to_reset, i, use_insn)
+     {
+       INSN_VAR_LOCATION_LOC (use_insn) = gen_rtx_UNKNOWN_VAR_LOC ();
+       df_insn_rescan (use_insn);
+     }
+ 
    return true;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/lra-assigns.c gcc-10.4.0/gcc/lra-assigns.c
*** gcc-10.3.0/gcc/lra-assigns.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/lra-assigns.c	Tue Jun 28 08:54:28 2022
*************** lra_split_hard_reg_for (void)
*** 1773,1780 ****
       iterations.  Either it's an asm and something is wrong with the
       constraints, or we have run out of spill registers; error out in
       either case.  */
!   bool asm_p = false;
!   bitmap_head failed_reload_insns, failed_reload_pseudos;
    
    if (lra_dump_file != NULL)
      fprintf (lra_dump_file,
--- 1773,1780 ----
       iterations.  Either it's an asm and something is wrong with the
       constraints, or we have run out of spill registers; error out in
       either case.  */
!   bool asm_p = false, spill_p = false;
!   bitmap_head failed_reload_insns, failed_reload_pseudos, over_split_insns;
    
    if (lra_dump_file != NULL)
      fprintf (lra_dump_file,
*************** lra_split_hard_reg_for (void)
*** 1785,1790 ****
--- 1785,1791 ----
    bitmap_ior (&non_reload_pseudos, &lra_inheritance_pseudos, &lra_split_regs);
    bitmap_ior_into (&non_reload_pseudos, &lra_subreg_reload_pseudos);
    bitmap_ior_into (&non_reload_pseudos, &lra_optional_reload_pseudos);
+   bitmap_initialize (&over_split_insns, &reg_obstack);
    for (i = lra_constraint_new_regno_start; i < max_regno; i++)
      if (reg_renumber[i] < 0 && lra_reg_info[i].nrefs != 0
  	&& (rclass = lra_get_allocno_class (i)) != NO_REGS
*************** lra_split_hard_reg_for (void)
*** 1792,1804 ****
        {
  	if (! find_reload_regno_insns (i, first, last))
  	  continue;
! 	if (spill_hard_reg_in_range (i, rclass, first, last))
  	  {
! 	    bitmap_clear (&failed_reload_pseudos);
! 	    return true;
  	  }
- 	bitmap_set_bit (&failed_reload_pseudos, i);
        }
    bitmap_clear (&non_reload_pseudos);
    bitmap_initialize (&failed_reload_insns, &reg_obstack);
    EXECUTE_IF_SET_IN_BITMAP (&failed_reload_pseudos, 0, u, bi)
--- 1793,1833 ----
        {
  	if (! find_reload_regno_insns (i, first, last))
  	  continue;
! 	if (BLOCK_FOR_INSN (first) == BLOCK_FOR_INSN (last))
  	  {
! 	    /* Check that we are not trying to split over the same insn
! 	       requiring reloads to avoid splitting the same hard reg twice or
! 	       more.  If we need several hard regs splitting over the same insn
! 	       it can be finished on the next iterations.
! 
! 	       The following loop iteration number is small as we split hard
! 	       reg in a very small range.  */
! 	    for (insn = first;
! 		 insn != NEXT_INSN (last);
! 		 insn = NEXT_INSN (insn))
! 	      if (bitmap_bit_p (&over_split_insns, INSN_UID (insn)))
! 		break;
! 	    if (insn != NEXT_INSN (last)
! 		|| !spill_hard_reg_in_range (i, rclass, first, last))
! 	      {
! 		bitmap_set_bit (&failed_reload_pseudos, i);
! 	      }
! 	    else
! 	      {
! 		for (insn = first;
! 		     insn != NEXT_INSN (last);
! 		     insn = NEXT_INSN (insn))
! 		  bitmap_set_bit (&over_split_insns, INSN_UID (insn));
! 		spill_p = true;
! 	      }
  	  }
        }
+   bitmap_clear (&over_split_insns);
+   if (spill_p)
+     {
+       bitmap_clear (&failed_reload_pseudos);
+       return true;
+     }
    bitmap_clear (&non_reload_pseudos);
    bitmap_initialize (&failed_reload_insns, &reg_obstack);
    EXECUTE_IF_SET_IN_BITMAP (&failed_reload_pseudos, 0, u, bi)
diff -Nrcpad gcc-10.3.0/gcc/lra-constraints.c gcc-10.4.0/gcc/lra-constraints.c
*** gcc-10.3.0/gcc/lra-constraints.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/lra-constraints.c	Tue Jun 28 08:54:28 2022
*************** get_reg_class (int regno)
*** 235,246 ****
     CL.  Use elimination first if REG is a hard register.  If REG is a
     reload pseudo created by this constraints pass, assume that it will
     be allocated a hard register from its allocno class, but allow that
!    class to be narrowed to CL if it is currently a superset of CL.
  
     If NEW_CLASS is nonnull, set *NEW_CLASS to the new allocno class of
     REGNO (reg), or NO_REGS if no change in its class was needed.  */
  static bool
! in_class_p (rtx reg, enum reg_class cl, enum reg_class *new_class)
  {
    enum reg_class rclass, common_class;
    machine_mode reg_mode;
--- 235,251 ----
     CL.  Use elimination first if REG is a hard register.  If REG is a
     reload pseudo created by this constraints pass, assume that it will
     be allocated a hard register from its allocno class, but allow that
!    class to be narrowed to CL if it is currently a superset of CL and
!    if either:
! 
!    - ALLOW_ALL_RELOAD_CLASS_CHANGES_P is true or
!    - the instruction we're processing is not a reload move.
  
     If NEW_CLASS is nonnull, set *NEW_CLASS to the new allocno class of
     REGNO (reg), or NO_REGS if no change in its class was needed.  */
  static bool
! in_class_p (rtx reg, enum reg_class cl, enum reg_class *new_class,
! 	    bool allow_all_reload_class_changes_p = false)
  {
    enum reg_class rclass, common_class;
    machine_mode reg_mode;
*************** in_class_p (rtx reg, enum reg_class cl,
*** 267,273 ****
  	 typically moves that have many alternatives, and restricting
  	 reload pseudos for one alternative may lead to situations
  	 where other reload pseudos are no longer allocatable.  */
!       || (INSN_UID (curr_insn) >= new_insn_uid_start
  	  && src != NULL
  	  && ((REG_P (src) || MEM_P (src))
  	      || (GET_CODE (src) == SUBREG
--- 272,279 ----
  	 typically moves that have many alternatives, and restricting
  	 reload pseudos for one alternative may lead to situations
  	 where other reload pseudos are no longer allocatable.  */
!       || (!allow_all_reload_class_changes_p
! 	  && INSN_UID (curr_insn) >= new_insn_uid_start
  	  && src != NULL
  	  && ((REG_P (src) || MEM_P (src))
  	      || (GET_CODE (src) == SUBREG
*************** init_curr_insn_input_reloads (void)
*** 570,582 ****
    curr_insn_input_reloads_num = 0;
  }
  
! /* Create a new pseudo using MODE, RCLASS, ORIGINAL or reuse already
!    created input reload pseudo (only if TYPE is not OP_OUT).  Don't
!    reuse pseudo if IN_SUBREG_P is true and the reused pseudo should be
!    wrapped up in SUBREG.  The result pseudo is returned through
!    RESULT_REG.  Return TRUE if we created a new pseudo, FALSE if we
!    reused the already created input reload pseudo.  Use TITLE to
!    describe new registers for debug purposes.  */
  static bool
  get_reload_reg (enum op_type type, machine_mode mode, rtx original,
  		enum reg_class rclass, bool in_subreg_p,
--- 576,587 ----
    curr_insn_input_reloads_num = 0;
  }
  
! /* Create a new pseudo using MODE, RCLASS, ORIGINAL or reuse an existing
!    reload pseudo.  Don't reuse an existing reload pseudo if IN_SUBREG_P
!    is true and the reused pseudo should be wrapped up in a SUBREG.
!    The result pseudo is returned through RESULT_REG.  Return TRUE if we
!    created a new pseudo, FALSE if we reused an existing reload pseudo.
!    Use TITLE to describe new registers for debug purposes.  */
  static bool
  get_reload_reg (enum op_type type, machine_mode mode, rtx original,
  		enum reg_class rclass, bool in_subreg_p,
*************** get_reload_reg (enum op_type type, machi
*** 588,593 ****
--- 593,632 ----
  
    if (type == OP_OUT)
      {
+       /* Output reload registers tend to start out with a conservative
+ 	 choice of register class.  Usually this is ALL_REGS, although
+ 	 a target might narrow it (for performance reasons) through
+ 	 targetm.preferred_reload_class.  It's therefore quite common
+ 	 for a reload instruction to require a more restrictive class
+ 	 than the class that was originally assigned to the reload register.
+ 
+ 	 In these situations, it's more efficient to refine the choice
+ 	 of register class rather than create a second reload register.
+ 	 This also helps to avoid cycling for registers that are only
+ 	 used by reload instructions.  */
+       rtx src = curr_insn_set != NULL ? SET_SRC (curr_insn_set) : NULL;
+       if (REG_P (original)
+ 	  && (int) REGNO (original) >= new_regno_start
+ 	  && INSN_UID (curr_insn) >= new_insn_uid_start
+ 	  && in_class_p (original, rclass, &new_class, true)
+ 	  && src != NULL
+ 	  && ((REG_P (src) || MEM_P (src))
+ 	      || (GET_CODE (src) == SUBREG
+ 		  && (REG_P (SUBREG_REG (src)) || MEM_P (SUBREG_REG (src))))))
+ 	{
+ 	  unsigned int regno = REGNO (original);
+ 	  if (lra_dump_file != NULL)
+ 	    {
+ 	      fprintf (lra_dump_file, "	 Reuse r%d for output ", regno);
+ 	      dump_value_slim (lra_dump_file, original, 1);
+ 	    }
+ 	  if (new_class != lra_get_allocno_class (regno))
+ 	    lra_change_class (regno, new_class, ", change to", false);
+ 	  if (lra_dump_file != NULL)
+ 	    fprintf (lra_dump_file, "\n");
+ 	  *result_reg = original;
+ 	  return false;
+ 	}
        *result_reg
  	= lra_create_new_reg_with_unique_value (mode, original, rclass, title);
        return true;
*************** operands_match_p (rtx x, rtx y, int y_ha
*** 751,756 ****
--- 790,800 ----
      CASE_CONST_UNIQUE:
        return false;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case LABEL_REF:
        return label_ref_label (x) == label_ref_label (y);
      case SYMBOL_REF:
*************** match_reload (signed char out, signed ch
*** 1014,1020 ****
  	  for (i = 0; outs[i] >= 0; i++)
  	    {
  	      rtx other_out_rtx = *curr_id->operand_loc[outs[i]];
! 	      if (REG_P (other_out_rtx)
  		  && (regno_val_use_in (REGNO (in_rtx), other_out_rtx)
  		      != NULL_RTX))
  		{
--- 1058,1064 ----
  	  for (i = 0; outs[i] >= 0; i++)
  	    {
  	      rtx other_out_rtx = *curr_id->operand_loc[outs[i]];
! 	      if (outs[i] != out && REG_P (other_out_rtx)
  		  && (regno_val_use_in (REGNO (in_rtx), other_out_rtx)
  		      != NULL_RTX))
  		{
*************** curr_insn_transform (bool check_only_p)
*** 4262,4268 ****
        }
  
    n_outputs = 0;
!   outputs[0] = -1;
    for (i = 0; i < n_operands; i++)
      {
        int regno;
--- 4306,4315 ----
        }
  
    n_outputs = 0;
!   for (i = 0; i < n_operands; i++)
!     if (curr_static_id->operand[i].type == OP_OUT)
!       outputs[n_outputs++] = i;
!   outputs[n_outputs] = -1;
    for (i = 0; i < n_operands; i++)
      {
        int regno;
*************** curr_insn_transform (bool check_only_p)
*** 4337,4344 ****
  		     lra-lives.c.  */
  		  match_reload (i, goal_alt_matched[i], outputs, goal_alt[i], &before,
  				&after, TRUE);
- 		  outputs[n_outputs++] = i;
- 		  outputs[n_outputs] = -1;
  		}
  	      continue;
  	    }
--- 4384,4389 ----
*************** curr_insn_transform (bool check_only_p)
*** 4509,4522 ****
  	   process_alt_operands decides that it is possible.  */
  	gcc_unreachable ();
  
-       /* Memorise processed outputs so that output remaining to be processed
- 	 can avoid using the same register value (see match_reload).  */
-       if (curr_static_id->operand[i].type == OP_OUT)
- 	{
- 	  outputs[n_outputs++] = i;
- 	  outputs[n_outputs] = -1;
- 	}
- 
        if (optional_p)
  	{
  	  rtx reg = op;
--- 4554,4559 ----
diff -Nrcpad gcc-10.3.0/gcc/lra-eliminations.c gcc-10.4.0/gcc/lra-eliminations.c
*** gcc-10.3.0/gcc/lra-eliminations.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/lra-eliminations.c	Tue Jun 28 08:54:28 2022
*************** eliminate_regs_in_insn (rtx_insn *insn,
*** 885,891 ****
  			poly_int64 update_sp_offset)
  {
    int icode = recog_memoized (insn);
!   rtx old_set = single_set (insn);
    bool validate_p;
    int i;
    rtx substed_operand[MAX_RECOG_OPERANDS];
--- 885,891 ----
  			poly_int64 update_sp_offset)
  {
    int icode = recog_memoized (insn);
!   rtx set, old_set = single_set (insn);
    bool validate_p;
    int i;
    rtx substed_operand[MAX_RECOG_OPERANDS];
*************** eliminate_regs_in_insn (rtx_insn *insn,
*** 1038,1043 ****
--- 1038,1072 ----
    for (i = 0; i < static_id->n_dups; i++)
      *id->dup_loc[i] = substed_operand[(int) static_id->dup_num[i]];
  
+   /* Transform plus (plus (hard reg, const), pseudo) to plus (plus (pseudo,
+      const), hard reg) in order to keep insn containing eliminated register
+      after all reloads calculating its offset.  This permits to keep register
+      pressure under control and helps to avoid LRA cycling in patalogical
+      cases.  */
+   if (! replace_p && (set = single_set (insn)) != NULL
+       && GET_CODE (SET_SRC (set)) == PLUS
+       && GET_CODE (XEXP (SET_SRC (set), 0)) == PLUS)
+     {
+       rtx reg1, reg2, op1, op2;
+       
+       reg1 = op1 = XEXP (XEXP (SET_SRC (set), 0), 0);
+       reg2 = op2 = XEXP (SET_SRC (set), 1);
+       if (GET_CODE (reg1) == SUBREG)
+ 	reg1 = SUBREG_REG (reg1);
+       if (GET_CODE (reg2) == SUBREG)
+ 	reg2 = SUBREG_REG (reg2);
+       if (REG_P (reg1) && REG_P (reg2)
+ 	  && REGNO (reg1) < FIRST_PSEUDO_REGISTER
+ 	  && REGNO (reg2) >= FIRST_PSEUDO_REGISTER
+ 	  && GET_MODE (reg1) == Pmode
+ 	  && !have_addptr3_insn (lra_pmode_pseudo, reg1,
+ 				 XEXP (XEXP (SET_SRC (set), 0), 1)))
+ 	{
+ 	  XEXP (XEXP (SET_SRC (set), 0), 0) = op2;
+ 	  XEXP (SET_SRC (set), 1) = op1;
+ 	}
+     }
+ 
    /* If we had a move insn but now we don't, re-recognize it.
       This will cause spurious re-recognition if the old move had a
       PARALLEL since the new one still will, but we can't call
diff -Nrcpad gcc-10.3.0/gcc/lra-int.h gcc-10.4.0/gcc/lra-int.h
*** gcc-10.3.0/gcc/lra-int.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/lra-int.h	Tue Jun 28 08:54:28 2022
*************** extern void lra_register_new_scratch_op
*** 326,331 ****
--- 326,332 ----
  extern int lra_new_regno_start;
  extern int lra_constraint_new_regno_start;
  extern int lra_bad_spill_regno_start;
+ extern rtx lra_pmode_pseudo;
  extern bitmap_head lra_inheritance_pseudos;
  extern bitmap_head lra_split_regs;
  extern bitmap_head lra_subreg_reload_pseudos;
diff -Nrcpad gcc-10.3.0/gcc/lra.c gcc-10.4.0/gcc/lra.c
*** gcc-10.3.0/gcc/lra.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/lra.c	Tue Jun 28 08:54:28 2022
*************** int lra_constraint_new_regno_start;
*** 2306,2311 ****
--- 2306,2314 ----
     it is possible.  */
  int lra_bad_spill_regno_start;
  
+ /* A pseudo of Pmode.  */
+ rtx lra_pmode_pseudo;
+ 
  /* Inheritance pseudo regnos before the new spill pass.	 */
  bitmap_head lra_inheritance_pseudos;
  
*************** lra (FILE *f)
*** 2366,2371 ****
--- 2369,2375 ----
  
    lra_dump_file = f;
    lra_asm_error_p = false;
+   lra_pmode_pseudo = gen_reg_rtx (Pmode);
    
    timevar_push (TV_LRA);
  
diff -Nrcpad gcc-10.3.0/gcc/lto/ChangeLog gcc-10.4.0/gcc/lto/ChangeLog
*** gcc-10.3.0/gcc/lto/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/lto/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/lto-streamer.h gcc-10.4.0/gcc/lto-streamer.h
*** gcc-10.3.0/gcc/lto-streamer.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/lto-streamer.h	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 121,127 ****
       form followed by the data for the string.  */
  
  #define LTO_major_version 9
! #define LTO_minor_version 3
  
  typedef unsigned char	lto_decl_flags_t;
  
--- 121,127 ----
       form followed by the data for the string.  */
  
  #define LTO_major_version 9
! #define LTO_minor_version 4
  
  typedef unsigned char	lto_decl_flags_t;
  
diff -Nrcpad gcc-10.3.0/gcc/match.pd gcc-10.4.0/gcc/match.pd
*** gcc-10.3.0/gcc/match.pd	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/match.pd	Tue Jun 28 08:54:28 2022
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 352,363 ****
      { build_minus_one_cst (type); })))
  
  /* For unsigned integral types, FLOOR_DIV_EXPR is the same as
!    TRUNC_DIV_EXPR.  Rewrite into the latter in this case.  */
! (simplify
!  (floor_div @0 @1)
!  (if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
!       && TYPE_UNSIGNED (type))
!   (trunc_div @0 @1)))
  
  /* Combine two successive divisions.  Note that combining ceil_div
     and floor_div is trickier and combining round_div even more so.  */
--- 352,366 ----
      { build_minus_one_cst (type); })))
  
  /* For unsigned integral types, FLOOR_DIV_EXPR is the same as
!    TRUNC_DIV_EXPR.  Rewrite into the latter in this case.  Similarly
!    for MOD instead of DIV.  */
! (for floor_divmod (floor_div floor_mod)
!      trunc_divmod (trunc_div trunc_mod)
!  (simplify
!   (floor_divmod @0 @1)
!   (if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
!        && TYPE_UNSIGNED (type))
!    (trunc_divmod @0 @1))))
  
  /* Combine two successive divisions.  Note that combining ceil_div
     and floor_div is trickier and combining round_div even more so.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 612,618 ****
  /* Simplify (unsigned t * 2)/2 -> unsigned t & 0x7FFFFFFF.  */
  (simplify
   (trunc_div (mult @0 integer_pow2p@1) @1)
!  (if (TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 { wide_int_to_tree
  		(type, wi::mask (TYPE_PRECISION (type)
  				 - wi::exact_log2 (wi::to_wide (@1)),
--- 615,621 ----
  /* Simplify (unsigned t * 2)/2 -> unsigned t & 0x7FFFFFFF.  */
  (simplify
   (trunc_div (mult @0 integer_pow2p@1) @1)
!  (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 { wide_int_to_tree
  		(type, wi::mask (TYPE_PRECISION (type)
  				 - wi::exact_log2 (wi::to_wide (@1)),
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 621,627 ****
  /* Simplify (unsigned t / 2) * 2 -> unsigned t & ~1.  */
  (simplify
   (mult (trunc_div @0 integer_pow2p@1) @1)
!  (if (TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 (negate @1))))
  
  /* Simplify (t * 2) / 2) -> t.  */
--- 624,630 ----
  /* Simplify (unsigned t / 2) * 2 -> unsigned t & ~1.  */
  (simplify
   (mult (trunc_div @0 integer_pow2p@1) @1)
!  (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) && TYPE_UNSIGNED (TREE_TYPE (@0)))
    (bit_and @0 (negate @1))))
  
  /* Simplify (t * 2) / 2) -> t.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2343,2355 ****
    (simplify
     (minus (convert? (negate @0)) integer_each_onep)
     (if (!TYPE_OVERFLOW_TRAPS (type)
  	&& tree_nop_conversion_p (type, TREE_TYPE (@0)))
      (bit_not (convert @0))))
  
    /* -1 - A -> ~A */
    (simplify
     (minus integer_all_onesp @0)
!    (bit_not @0))
  
    /* (T)(P + A) - (T)P -> (T) A */
    (simplify
--- 2346,2360 ----
    (simplify
     (minus (convert? (negate @0)) integer_each_onep)
     (if (!TYPE_OVERFLOW_TRAPS (type)
+ 	&& TREE_CODE (type) != COMPLEX_TYPE
  	&& tree_nop_conversion_p (type, TREE_TYPE (@0)))
      (bit_not (convert @0))))
  
    /* -1 - A -> ~A */
    (simplify
     (minus integer_all_onesp @0)
!    (if (TREE_CODE (type) != COMPLEX_TYPE)
!     (bit_not @0)))
  
    /* (T)(P + A) - (T)P -> (T) A */
    (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4548,4554 ****
    (cmp (convert @0) INTEGER_CST@1)
    (if (((POINTER_TYPE_P (TREE_TYPE (@0))
  	 && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0)))
! 	 && INTEGRAL_TYPE_P (TREE_TYPE (@1)))
  	|| (INTEGRAL_TYPE_P (TREE_TYPE (@0))
  	    && POINTER_TYPE_P (TREE_TYPE (@1))
  	    && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1)))))
--- 4553,4564 ----
    (cmp (convert @0) INTEGER_CST@1)
    (if (((POINTER_TYPE_P (TREE_TYPE (@0))
  	 && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@0)))
! 	 && INTEGRAL_TYPE_P (TREE_TYPE (@1))
! 	 /* Don't perform this optimization in GENERIC if @0 has reference
! 	    type when sanitizing.  See PR101210.  */
! 	 && !(GENERIC
! 	      && TREE_CODE (TREE_TYPE (@0)) == REFERENCE_TYPE
! 	      && (flag_sanitize & (SANITIZE_NULL | SANITIZE_ALIGNMENT))))
  	|| (INTEGRAL_TYPE_P (TREE_TYPE (@0))
  	    && POINTER_TYPE_P (TREE_TYPE (@1))
  	    && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (@1)))))
diff -Nrcpad gcc-10.3.0/gcc/modulo-sched.c gcc-10.4.0/gcc/modulo-sched.c
*** gcc-10.3.0/gcc/modulo-sched.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/modulo-sched.c	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 43,48 ****
--- 43,49 ----
  #include "tree-pass.h"
  #include "dbgcnt.h"
  #include "loop-unroll.h"
+ #include "hard-reg-set.h"
  
  #ifdef INSN_SCHEDULING
  
*************** sms_schedule (void)
*** 1354,1359 ****
--- 1355,1361 ----
    basic_block condition_bb = NULL;
    edge latch_edge;
    HOST_WIDE_INT trip_count, max_trip_count;
+   HARD_REG_SET prohibited_regs;
  
    loop_optimizer_init (LOOPS_HAVE_PREHEADERS
  		       | LOOPS_HAVE_RECORDED_EXITS);
*************** sms_schedule (void)
*** 1383,1388 ****
--- 1385,1392 ----
       We use loop->num as index into this array.  */
    g_arr = XCNEWVEC (ddg_ptr, number_of_loops (cfun));
  
+   REG_SET_TO_HARD_REG_SET (prohibited_regs, &df->regular_block_artificial_uses);
+ 
    if (dump_file)
    {
      fprintf (dump_file, "\n\nSMS analysis phase\n");
*************** sms_schedule (void)
*** 1467,1489 ****
        }
  
        /* Don't handle BBs with calls or barriers
! 	 or !single_set with the exception of instructions that include
! 	 count_reg---these instructions are part of the control part
! 	 that do-loop recognizes.
           ??? Should handle insns defining subregs.  */
!      for (insn = head; insn != NEXT_INSN (tail); insn = NEXT_INSN (insn))
!       {
!          rtx set;
  
!         if (CALL_P (insn)
!             || BARRIER_P (insn)
!             || (NONDEBUG_INSN_P (insn) && !JUMP_P (insn)
!                 && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE
!                 && !reg_mentioned_p (count_reg, insn))
!             || (INSN_P (insn) && (set = single_set (insn))
!                 && GET_CODE (SET_DEST (set)) == SUBREG))
!         break;
!       }
  
        if (insn != NEXT_INSN (tail))
  	{
--- 1471,1501 ----
        }
  
        /* Don't handle BBs with calls or barriers
! 	 or !single_set with the exception of do-loop control part insns.
           ??? Should handle insns defining subregs.  */
!       for (insn = head; insn != NEXT_INSN (tail); insn = NEXT_INSN (insn))
! 	{
! 	  if (INSN_P (insn))
! 	    {
! 	      HARD_REG_SET regs;
! 	      CLEAR_HARD_REG_SET (regs);
! 	      note_stores (insn, record_hard_reg_sets, &regs);
! 	      if (hard_reg_set_intersect_p (regs, prohibited_regs))
! 		break;
! 	    }
  
! 	  if (CALL_P (insn)
! 	      || BARRIER_P (insn)
! 	      || (INSN_P (insn) && single_set (insn)
! 		  && GET_CODE (SET_DEST (single_set (insn))) == SUBREG)
! 	      /* Not a single set.  */
! 	      || (NONDEBUG_INSN_P (insn) && !JUMP_P (insn)
! 		  && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE
! 		  /* But non-single-set allowed in one special case.  */
! 		  && (insn != prev_nondebug_insn (tail)
! 		      || !reg_mentioned_p (count_reg, insn))))
! 	    break;
! 	}
  
        if (insn != NEXT_INSN (tail))
  	{
*************** sms_schedule (void)
*** 1493,1503 ****
  		fprintf (dump_file, "SMS loop-with-call\n");
  	      else if (BARRIER_P (insn))
  		fprintf (dump_file, "SMS loop-with-barrier\n");
!               else if ((NONDEBUG_INSN_P (insn) && !JUMP_P (insn)
!                 && !single_set (insn) && GET_CODE (PATTERN (insn)) != USE))
!                 fprintf (dump_file, "SMS loop-with-not-single-set\n");
!               else
!                fprintf (dump_file, "SMS loop with subreg in lhs\n");
  	      print_rtl_single (dump_file, insn);
  	    }
  
--- 1505,1517 ----
  		fprintf (dump_file, "SMS loop-with-call\n");
  	      else if (BARRIER_P (insn))
  		fprintf (dump_file, "SMS loop-with-barrier\n");
! 	      else if (INSN_P (insn) && single_set (insn)
! 		       && GET_CODE (SET_DEST (single_set (insn))) == SUBREG)
! 		fprintf (dump_file, "SMS loop with subreg in lhs\n");
! 	      else
! 		fprintf (dump_file,
! 			 "SMS loop-with-not-single-set-or-prohibited-reg\n");
! 
  	      print_rtl_single (dump_file, insn);
  	    }
  
diff -Nrcpad gcc-10.3.0/gcc/objc/ChangeLog gcc-10.4.0/gcc/objc/ChangeLog
*** gcc-10.3.0/gcc/objc/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/objc/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,56 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR objc/101718
+ 	* objc-next-runtime-abi-02.c (build_v2_build_objc_method_call):
+ 	Revise for cases where scalar objects use an sret parameter.
+ 	(next_runtime_abi_02_build_objc_method_call): Likwise.
+ 
+ 2022-05-31  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* objc-next-metadata-tags.h (objc_rt_trees): Declare here.
+ 	* objc-next-runtime-abi-01.c: Remove from here.
+ 	(generate_static_references): Likewise.
+ 	* objc-next-runtime-abi-02.c: Likewise.
+ 	(objc_next_runtime_abi_02_init): Warn about and reset
+ 	flag_objc_sjlj_exceptions regardless of flag_objc_exceptions.
+ 	(next_runtime_02_initialize): Use a checking assert that
+ 	flag_objc_sjlj_exceptions is off.
+ 	(next_runtime_abi_02_category_decl): Adjust category
+ 	superclass name ordering.
+ 	(next_runtime_abi_02_init_metadata_attributes): Attach metadata
+ 	for the special string sections to class, method and method type
+ 	string sections.
+ 	(next_runtime_abi_02_protocol_decl): Do not dead-strip the runtime
+ 	meta-data symbols.
+ 	(build_v2_classrefs_table): Likewise.
+ 	(build_v2_protocol_list_address_table): Likewise.
+ 	(objc_next_runtime_abi_02_init): Default receiver nilchecks on.
+ 	* objc-runtime-shared-support.c: Reorder headers, provide
+ 	a GTY declaration the definition of objc_rt_trees.
+ 	* objc-gnu-runtime-abi-01.c
+ 	(build_shared_structure_initializer): Remove references to
+ 	the NeXT runtime.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 		    Matt Jacobson   <mhjacobson@me.com>
+ 
+ 	PR objc/101666
+ 	* objc-act.c (objc_build_constructor): Handle empty constructor
+ 	lists.
+ 	* objc-next-runtime-abi-02.c (build_v2_objc_method_fixup_call):
+ 	Handle nil receivers.
+ 	(build_v2_build_objc_method_call): Likewise.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/objc/objc-act.c gcc-10.4.0/gcc/objc/objc-act.c
*** gcc-10.3.0/gcc/objc/objc-act.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/objc/objc-act.c	Tue Jun 28 08:54:28 2022
*************** objc_build_string_object (tree string)
*** 3305,3312 ****
    return addr;
  }
  
! /* Build a static constant CONSTRUCTOR
!    with type TYPE and elements ELTS.  */
  
  tree
  objc_build_constructor (tree type, vec<constructor_elt, va_gc> *elts)
--- 3305,3314 ----
    return addr;
  }
  
! /* Build a static constant CONSTRUCTOR with type TYPE and elements ELTS.
!    We might be presented with a NULL for ELTS, which means 'empty ctor'
!    which will subsequently be converted into a zero initializer in the
!    middle end.  */
  
  tree
  objc_build_constructor (tree type, vec<constructor_elt, va_gc> *elts)
*************** objc_build_constructor (tree type, vec<c
*** 3318,3329 ****
    TREE_READONLY (constructor) = 1;
  
  #ifdef OBJCPLUS
!   /* Adjust for impedance mismatch.  We should figure out how to build
!      CONSTRUCTORs that consistently please both the C and C++ gods.  */
!   if (!(*elts)[0].index)
      TREE_TYPE (constructor) = init_list_type_node;
  #endif
- 
    return constructor;
  }
  
--- 3320,3329 ----
    TREE_READONLY (constructor) = 1;
  
  #ifdef OBJCPLUS
!   /* If we know the initializer, then set the type to what C++ expects.  */
!   if (elts && !(*elts)[0].index)
      TREE_TYPE (constructor) = init_list_type_node;
  #endif
    return constructor;
  }
  
*************** objc_gimplify_property_ref (tree *expr_p
*** 9573,9579 ****
        call_exp = TREE_OPERAND (getter, 1);
      }
  #endif
!   gcc_assert (TREE_CODE (call_exp) == CALL_EXPR);
  
    *expr_p = call_exp;
  }
--- 9573,9581 ----
        call_exp = TREE_OPERAND (getter, 1);
      }
  #endif
!   gcc_checking_assert ((flag_objc_nilcheck
! 			&& TREE_CODE (call_exp) == COND_EXPR)
! 		       || TREE_CODE (call_exp) == CALL_EXPR);
  
    *expr_p = call_exp;
  }
diff -Nrcpad gcc-10.3.0/gcc/objc/objc-gnu-runtime-abi-01.c gcc-10.4.0/gcc/objc/objc-gnu-runtime-abi-01.c
*** gcc-10.3.0/gcc/objc/objc-gnu-runtime-abi-01.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/objc/objc-gnu-runtime-abi-01.c	Tue Jun 28 08:54:28 2022
*************** build_shared_structure_initializer (tree
*** 1547,1571 ****
        CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, expr);
      }
  
!   /* FIXME: Remove NeXT runtime code.  */
!   if (flag_next_runtime)
!     {
!       ltyp = build_pointer_type (xref_tag (RECORD_TYPE,
! 					   get_identifier ("objc_cache")));
!       /* method_cache = */
!       CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, convert (ltyp, null_pointer_node));
!     }
!   else
!     {
!       /* dtable = */
!       CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
  
!       /* subclass_list = */
!       CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
  
!       /* sibling_class = */
!       CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
!     }
  
    /* protocol_list = */
    ltyp = build_pointer_type (build_pointer_type (objc_protocol_template));
--- 1547,1560 ----
        CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, expr);
      }
  
!   /* dtable = */
!   CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
  
!   /* subclass_list = */
!   CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
  
!   /* sibling_class = */
!   CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
  
    /* protocol_list = */
    ltyp = build_pointer_type (build_pointer_type (objc_protocol_template));
*************** build_shared_structure_initializer (tree
*** 1579,1589 ****
        CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, expr);
      }
  
-   /* FIXME: Remove NeXT runtime code.  */
-   if (flag_next_runtime)
-     /* sel_id = NULL */
-     CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
- 
    /* gc_object_type = NULL */
    CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, build_int_cst (NULL_TREE, 0));
  
--- 1568,1573 ----
*************** generate_static_references (void)
*** 1871,1880 ****
    char buf[BUFSIZE];
    vec<constructor_elt, va_gc> *decls = NULL;
  
-   /* FIXME: Remove NeXT runtime code.  */
-   if (flag_next_runtime)
-     gcc_unreachable ();
- 
    for (cl_chain = objc_static_instances, num_class = 0;
         cl_chain; cl_chain = TREE_CHAIN (cl_chain), num_class++)
      {
--- 1855,1860 ----
diff -Nrcpad gcc-10.3.0/gcc/objc/objc-next-metadata-tags.h gcc-10.4.0/gcc/objc/objc-next-metadata-tags.h
*** gcc-10.3.0/gcc/objc/objc-next-metadata-tags.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/objc/objc-next-metadata-tags.h	Tue Jun 28 08:54:28 2022
*************** enum objc_runtime_tree_index
*** 79,84 ****
--- 79,86 ----
    OCTI_RT_META_MAX
  };
  
+ extern GTY(()) tree objc_rt_trees[OCTI_RT_META_MAX];
+ 
  /* Tags for the META data so that the backend can put them in the correct
     sections for targets/runtimes (Darwin/NeXT) that require this.
     This information also survives LTO - which might produce mixed language
diff -Nrcpad gcc-10.3.0/gcc/objc/objc-next-runtime-abi-01.c gcc-10.4.0/gcc/objc/objc-next-runtime-abi-01.c
*** gcc-10.3.0/gcc/objc/objc-next-runtime-abi-01.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/objc/objc-next-runtime-abi-01.c	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 54,59 ****
--- 54,60 ----
  
  #include "objc-runtime-hooks.h"
  #include "objc-runtime-shared-support.h"
+ #include "objc-next-metadata-tags.h"
  #include "objc-encoding.h"
  
  /* NeXT ABI 0 and 1 private definitions.  */
*************** along with GCC; see the file COPYING3.
*** 98,111 ****
  
  #define CLS_HAS_CXX_STRUCTORS		0x2000L
  
- /* rt_trees identifiers - shared between NeXT implementations.  These
-    allow the FE to tag meta-data in a manner that survives LTO and can
-    be used when the runtime requires that certain meta-data items
-    appear in particular named sections.  */
- 
- #include "objc-next-metadata-tags.h"
- extern GTY(()) tree objc_rt_trees[OCTI_RT_META_MAX];
- 
  static void next_runtime_01_initialize (void);
  
  static tree next_runtime_abi_01_super_superclassfield_id (void);
--- 99,104 ----
diff -Nrcpad gcc-10.3.0/gcc/objc/objc-next-runtime-abi-02.c gcc-10.4.0/gcc/objc/objc-next-runtime-abi-02.c
*** gcc-10.3.0/gcc/objc/objc-next-runtime-abi-02.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/objc/objc-next-runtime-abi-02.c	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 54,59 ****
--- 54,60 ----
  
  #include "objc-runtime-hooks.h"
  #include "objc-runtime-shared-support.h"
+ #include "objc-next-metadata-tags.h"
  #include "objc-encoding.h"
  
  /* ABI 2 Private definitions. */
*************** enum objc_v2_tree_index
*** 179,192 ****
  #define objc_rethrow_exception_decl \
  				objc_v2_global_trees[OCTI_V2_RETHROW_DECL]
  
- /* rt_trees identifiers - shared between NeXT implementations.  These allow
-    the FE to tag meta-data in a manner that survives LTO and can be used when
-    the  runtime requires that certain meta-data items appear in particular
-    named sections.  */
- 
- #include "objc-next-metadata-tags.h"
- extern GTY(()) tree objc_rt_trees[OCTI_RT_META_MAX];
- 
  /* The OCTI_V2_... enumeration itself is in above.  */
  static GTY(()) tree objc_v2_global_trees[OCTI_V2_MAX];
  
--- 180,185 ----
*************** objc_next_runtime_abi_02_init (objc_runt
*** 245,251 ****
  {
    extern_names = ggc_cleared_vec_alloc<hash> (SIZEHASHTABLE);
  
!   if (flag_objc_exceptions && flag_objc_sjlj_exceptions)
      {
        inform (UNKNOWN_LOCATION,
  	      "%<-fobjc-sjlj-exceptions%> is ignored for "
--- 238,244 ----
  {
    extern_names = ggc_cleared_vec_alloc<hash> (SIZEHASHTABLE);
  
!   if (flag_objc_sjlj_exceptions)
      {
        inform (UNKNOWN_LOCATION,
  	      "%<-fobjc-sjlj-exceptions%> is ignored for "
*************** objc_next_runtime_abi_02_init (objc_runt
*** 254,259 ****
--- 247,256 ----
        flag_objc_sjlj_exceptions = 0;
      }
  
+   /* NeXT ABI 2 is intended to default to checking for nil receivers.  */
+   if (! global_options_set.x_flag_objc_nilcheck)
+     flag_objc_nilcheck = 1;
+ 
    rthooks->initialize = next_runtime_02_initialize;
    rthooks->default_constant_string_class_name = DEF_CONSTANT_STRING_CLASS_NAME;
    rthooks->tag_getclass = TAG_GETCLASS;
*************** static void next_runtime_02_initialize (
*** 507,513 ****
    objc_getPropertyStruct_decl = NULL_TREE;
    objc_setPropertyStruct_decl = NULL_TREE;
  
!   gcc_assert (!flag_objc_sjlj_exceptions);
  
    /* Although we warn that fobjc-exceptions is required for exceptions
       code, we carry on and create it anyway.  */
--- 504,510 ----
    objc_getPropertyStruct_decl = NULL_TREE;
    objc_setPropertyStruct_decl = NULL_TREE;
  
!   gcc_checking_assert (!flag_objc_sjlj_exceptions);
  
    /* Although we warn that fobjc-exceptions is required for exceptions
       code, we carry on and create it anyway.  */
*************** next_runtime_abi_02_category_decl (tree
*** 1010,1018 ****
  {
    tree decl;
    char buf[BUFSIZE];
!   snprintf (buf, BUFSIZE, "_OBJC_Category_%s_on_%s",
! 	    IDENTIFIER_POINTER (CLASS_SUPER_NAME (klass)),
! 	    IDENTIFIER_POINTER (CLASS_NAME (klass)));
    decl = start_var_decl (objc_v2_category_template, buf);
    OBJCMETA (decl, objc_meta, meta_category);
    return decl;
--- 1007,1015 ----
  {
    tree decl;
    char buf[BUFSIZE];
!   snprintf (buf, BUFSIZE, "_OBJC_Category_%s_%s",
! 	    IDENTIFIER_POINTER (CLASS_NAME (klass)),
! 	    IDENTIFIER_POINTER (CLASS_SUPER_NAME (klass)));
    decl = start_var_decl (objc_v2_category_template, buf);
    OBJCMETA (decl, objc_meta, meta_category);
    return decl;
*************** next_runtime_abi_02_protocol_decl (tree
*** 1035,1040 ****
--- 1032,1038 ----
    else
      decl = start_var_decl (objc_v2_protocol_template, buf);
    OBJCMETA (decl, objc_meta, meta_protocol);
+   DECL_PRESERVE_P (decl) = 1;
    return decl;
  }
  
*************** build_v2_objc_method_fixup_call (int sup
*** 1675,1687 ****
  
        if (TREE_CODE (ret_type) == RECORD_TYPE
  	  || TREE_CODE (ret_type) == UNION_TYPE)
! 	{
! 	  vec<constructor_elt, va_gc> *rtt = NULL;
! 	  /* ??? CHECKME. hmmm..... think we need something more
! 	     here.  */
! 	  CONSTRUCTOR_APPEND_ELT (rtt, NULL_TREE, NULL_TREE);
! 	  ftree = objc_build_constructor (ret_type, rtt);
! 	}
        else
  	ftree = fold_convert (ret_type, integer_zero_node);
  
--- 1673,1680 ----
  
        if (TREE_CODE (ret_type) == RECORD_TYPE
  	  || TREE_CODE (ret_type) == UNION_TYPE)
! 	/* An empty constructor is zero-filled by the middle end.  */
! 	ftree = objc_build_constructor (ret_type, NULL);
        else
  	ftree = fold_convert (ret_type, integer_zero_node);
  
*************** build_v2_objc_method_fixup_call (int sup
*** 1694,1704 ****
  					ifexp, ret_val, ftree,
  					tf_warning_or_error);
  #else
-      /* ??? CHECKME.   */
        ret_val = build_conditional_expr (input_location,
! 					ifexp, 1,
  					ret_val, NULL_TREE, input_location,
  					ftree, NULL_TREE, input_location);
  #endif
      }
    return ret_val;
--- 1687,1697 ----
  					ifexp, ret_val, ftree,
  					tf_warning_or_error);
  #else
        ret_val = build_conditional_expr (input_location,
! 					ifexp, 0,
  					ret_val, NULL_TREE, input_location,
  					ftree, NULL_TREE, input_location);
+       ret_val = fold_convert (ret_type, ret_val);
  #endif
      }
    return ret_val;
*************** build_v2_build_objc_method_call (int sup
*** 1740,1754 ****
    /* Param list + 2 slots for object and selector.  */
    vec_alloc (parms, nparm + 2);
  
!   /* If we are returning a struct in memory, and the address
!      of that memory location is passed as a hidden first
!      argument, then change which messenger entry point this
!      expr will call.  NB: Note that sender_cast remains
!      unchanged (it already has a struct return type).  */
!   if (!targetm.calls.struct_value_rtx (0, 0)
!       && (TREE_CODE (ret_type) == RECORD_TYPE
! 	  || TREE_CODE (ret_type) == UNION_TYPE)
!       && targetm.calls.return_in_memory (ret_type, 0))
      {
        if (super)
  	sender = umsg_id_super2_stret_fixup_decl;
--- 1733,1748 ----
    /* Param list + 2 slots for object and selector.  */
    vec_alloc (parms, nparm + 2);
  
!   /* If we are returning an item that must be returned in memory, and the
!      target ABI does this by an invisible pointer provided as the first arg,
!      we need to adjust the message signature to include this.  The second
!      part of this excludes targets that provide some alternate scheme for
!      structure returns.  */
!   if (ret_type && !VOID_TYPE_P (ret_type)
!       && targetm.calls.return_in_memory (ret_type, 0)
!       && !(targetm.calls.struct_value_rtx (0, 0)
! 	   && (TREE_CODE (ret_type) == RECORD_TYPE
! 	       || TREE_CODE (ret_type) == UNION_TYPE)))
      {
        if (super)
  	sender = umsg_id_super2_stret_fixup_decl;
*************** build_v2_build_objc_method_call (int sup
*** 1790,1800 ****
        if (TREE_CODE (ret_type) == RECORD_TYPE
  	  || TREE_CODE (ret_type) == UNION_TYPE)
  	{
! 	  vec<constructor_elt, va_gc> *rtt = NULL;
! 	  /* ??? CHECKME. hmmm..... think we need something more
! 	     here.  */
! 	  CONSTRUCTOR_APPEND_ELT (rtt, NULL_TREE, NULL_TREE);
! 	  ftree = objc_build_constructor (ret_type, rtt);
  	}
        else
  	ftree = fold_convert (ret_type, integer_zero_node);
--- 1784,1791 ----
        if (TREE_CODE (ret_type) == RECORD_TYPE
  	  || TREE_CODE (ret_type) == UNION_TYPE)
  	{
! 	/* An empty constructor is zero-filled by the middle end.  */
! 	  ftree = objc_build_constructor (ret_type, NULL);
  	}
        else
  	ftree = fold_convert (ret_type, integer_zero_node);
*************** build_v2_build_objc_method_call (int sup
*** 1807,1816 ****
        ret_val = build_conditional_expr (loc, ifexp, ret_val, ftree,
  					tf_warning_or_error);
  #else
-      /* ??? CHECKME.   */
        ret_val = build_conditional_expr (loc, ifexp, 1,
  					ret_val, NULL_TREE, loc,
  					ftree, NULL_TREE, loc);
  #endif
      }
    return ret_val;
--- 1798,1807 ----
        ret_val = build_conditional_expr (loc, ifexp, ret_val, ftree,
  					tf_warning_or_error);
  #else
        ret_val = build_conditional_expr (loc, ifexp, 1,
  					ret_val, NULL_TREE, loc,
  					ftree, NULL_TREE, loc);
+       ret_val = fold_convert (ret_type, ret_val);
  #endif
      }
    return ret_val;
*************** next_runtime_abi_02_build_objc_method_ca
*** 1853,1862 ****
  	     ? TREE_VALUE (TREE_TYPE (method_prototype))
  	     : objc_object_type;
  
!   if (!targetm.calls.struct_value_rtx (0, 0)
!       && (TREE_CODE (ret_type) == RECORD_TYPE
! 	  || TREE_CODE (ret_type) == UNION_TYPE)
!       && targetm.calls.return_in_memory (ret_type, 0))
      {
        if (super)
  	message_func_decl = umsg_id_super2_stret_fixup_decl;
--- 1844,1855 ----
  	     ? TREE_VALUE (TREE_TYPE (method_prototype))
  	     : objc_object_type;
  
!   /* See comment for the fixup version above.  */
!   if (ret_type && !VOID_TYPE_P (ret_type)
!       && targetm.calls.return_in_memory (ret_type, 0)
!       && !(targetm.calls.struct_value_rtx (0, 0)
! 	   && (TREE_CODE (ret_type) == RECORD_TYPE
! 	       || TREE_CODE (ret_type) == UNION_TYPE)))
      {
        if (super)
  	message_func_decl = umsg_id_super2_stret_fixup_decl;
*************** build_v2_classrefs_table (void)
*** 2121,2128 ****
  	  expr = convert (objc_class_type, build_fold_addr_expr (expr));
  	}
        /* The runtime wants this, even if it appears unused, so we must force the
! 	 output.
!       DECL_PRESERVE_P (decl) = 1; */
        finish_var_decl (decl, expr);
      }
  }
--- 2114,2121 ----
  	  expr = convert (objc_class_type, build_fold_addr_expr (expr));
  	}
        /* The runtime wants this, even if it appears unused, so we must force the
! 	 output.  */
!       DECL_PRESERVE_P (decl) = 1;
        finish_var_decl (decl, expr);
      }
  }
*************** build_v2_protocol_list_address_table (vo
*** 2324,2329 ****
--- 2317,2323 ----
        expr = convert (objc_protocol_type, build_fold_addr_expr (ref->refdecl));
        OBJCMETA (decl, objc_meta, meta_label_protocollist);
        finish_var_decl (decl, expr);
+       DECL_PRESERVE_P (decl) = 1;
      }
  
      /* TODO: delete the vec.  */
diff -Nrcpad gcc-10.3.0/gcc/objc/objc-runtime-shared-support.c gcc-10.4.0/gcc/objc/objc-runtime-shared-support.c
*** gcc-10.3.0/gcc/objc/objc-runtime-shared-support.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/objc/objc-runtime-shared-support.c	Tue Jun 28 08:54:28 2022
*************** along with GCC; see the file COPYING3.
*** 44,59 ****
  #include "objc-runtime-hooks.h"
  
  #include "objc-runtime-shared-support.h"
- #include "objc-encoding.h"
- 
- /* rt_trees identifiers - shared between NeXT implementations.  These allow
-    the FE to tag meta-data in a manner that survives LTO and can be used when
-    the  runtime requires that certain meta-data items appear in particular
-    named sections.  */
  #include "objc-next-metadata-tags.h"
! extern GTY(()) tree objc_rt_trees[OCTI_RT_META_MAX];
  
  /* Rather than repeatedly looking up the identifiers, we save them here.  */
  tree objc_rt_trees[OCTI_RT_META_MAX];
  
  /* For building an objc struct.  These might not be used when this file
--- 44,54 ----
  #include "objc-runtime-hooks.h"
  
  #include "objc-runtime-shared-support.h"
  #include "objc-next-metadata-tags.h"
! #include "objc-encoding.h"
  
  /* Rather than repeatedly looking up the identifiers, we save them here.  */
+ extern GTY(()) tree objc_rt_trees[OCTI_RT_META_MAX];
  tree objc_rt_trees[OCTI_RT_META_MAX];
  
  /* For building an objc struct.  These might not be used when this file
diff -Nrcpad gcc-10.3.0/gcc/objcp/ChangeLog gcc-10.4.0/gcc/objcp/ChangeLog
*** gcc-10.3.0/gcc/objcp/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/objcp/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/omp-expand.c gcc-10.4.0/gcc/omp-expand.c
*** gcc-10.3.0/gcc/omp-expand.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/omp-expand.c	Tue Jun 28 08:54:28 2022
*************** struct oacc_collapse
*** 1548,1555 ****
  static tree
  expand_oacc_collapse_init (const struct omp_for_data *fd,
  			   gimple_stmt_iterator *gsi,
! 			   oacc_collapse *counts, tree bound_type,
! 			   location_t loc)
  {
    tree tiling = fd->tiling;
    tree total = build_int_cst (bound_type, 1);
--- 1548,1555 ----
  static tree
  expand_oacc_collapse_init (const struct omp_for_data *fd,
  			   gimple_stmt_iterator *gsi,
! 			   oacc_collapse *counts, tree diff_type,
! 			   tree bound_type, location_t loc)
  {
    tree tiling = fd->tiling;
    tree total = build_int_cst (bound_type, 1);
*************** expand_oacc_collapse_init (const struct
*** 1566,1582 ****
        const omp_for_data_loop *loop = &fd->loops[ix];
  
        tree iter_type = TREE_TYPE (loop->v);
-       tree diff_type = iter_type;
        tree plus_type = iter_type;
  
!       gcc_assert (loop->cond_code == fd->loop.cond_code);
  
        if (POINTER_TYPE_P (iter_type))
  	plus_type = sizetype;
-       if (POINTER_TYPE_P (diff_type) || TYPE_UNSIGNED (diff_type))
- 	diff_type = signed_type_for (diff_type);
-       if (TYPE_PRECISION (diff_type) < TYPE_PRECISION (integer_type_node))
- 	diff_type = integer_type_node;
  
        if (tiling)
  	{
--- 1566,1577 ----
        const omp_for_data_loop *loop = &fd->loops[ix];
  
        tree iter_type = TREE_TYPE (loop->v);
        tree plus_type = iter_type;
  
!       gcc_assert (loop->cond_code == LT_EXPR || loop->cond_code == GT_EXPR);
  
        if (POINTER_TYPE_P (iter_type))
  	plus_type = sizetype;
  
        if (tiling)
  	{
*************** expand_oacc_collapse_init (const struct
*** 1664,1670 ****
  static void
  expand_oacc_collapse_vars (const struct omp_for_data *fd, bool inner,
  			   gimple_stmt_iterator *gsi,
! 			   const oacc_collapse *counts, tree ivar)
  {
    tree ivar_type = TREE_TYPE (ivar);
  
--- 1659,1666 ----
  static void
  expand_oacc_collapse_vars (const struct omp_for_data *fd, bool inner,
  			   gimple_stmt_iterator *gsi,
! 			   const oacc_collapse *counts, tree ivar,
! 			   tree diff_type)
  {
    tree ivar_type = TREE_TYPE (ivar);
  
*************** expand_oacc_collapse_vars (const struct
*** 1676,1682 ****
        const oacc_collapse *collapse = &counts[ix];
        tree v = inner ? loop->v : collapse->outer;
        tree iter_type = TREE_TYPE (v);
-       tree diff_type = TREE_TYPE (collapse->step);
        tree plus_type = iter_type;
        enum tree_code plus_code = PLUS_EXPR;
        tree expr;
--- 1672,1677 ----
*************** expand_oacc_collapse_vars (const struct
*** 1698,1704 ****
  	}
  
        expr = fold_build2 (MULT_EXPR, diff_type, fold_convert (diff_type, expr),
! 			  collapse->step);
        expr = fold_build2 (plus_code, iter_type,
  			  inner ? collapse->outer : collapse->base,
  			  fold_convert (plus_type, expr));
--- 1693,1699 ----
  	}
  
        expr = fold_build2 (MULT_EXPR, diff_type, fold_convert (diff_type, expr),
! 			  fold_convert (diff_type, collapse->step));
        expr = fold_build2 (plus_code, iter_type,
  			  inner ? collapse->outer : collapse->base,
  			  fold_convert (plus_type, expr));
*************** expand_oacc_for (struct omp_region *regi
*** 6039,6044 ****
--- 6034,6045 ----
        plus_code = POINTER_PLUS_EXPR;
        plus_type = sizetype;
      }
+   for (int ix = fd->collapse; ix--;)
+     {
+       tree diff_type2 = TREE_TYPE (fd->loops[ix].step);
+       if (TYPE_PRECISION (diff_type) < TYPE_PRECISION (diff_type2))
+ 	diff_type = diff_type2;
+     }
    if (POINTER_TYPE_P (diff_type) || TYPE_UNSIGNED (diff_type))
      diff_type = signed_type_for (diff_type);
    if (TYPE_PRECISION (diff_type) < TYPE_PRECISION (integer_type_node))
*************** expand_oacc_for (struct omp_region *regi
*** 6122,6128 ****
      {
        gcc_assert (!gimple_in_ssa_p (cfun) && up);
        counts = XALLOCAVEC (struct oacc_collapse, fd->collapse);
!       tree total = expand_oacc_collapse_init (fd, &gsi, counts,
  					      TREE_TYPE (fd->loop.n2), loc);
  
        if (SSA_VAR_P (fd->loop.n2))
--- 6123,6129 ----
      {
        gcc_assert (!gimple_in_ssa_p (cfun) && up);
        counts = XALLOCAVEC (struct oacc_collapse, fd->collapse);
!       tree total = expand_oacc_collapse_init (fd, &gsi, counts, diff_type,
  					      TREE_TYPE (fd->loop.n2), loc);
  
        if (SSA_VAR_P (fd->loop.n2))
*************** expand_oacc_for (struct omp_region *regi
*** 6284,6290 ****
        gsi_insert_before (&gsi, ass, GSI_SAME_STMT);
  
        if (fd->collapse > 1 || fd->tiling)
! 	expand_oacc_collapse_vars (fd, false, &gsi, counts, v);
  
        if (fd->tiling)
  	{
--- 6285,6291 ----
        gsi_insert_before (&gsi, ass, GSI_SAME_STMT);
  
        if (fd->collapse > 1 || fd->tiling)
! 	expand_oacc_collapse_vars (fd, false, &gsi, counts, v, diff_type);
  
        if (fd->tiling)
  	{
*************** expand_oacc_for (struct omp_region *regi
*** 6354,6360 ****
  
  	  /* Initialize the user's loop vars.  */
  	  gsi = gsi_start_bb (elem_body_bb);
! 	  expand_oacc_collapse_vars (fd, true, &gsi, counts, e_offset);
  	}
      }
  
--- 6355,6362 ----
  
  	  /* Initialize the user's loop vars.  */
  	  gsi = gsi_start_bb (elem_body_bb);
! 	  expand_oacc_collapse_vars (fd, true, &gsi, counts, e_offset,
! 				     diff_type);
  	}
      }
  
diff -Nrcpad gcc-10.3.0/gcc/omp-general.c gcc-10.4.0/gcc/omp-general.c
*** gcc-10.3.0/gcc/omp-general.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/omp-general.c	Tue Jun 28 08:54:28 2022
*************** omp_context_selector_matches (tree ctx)
*** 932,947 ****
--- 932,953 ----
  		      continue;
  		    if (!strcmp (prop, "host"))
  		      {
+ #ifdef ACCEL_COMPILER
+ 			return 0;
+ #else
  			if (omp_maybe_offloaded ())
  			  ret = -1;
  			continue;
+ #endif
  		      }
  		    if (!strcmp (prop, "nohost"))
  		      {
+ #ifndef ACCEL_COMPILER
  			if (omp_maybe_offloaded ())
  			  ret = -1;
  			else
  			  return 0;
+ #endif
  			continue;
  		      }
  		    int r = 0;
diff -Nrcpad gcc-10.3.0/gcc/omp-low.c gcc-10.4.0/gcc/omp-low.c
*** gcc-10.3.0/gcc/omp-low.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/omp-low.c	Tue Jun 28 08:54:28 2022
*************** static int target_nesting_level;
*** 177,182 ****
--- 177,183 ----
  static bitmap task_shared_vars;
  static bitmap global_nonaddressable_vars;
  static vec<omp_context *> taskreg_contexts;
+ static vec<gomp_task *> task_cpyfns;
  
  static void scan_omp (gimple_seq *, omp_context *);
  static tree scan_omp_1_op (tree *, int *, void *);
*************** delete_omp_context (splay_tree_value val
*** 1028,1036 ****
  	DECL_ABSTRACT_ORIGIN (t) = NULL;
      }
  
-   if (is_task_ctx (ctx))
-     finalize_task_copyfn (as_a <gomp_task *> (ctx->stmt));
- 
    if (ctx->task_reduction_map)
      {
        ctx->task_reductions.release ();
--- 1029,1034 ----
*************** lower_rec_input_clauses (tree clauses, g
*** 6012,6017 ****
--- 6010,6017 ----
  		  if (code == MINUS_EXPR)
  		    code = PLUS_EXPR;
  
+ 		  bool is_truth_op
+ 		    = (code == TRUTH_ANDIF_EXPR || code == TRUTH_ORIF_EXPR);
  		  tree new_vard = new_var;
  		  if (is_simd && omp_is_reference (var))
  		    {
*************** lower_rec_input_clauses (tree clauses, g
*** 6060,6066 ****
  			  x = build2 (code, TREE_TYPE (ivar), ivar, x);
  			  gimplify_assign (ivar, x, &llist[2]);
  			}
! 		      x = build2 (code, TREE_TYPE (ref), ref, ivar);
  		      ref = build_outer_var_ref (var, ctx);
  		      gimplify_assign (ref, x, &llist[1]);
  
--- 6060,6080 ----
  			  x = build2 (code, TREE_TYPE (ivar), ivar, x);
  			  gimplify_assign (ivar, x, &llist[2]);
  			}
! 		      tree ivar2 = ivar;
! 		      tree ref2 = ref;
! 		      if (is_truth_op)
! 			{
! 			  tree zero = build_zero_cst (TREE_TYPE (ivar));
! 			  ivar2 = fold_build2_loc (clause_loc, NE_EXPR,
! 						   boolean_type_node, ivar,
! 						   zero);
! 			  ref2 = fold_build2_loc (clause_loc, NE_EXPR,
! 						  boolean_type_node, ref,
! 						  zero);
! 			}
! 		      x = build2 (code, TREE_TYPE (ref), ref2, ivar2);
! 		      if (is_truth_op)
! 			x = fold_convert (TREE_TYPE (ref), x);
  		      ref = build_outer_var_ref (var, ctx);
  		      gimplify_assign (ref, x, &llist[1]);
  
*************** lower_rec_input_clauses (tree clauses, g
*** 6076,6083 ****
  		      if (is_simd)
  			{
  			  tree ref = build_outer_var_ref (var, ctx);
! 
! 			  x = build2 (code, TREE_TYPE (ref), ref, new_var);
  			  ref = build_outer_var_ref (var, ctx);
  			  gimplify_assign (ref, x, dlist);
  			}
--- 6090,6111 ----
  		      if (is_simd)
  			{
  			  tree ref = build_outer_var_ref (var, ctx);
! 			  tree new_var2 = new_var;
! 			  tree ref2 = ref;
! 			  if (is_truth_op)
! 			    {
! 			      tree zero = build_zero_cst (TREE_TYPE (new_var));
! 			      new_var2
! 				= fold_build2_loc (clause_loc, NE_EXPR,
! 						   boolean_type_node, new_var,
! 						   zero);
! 			      ref2 = fold_build2_loc (clause_loc, NE_EXPR,
! 						      boolean_type_node, ref,
! 						      zero);
! 			    }
! 			  x = build2 (code, TREE_TYPE (ref2), ref2, new_var2);
! 			  if (is_truth_op)
! 			    x = fold_convert (TREE_TYPE (new_var), x);
  			  ref = build_outer_var_ref (var, ctx);
  			  gimplify_assign (ref, x, dlist);
  			}
*************** lower_reduction_clauses (tree clauses, g
*** 7013,7025 ****
        if (code == MINUS_EXPR)
          code = PLUS_EXPR;
  
        if (count == 1)
  	{
  	  tree addr = build_fold_addr_expr_loc (clause_loc, ref);
  
  	  addr = save_expr (addr);
  	  ref = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (addr)), addr);
! 	  x = fold_build2_loc (clause_loc, code, TREE_TYPE (ref), ref, new_var);
  	  x = build2 (OMP_ATOMIC, void_type_node, addr, x);
  	  OMP_ATOMIC_MEMORY_ORDER (x) = OMP_MEMORY_ORDER_RELAXED;
  	  gimplify_and_add (x, stmt_seqp);
--- 7041,7067 ----
        if (code == MINUS_EXPR)
          code = PLUS_EXPR;
  
+       bool is_truth_op = (code == TRUTH_ANDIF_EXPR || code == TRUTH_ORIF_EXPR);
        if (count == 1)
  	{
  	  tree addr = build_fold_addr_expr_loc (clause_loc, ref);
  
  	  addr = save_expr (addr);
  	  ref = build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (addr)), addr);
! 	  tree new_var2 = new_var;
! 	  tree ref2 = ref;
! 	  if (is_truth_op)
! 	    {
! 	      tree zero = build_zero_cst (TREE_TYPE (new_var));
! 	      new_var2 = fold_build2_loc (clause_loc, NE_EXPR,
! 					  boolean_type_node, new_var, zero);
! 	      ref2 = fold_build2_loc (clause_loc, NE_EXPR, boolean_type_node,
! 				      ref, zero);
! 	    }
! 	  x = fold_build2_loc (clause_loc, code, TREE_TYPE (new_var2), ref2,
! 			       new_var2);
! 	  if (is_truth_op)
! 	    x = fold_convert (TREE_TYPE (new_var), x);
  	  x = build2 (OMP_ATOMIC, void_type_node, addr, x);
  	  OMP_ATOMIC_MEMORY_ORDER (x) = OMP_MEMORY_ORDER_RELAXED;
  	  gimplify_and_add (x, stmt_seqp);
*************** lower_reduction_clauses (tree clauses, g
*** 7124,7130 ****
  	    }
  	  else
  	    {
! 	      x = build2 (code, TREE_TYPE (out), out, priv);
  	      out = unshare_expr (out);
  	      gimplify_assign (out, x, &sub_seq);
  	    }
--- 7166,7184 ----
  	    }
  	  else
  	    {
! 	      tree out2 = out;
! 	      tree priv2 = priv;
! 	      if (is_truth_op)
! 		{
! 		  tree zero = build_zero_cst (TREE_TYPE (out));
! 		  out2 = fold_build2_loc (clause_loc, NE_EXPR,
! 					  boolean_type_node, out, zero);
! 		  priv2 = fold_build2_loc (clause_loc, NE_EXPR,
! 					   boolean_type_node, priv, zero);
! 		}
! 	      x = build2 (code, TREE_TYPE (out2), out2, priv2);
! 	      if (is_truth_op)
! 		x = fold_convert (TREE_TYPE (out), x);
  	      out = unshare_expr (out);
  	      gimplify_assign (out, x, &sub_seq);
  	    }
*************** lower_reduction_clauses (tree clauses, g
*** 7158,7164 ****
  	}
        else
  	{
! 	  x = build2 (code, TREE_TYPE (ref), ref, new_var);
  	  ref = build_outer_var_ref (var, ctx);
  	  gimplify_assign (ref, x, &sub_seq);
  	}
--- 7212,7230 ----
  	}
        else
  	{
! 	  tree new_var2 = new_var;
! 	  tree ref2 = ref;
! 	  if (is_truth_op)
! 	    {
! 	      tree zero = build_zero_cst (TREE_TYPE (new_var));
! 	      new_var2 = fold_build2_loc (clause_loc, NE_EXPR,
! 					  boolean_type_node, new_var, zero);
! 	      ref2 = fold_build2_loc (clause_loc, NE_EXPR, boolean_type_node,
! 				      ref, zero);
! 	    }
! 	  x = build2 (code, TREE_TYPE (ref), ref2, new_var2);
! 	  if (is_truth_op)
! 	    x = fold_convert (TREE_TYPE (new_var), x);
  	  ref = build_outer_var_ref (var, ctx);
  	  gimplify_assign (ref, x, &sub_seq);
  	}
*************** lower_omp_task_reductions (omp_context *
*** 8295,8301 ****
    tree num_thr_sz = create_tmp_var (size_type_node);
    tree lab1 = create_artificial_label (UNKNOWN_LOCATION);
    tree lab2 = create_artificial_label (UNKNOWN_LOCATION);
!   tree lab3 = NULL_TREE;
    gimple *g;
    if (code == OMP_FOR || code == OMP_SECTIONS)
      {
--- 8361,8367 ----
    tree num_thr_sz = create_tmp_var (size_type_node);
    tree lab1 = create_artificial_label (UNKNOWN_LOCATION);
    tree lab2 = create_artificial_label (UNKNOWN_LOCATION);
!   tree lab3 = NULL_TREE, lab7 = NULL_TREE;
    gimple *g;
    if (code == OMP_FOR || code == OMP_SECTIONS)
      {
*************** lower_omp_task_reductions (omp_context *
*** 8360,8365 ****
--- 8426,8439 ----
  	      NULL_TREE, NULL_TREE);
    tree data = create_tmp_var (pointer_sized_int_node);
    gimple_seq_add_stmt (end, gimple_build_assign (data, t));
+   if (code == OMP_TASKLOOP)
+     {
+       lab7 = create_artificial_label (UNKNOWN_LOCATION);
+       g = gimple_build_cond (NE_EXPR, data,
+ 			     build_zero_cst (pointer_sized_int_node),
+ 			     lab1, lab7);
+       gimple_seq_add_stmt (end, g);
+     }
    gimple_seq_add_stmt (end, gimple_build_label (lab1));
    tree ptr;
    if (TREE_CODE (TYPE_SIZE_UNIT (record_type)) == INTEGER_CST)
*************** lower_omp_task_reductions (omp_context *
*** 8723,8728 ****
--- 8797,8804 ----
        g = gimple_build_call (t, 1, build_fold_addr_expr (avar));
      }
    gimple_seq_add_stmt (end, g);
+   if (lab7)
+     gimple_seq_add_stmt (end, gimple_build_label (lab7));
    t = build_constructor (atype, NULL);
    TREE_THIS_VOLATILE (t) = 1;
    gimple_seq_add_stmt (end, gimple_build_assign (avar, t));
*************** create_task_copyfn (gomp_task *task_stmt
*** 10823,10828 ****
--- 10899,10905 ----
    size_t looptempno = 0;
  
    child_fn = gimple_omp_task_copy_fn (task_stmt);
+   task_cpyfns.safe_push (task_stmt);
    child_cfun = DECL_STRUCT_FUNCTION (child_fn);
    gcc_assert (child_cfun->cfg == NULL);
    DECL_SAVED_TREE (child_fn) = alloc_stmt_list ();
*************** lower_omp_regimplify_p (tree *tp, int *w
*** 12717,12723 ****
    tree t = *tp;
  
    /* Any variable with DECL_VALUE_EXPR needs to be regimplified.  */
!   if (VAR_P (t) && data == NULL && DECL_HAS_VALUE_EXPR_P (t))
      return t;
  
    if (task_shared_vars
--- 12794,12802 ----
    tree t = *tp;
  
    /* Any variable with DECL_VALUE_EXPR needs to be regimplified.  */
!   if ((VAR_P (t) || TREE_CODE (t) == PARM_DECL || TREE_CODE (t) == RESULT_DECL)
!       && data == NULL
!       && DECL_HAS_VALUE_EXPR_P (t))
      return t;
  
    if (task_shared_vars
*************** execute_lower_omp (void)
*** 13121,13126 ****
--- 13200,13211 ----
        && (TREE_CODE (TREE_TYPE (DECL_ARGUMENTS (current_function_decl)))
  	  == POINTER_TYPE))
      remove_member_access_dummy_vars (DECL_INITIAL (current_function_decl));
+ 
+   gomp_task *task_stmt;
+   unsigned j;
+   FOR_EACH_VEC_ELT (task_cpyfns, j, task_stmt)
+     finalize_task_copyfn (task_stmt);
+   task_cpyfns.release ();
    return 0;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/optabs-tree.c gcc-10.4.0/gcc/optabs-tree.c
*** gcc-10.3.0/gcc/optabs-tree.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/optabs-tree.c	Tue Jun 28 08:54:28 2022
*************** optab_for_tree_code (enum tree_code code
*** 56,72 ****
      case MULT_HIGHPART_EXPR:
        return TYPE_UNSIGNED (type) ? umul_highpart_optab : smul_highpart_optab;
  
-     case TRUNC_MOD_EXPR:
      case CEIL_MOD_EXPR:
      case FLOOR_MOD_EXPR:
      case ROUND_MOD_EXPR:
        return TYPE_UNSIGNED (type) ? umod_optab : smod_optab;
  
-     case RDIV_EXPR:
-     case TRUNC_DIV_EXPR:
      case CEIL_DIV_EXPR:
      case FLOOR_DIV_EXPR:
      case ROUND_DIV_EXPR:
      case EXACT_DIV_EXPR:
        if (TYPE_SATURATING (type))
  	return TYPE_UNSIGNED (type) ? usdiv_optab : ssdiv_optab;
--- 56,87 ----
      case MULT_HIGHPART_EXPR:
        return TYPE_UNSIGNED (type) ? umul_highpart_optab : smul_highpart_optab;
  
      case CEIL_MOD_EXPR:
      case FLOOR_MOD_EXPR:
      case ROUND_MOD_EXPR:
+       /* {s,u}mod_optab implements TRUNC_MOD_EXPR.  For scalar modes,
+ 	 expansion has code to adjust TRUNC_MOD_EXPR into the desired other
+ 	 modes, but for vector modes it does not.  The adjustment code
+ 	 should be instead emitted in tree-vect-patterns.cc.  */
+       if (TREE_CODE (type) == VECTOR_TYPE)
+ 	return unknown_optab;
+       /* FALLTHRU */
+     case TRUNC_MOD_EXPR:
        return TYPE_UNSIGNED (type) ? umod_optab : smod_optab;
  
      case CEIL_DIV_EXPR:
      case FLOOR_DIV_EXPR:
      case ROUND_DIV_EXPR:
+       /* {,u}{s,u}div_optab implements {TRUNC,EXACT}_DIV_EXPR or RDIV_EXPR.
+ 	 For scalar modes, expansion has code to adjust TRUNC_DIV_EXPR
+ 	 into the desired other modes, but for vector modes it does not.
+ 	 The adjustment code should be instead emitted in
+ 	 tree-vect-patterns.cc.  */
+       if (TREE_CODE (type) == VECTOR_TYPE)
+ 	return unknown_optab;
+       /* FALLTHRU */
+     case RDIV_EXPR:
+     case TRUNC_DIV_EXPR:
      case EXACT_DIV_EXPR:
        if (TYPE_SATURATING (type))
  	return TYPE_UNSIGNED (type) ? usdiv_optab : ssdiv_optab;
diff -Nrcpad gcc-10.3.0/gcc/optabs.c gcc-10.4.0/gcc/optabs.c
*** gcc-10.3.0/gcc/optabs.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/optabs.c	Tue Jun 28 08:54:28 2022
*************** prepare_cmp_insn (rtx x, rtx y, enum rtx
*** 3891,3902 ****
    /* If we are optimizing, force expensive constants into a register.  */
    if (CONSTANT_P (x) && optimize
        && (rtx_cost (x, mode, COMPARE, 0, optimize_insn_for_speed_p ())
!           > COSTS_N_INSNS (1)))
      x = force_reg (mode, x);
  
    if (CONSTANT_P (y) && optimize
        && (rtx_cost (y, mode, COMPARE, 1, optimize_insn_for_speed_p ())
!           > COSTS_N_INSNS (1)))
      y = force_reg (mode, y);
  
  #if HAVE_cc0
--- 3891,3904 ----
    /* If we are optimizing, force expensive constants into a register.  */
    if (CONSTANT_P (x) && optimize
        && (rtx_cost (x, mode, COMPARE, 0, optimize_insn_for_speed_p ())
!           > COSTS_N_INSNS (1))
!       && can_create_pseudo_p ())
      x = force_reg (mode, x);
  
    if (CONSTANT_P (y) && optimize
        && (rtx_cost (y, mode, COMPARE, 1, optimize_insn_for_speed_p ())
!           > COSTS_N_INSNS (1))
!       && can_create_pseudo_p ())
      y = force_reg (mode, y);
  
  #if HAVE_cc0
*************** prepare_cmp_insn (rtx x, rtx y, enum rtx
*** 3972,3977 ****
--- 3974,3981 ----
       compare and branch in different basic blocks.  */
    if (cfun->can_throw_non_call_exceptions)
      {
+       if (!can_create_pseudo_p () && (may_trap_p (x) || may_trap_p (y)))
+ 	goto fail;
        if (may_trap_p (x))
  	x = copy_to_reg (x);
        if (may_trap_p (y))
diff -Nrcpad gcc-10.3.0/gcc/po/ChangeLog gcc-10.4.0/gcc/po/ChangeLog
*** gcc-10.3.0/gcc/po/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/po/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/postreload.c gcc-10.4.0/gcc/postreload.c
*** gcc-10.3.0/gcc/postreload.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/postreload.c	Tue Jun 28 08:54:28 2022
*************** move2add_valid_value_p (int regno, scala
*** 1700,1706 ****
      {
        scalar_int_mode old_mode;
        if (!is_a <scalar_int_mode> (reg_mode[regno], &old_mode)
! 	  || !MODES_OK_FOR_MOVE2ADD (mode, old_mode))
  	return false;
        /* The value loaded into regno in reg_mode[regno] is also valid in
  	 mode after truncation only if (REG:mode regno) is the lowpart of
--- 1700,1707 ----
      {
        scalar_int_mode old_mode;
        if (!is_a <scalar_int_mode> (reg_mode[regno], &old_mode)
! 	  || !MODES_OK_FOR_MOVE2ADD (mode, old_mode)
! 	  || !REG_CAN_CHANGE_MODE_P (regno, old_mode, mode))
  	return false;
        /* The value loaded into regno in reg_mode[regno] is also valid in
  	 mode after truncation only if (REG:mode regno) is the lowpart of
diff -Nrcpad gcc-10.3.0/gcc/regcprop.c gcc-10.4.0/gcc/regcprop.c
*** gcc-10.3.0/gcc/regcprop.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/regcprop.c	Tue Jun 28 08:54:28 2022
*************** copy_value (rtx dest, rtx src, struct va
*** 358,363 ****
--- 358,384 ----
    else if (sn > hard_regno_nregs (sr, vd->e[sr].mode))
      return;
  
+   /* If a narrower value is copied using wider mode, the upper bits
+      are undefined (could be e.g. a former paradoxical subreg).  Signal
+      in that case we've only copied value using the narrower mode.
+      Consider:
+      (set (reg:DI r14) (mem:DI ...))
+      (set (reg:QI si) (reg:QI r14))
+      (set (reg:DI bp) (reg:DI r14))
+      (set (reg:DI r14) (const_int ...))
+      (set (reg:DI dx) (reg:DI si))
+      (set (reg:DI si) (const_int ...))
+      (set (reg:DI dx) (reg:DI bp))
+      The last set is not redundant, while the low 8 bits of dx are already
+      equal to low 8 bits of bp, the other bits are undefined.  */
+   else if (partial_subreg_p (vd->e[sr].mode, GET_MODE (src)))
+     {
+       if (!REG_CAN_CHANGE_MODE_P (sr, GET_MODE (src), vd->e[sr].mode)
+ 	  || !REG_CAN_CHANGE_MODE_P (dr, vd->e[sr].mode, GET_MODE (dest)))
+ 	return;
+       set_value_regno (dr, vd->e[sr].mode, vd);
+     }
+ 
    /* Link DR at the end of the value chain used by SR.  */
  
    vd->e[dr].oldest_regno = vd->e[sr].oldest_regno;
diff -Nrcpad gcc-10.3.0/gcc/reload.c gcc-10.4.0/gcc/reload.c
*** gcc-10.3.0/gcc/reload.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/reload.c	Tue Jun 28 08:54:28 2022
*************** operands_match_p (rtx x, rtx y)
*** 2291,2296 ****
--- 2291,2301 ----
      CASE_CONST_UNIQUE:
        return 0;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case LABEL_REF:
        return label_ref_label (x) == label_ref_label (y);
      case SYMBOL_REF:
diff -Nrcpad gcc-10.3.0/gcc/rtl.c gcc-10.4.0/gcc/rtl.c
*** gcc-10.3.0/gcc/rtl.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/rtl.c	Tue Jun 28 08:54:28 2022
*************** rtx_equal_p_cb (const_rtx x, const_rtx y
*** 466,471 ****
--- 466,476 ----
      CASE_CONST_UNIQUE:
        return 0;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case DEBUG_IMPLICIT_PTR:
        return DEBUG_IMPLICIT_PTR_DECL (x)
  	     == DEBUG_IMPLICIT_PTR_DECL (y);
*************** rtx_equal_p (const_rtx x, const_rtx y)
*** 608,613 ****
--- 613,623 ----
      CASE_CONST_UNIQUE:
        return 0;
  
+     case CONST_VECTOR:
+       if (!same_vector_encodings_p (x, y))
+ 	return false;
+       break;
+ 
      case DEBUG_IMPLICIT_PTR:
        return DEBUG_IMPLICIT_PTR_DECL (x)
  	     == DEBUG_IMPLICIT_PTR_DECL (y);
*************** classify_insn (rtx x)
*** 737,743 ****
      return CALL_INSN;
    if (ANY_RETURN_P (x))
      return JUMP_INSN;
!   if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x))
      return JUMP_INSN;
    if (GET_CODE (x) == SET)
      {
--- 747,753 ----
      return CALL_INSN;
    if (ANY_RETURN_P (x))
      return JUMP_INSN;
!   if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_LENGTH (x))
      return JUMP_INSN;
    if (GET_CODE (x) == SET)
      {
*************** classify_insn (rtx x)
*** 766,772 ****
        if (has_return_p)
  	return JUMP_INSN;
        if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS
! 	  && ASM_OPERANDS_LABEL_VEC (XVECEXP (x, 0, 0)))
  	return JUMP_INSN;
      }
  #ifdef GENERATOR_FILE
--- 776,782 ----
        if (has_return_p)
  	return JUMP_INSN;
        if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS
! 	  && ASM_OPERANDS_LABEL_LENGTH (XVECEXP (x, 0, 0)))
  	return JUMP_INSN;
      }
  #ifdef GENERATOR_FILE
diff -Nrcpad gcc-10.3.0/gcc/rtl.h gcc-10.4.0/gcc/rtl.h
*** gcc-10.3.0/gcc/rtl.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/rtl.h	Tue Jun 28 08:54:28 2022
*************** vec_series_p (const_rtx x, rtx *base_out
*** 3087,3092 ****
--- 3087,3109 ----
    return const_vec_series_p (x, base_out, step_out);
  }
  
+ /* Return true if CONST_VECTORs X and Y, which are known to have the same mode,
+    also have the same encoding.  This means that they are equal whenever their
+    operands are equal.  */
+ 
+ inline bool
+ same_vector_encodings_p (const_rtx x, const_rtx y)
+ {
+   /* Don't be fussy about the encoding of constant-length vectors,
+      since XVECEXP (X, 0) and XVECEXP (Y, 0) list all the elements anyway.  */
+   if (poly_uint64 (CONST_VECTOR_NUNITS (x)).is_constant ())
+     return true;
+ 
+   return (CONST_VECTOR_NPATTERNS (x) == CONST_VECTOR_NPATTERNS (y)
+ 	  && (CONST_VECTOR_NELTS_PER_PATTERN (x)
+ 	      == CONST_VECTOR_NELTS_PER_PATTERN (y)));
+ }
+ 
  /* Return the unpromoted (outer) mode of SUBREG_PROMOTED_VAR_P subreg X.  */
  
  inline scalar_int_mode
diff -Nrcpad gcc-10.3.0/gcc/rtlanal.c gcc-10.4.0/gcc/rtlanal.c
*** gcc-10.3.0/gcc/rtlanal.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/rtlanal.c	Tue Jun 28 08:54:28 2022
*************** rtx_addr_can_trap_p_1 (const_rtx x, poly
*** 463,474 ****
  		       machine_mode mode, bool unaligned_mems)
  {
    enum rtx_code code = GET_CODE (x);
!   gcc_checking_assert (mode == BLKmode || known_size_p (size));
    poly_int64 const_x1;
  
    /* The offset must be a multiple of the mode size if we are considering
       unaligned memory references on strict alignment machines.  */
!   if (STRICT_ALIGNMENT && unaligned_mems && mode != BLKmode)
      {
        poly_int64 actual_offset = offset;
  
--- 463,479 ----
  		       machine_mode mode, bool unaligned_mems)
  {
    enum rtx_code code = GET_CODE (x);
!   gcc_checking_assert (mode == BLKmode
! 		       || mode == VOIDmode
! 		       || known_size_p (size));
    poly_int64 const_x1;
  
    /* The offset must be a multiple of the mode size if we are considering
       unaligned memory references on strict alignment machines.  */
!   if (STRICT_ALIGNMENT
!       && unaligned_mems
!       && mode != BLKmode
!       && mode != VOIDmode)
      {
        poly_int64 actual_offset = offset;
  
*************** replace_rtx (rtx x, rtx from, rtx to, bo
*** 3061,3067 ****
      {
        rtx new_rtx = replace_rtx (SUBREG_REG (x), from, to, all_regs);
  
!       if (CONST_INT_P (new_rtx))
  	{
  	  x = simplify_subreg (GET_MODE (x), new_rtx,
  			       GET_MODE (SUBREG_REG (x)),
--- 3066,3072 ----
      {
        rtx new_rtx = replace_rtx (SUBREG_REG (x), from, to, all_regs);
  
!       if (CONST_SCALAR_INT_P (new_rtx))
  	{
  	  x = simplify_subreg (GET_MODE (x), new_rtx,
  			       GET_MODE (SUBREG_REG (x)),
*************** replace_rtx (rtx x, rtx from, rtx to, bo
*** 3077,3083 ****
      {
        rtx new_rtx = replace_rtx (XEXP (x, 0), from, to, all_regs);
  
!       if (CONST_INT_P (new_rtx))
  	{
  	  x = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x),
  					new_rtx, GET_MODE (XEXP (x, 0)));
--- 3082,3088 ----
      {
        rtx new_rtx = replace_rtx (XEXP (x, 0), from, to, all_regs);
  
!       if (CONST_SCALAR_INT_P (new_rtx))
  	{
  	  x = simplify_unary_operation (ZERO_EXTEND, GET_MODE (x),
  					new_rtx, GET_MODE (XEXP (x, 0)));
diff -Nrcpad gcc-10.3.0/gcc/rtx-vector-builder.c gcc-10.4.0/gcc/rtx-vector-builder.c
*** gcc-10.3.0/gcc/rtx-vector-builder.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/rtx-vector-builder.c	Tue Jun 28 08:54:28 2022
*************** rtx_vector_builder::build (rtvec v)
*** 46,56 ****
  
  rtx
  rtx_vector_builder::apply_step (rtx base, unsigned int factor,
! 				const wide_int &step) const
  {
    scalar_int_mode int_mode = as_a <scalar_int_mode> (GET_MODE_INNER (m_mode));
!   return immed_wide_int_const (wi::add (rtx_mode_t (base, int_mode),
! 					factor * step),
  			       int_mode);
  }
  
--- 46,56 ----
  
  rtx
  rtx_vector_builder::apply_step (rtx base, unsigned int factor,
! 				const poly_wide_int &step) const
  {
    scalar_int_mode int_mode = as_a <scalar_int_mode> (GET_MODE_INNER (m_mode));
!   return immed_wide_int_const (wi::to_poly_wide (base, int_mode)
! 			       + factor * step,
  			       int_mode);
  }
  
diff -Nrcpad gcc-10.3.0/gcc/rtx-vector-builder.h gcc-10.4.0/gcc/rtx-vector-builder.h
*** gcc-10.3.0/gcc/rtx-vector-builder.h	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/rtx-vector-builder.h	Tue Jun 28 08:54:28 2022
*************** private:
*** 44,51 ****
    bool equal_p (rtx, rtx) const;
    bool allow_steps_p () const;
    bool integral_p (rtx) const;
!   wide_int step (rtx, rtx) const;
!   rtx apply_step (rtx, unsigned int, const wide_int &) const;
    bool can_elide_p (rtx) const { return true; }
    void note_representative (rtx *, rtx) {}
  
--- 44,51 ----
    bool equal_p (rtx, rtx) const;
    bool allow_steps_p () const;
    bool integral_p (rtx) const;
!   poly_wide_int step (rtx, rtx) const;
!   rtx apply_step (rtx, unsigned int, const poly_wide_int &) const;
    bool can_elide_p (rtx) const { return true; }
    void note_representative (rtx *, rtx) {}
  
*************** rtx_vector_builder::integral_p (rtx elt)
*** 115,125 ****
  /* Return the value of element ELT2 minus the value of element ELT1.
     Both elements are known to be CONST_SCALAR_INT_Ps.  */
  
! inline wide_int
  rtx_vector_builder::step (rtx elt1, rtx elt2) const
  {
!   return wi::sub (rtx_mode_t (elt2, GET_MODE_INNER (m_mode)),
! 		  rtx_mode_t (elt1, GET_MODE_INNER (m_mode)));
  }
  
  #endif
--- 115,125 ----
  /* Return the value of element ELT2 minus the value of element ELT1.
     Both elements are known to be CONST_SCALAR_INT_Ps.  */
  
! inline poly_wide_int
  rtx_vector_builder::step (rtx elt1, rtx elt2) const
  {
!   return (wi::to_poly_wide (elt2, GET_MODE_INNER (m_mode))
! 	  - wi::to_poly_wide (elt1, GET_MODE_INNER (m_mode)));
  }
  
  #endif
diff -Nrcpad gcc-10.3.0/gcc/sanopt.c gcc-10.4.0/gcc/sanopt.c
*** gcc-10.3.0/gcc/sanopt.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/sanopt.c	Tue Jun 28 08:54:28 2022
*************** maybe_optimize_ubsan_ptr_ifn (sanopt_ctx
*** 492,498 ****
  				  &unsignedp, &reversep, &volatilep);
        if ((offset == NULL_TREE || TREE_CODE (offset) == INTEGER_CST)
  	  && DECL_P (base)
! 	  && !DECL_REGISTER (base)
  	  && pbitpos.is_constant (&bitpos))
  	{
  	  offset_int expr_offset;
--- 492,501 ----
  				  &unsignedp, &reversep, &volatilep);
        if ((offset == NULL_TREE || TREE_CODE (offset) == INTEGER_CST)
  	  && DECL_P (base)
! 	  && ((!VAR_P (base)
! 	       && TREE_CODE (base) != PARM_DECL
! 	       && TREE_CODE (base) != RESULT_DECL)
! 	      || !DECL_REGISTER (base))
  	  && pbitpos.is_constant (&bitpos))
  	{
  	  offset_int expr_offset;
diff -Nrcpad gcc-10.3.0/gcc/shrink-wrap.c gcc-10.4.0/gcc/shrink-wrap.c
*** gcc-10.3.0/gcc/shrink-wrap.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/shrink-wrap.c	Tue Jun 28 08:54:28 2022
*************** try_shrink_wrapping (edge *entry_edge, r
*** 776,782 ****
    unsigned max_grow_size = get_uncond_jump_length ();
    max_grow_size *= param_max_grow_copy_bb_insns;
  
!   while (!vec.is_empty () && pro != entry)
      {
        while (pro != entry && !can_get_prologue (pro, prologue_clobbered))
  	{
--- 776,782 ----
    unsigned max_grow_size = get_uncond_jump_length ();
    max_grow_size *= param_max_grow_copy_bb_insns;
  
!   while (pro != entry)
      {
        while (pro != entry && !can_get_prologue (pro, prologue_clobbered))
  	{
*************** try_shrink_wrapping (edge *entry_edge, r
*** 786,791 ****
--- 786,794 ----
  	    vec.quick_push (pro);
  	}
  
+       if (vec.is_empty ())
+ 	break;
+ 
        basic_block bb = vec.pop ();
        if (!can_dup_for_shrink_wrapping (bb, pro, max_grow_size))
  	while (!dominated_by_p (CDI_DOMINATORS, bb, pro))
diff -Nrcpad gcc-10.3.0/gcc/simplify-rtx.c gcc-10.4.0/gcc/simplify-rtx.c
*** gcc-10.3.0/gcc/simplify-rtx.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/simplify-rtx.c	Tue Jun 28 08:54:28 2022
*************** comparison_code_valid_for_mode (enum rtx
*** 2261,2266 ****
--- 2261,2313 ----
  	gcc_unreachable ();
      }
  }
+ 
+ /* Canonicalize RES, a scalar const0_rtx/const_true_rtx to the right
+    false/true value of comparison with MODE where comparison operands
+    have CMP_MODE.  */
+ 
+ static rtx
+ relational_result (machine_mode mode, machine_mode cmp_mode, rtx res)
+ {
+   if (SCALAR_FLOAT_MODE_P (mode))
+     {
+       if (res == const0_rtx)
+         return CONST0_RTX (mode);
+ #ifdef FLOAT_STORE_FLAG_VALUE
+       REAL_VALUE_TYPE val = FLOAT_STORE_FLAG_VALUE (mode);
+       return const_double_from_real_value (val, mode);
+ #else
+       return NULL_RTX;
+ #endif
+     }
+   if (VECTOR_MODE_P (mode))
+     {
+       if (res == const0_rtx)
+ 	return CONST0_RTX (mode);
+ #ifdef VECTOR_STORE_FLAG_VALUE
+       rtx val = VECTOR_STORE_FLAG_VALUE (mode);
+       if (val == NULL_RTX)
+ 	return NULL_RTX;
+       if (val == const1_rtx)
+ 	return CONST1_RTX (mode);
+ 
+       return gen_const_vec_duplicate (mode, val);
+ #else
+       return NULL_RTX;
+ #endif
+     }
+   /* For vector comparison with scalar int result, it is unknown
+      if the target means here a comparison into an integral bitmask,
+      or comparison where all comparisons true mean const_true_rtx
+      whole result, or where any comparisons true mean const_true_rtx
+      whole result.  For const0_rtx all the cases are the same.  */
+   if (VECTOR_MODE_P (cmp_mode)
+       && SCALAR_INT_MODE_P (mode)
+       && res == const_true_rtx)
+     return NULL_RTX;
+ 
+   return res;
+ }
  				       
  /* Simplify a logical operation CODE with result mode MODE, operating on OP0
     and OP1, which should be both relational operations.  Return 0 if no such
*************** simplify_logical_relational_operation (e
*** 2295,2301 ****
    int mask = mask0 | mask1;
  
    if (mask == 15)
!     return const_true_rtx;
  
    code = mask_to_comparison (mask);
  
--- 2342,2348 ----
    int mask = mask0 | mask1;
  
    if (mask == 15)
!     return relational_result (mode, GET_MODE (op0), const_true_rtx);
  
    code = mask_to_comparison (mask);
  
*************** simplify_relational_operation (enum rtx_
*** 5074,5124 ****
  
    tem = simplify_const_relational_operation (code, cmp_mode, op0, op1);
    if (tem)
!     {
!       if (SCALAR_FLOAT_MODE_P (mode))
! 	{
!           if (tem == const0_rtx)
!             return CONST0_RTX (mode);
! #ifdef FLOAT_STORE_FLAG_VALUE
! 	  {
! 	    REAL_VALUE_TYPE val;
! 	    val = FLOAT_STORE_FLAG_VALUE (mode);
! 	    return const_double_from_real_value (val, mode);
! 	  }
! #else
! 	  return NULL_RTX;
! #endif
! 	}
!       if (VECTOR_MODE_P (mode))
! 	{
! 	  if (tem == const0_rtx)
! 	    return CONST0_RTX (mode);
! #ifdef VECTOR_STORE_FLAG_VALUE
! 	  {
! 	    rtx val = VECTOR_STORE_FLAG_VALUE (mode);
! 	    if (val == NULL_RTX)
! 	      return NULL_RTX;
! 	    if (val == const1_rtx)
! 	      return CONST1_RTX (mode);
! 
! 	    return gen_const_vec_duplicate (mode, val);
! 	  }
! #else
! 	  return NULL_RTX;
! #endif
! 	}
!       /* For vector comparison with scalar int result, it is unknown
! 	 if the target means here a comparison into an integral bitmask,
! 	 or comparison where all comparisons true mean const_true_rtx
! 	 whole result, or where any comparisons true mean const_true_rtx
! 	 whole result.  For const0_rtx all the cases are the same.  */
!       if (VECTOR_MODE_P (cmp_mode)
! 	  && SCALAR_INT_MODE_P (mode)
! 	  && tem == const_true_rtx)
! 	return NULL_RTX;
! 
!       return tem;
!     }
  
    /* For the following tests, ensure const0_rtx is op1.  */
    if (swap_commutative_operands_p (op0, op1)
--- 5121,5127 ----
  
    tem = simplify_const_relational_operation (code, cmp_mode, op0, op1);
    if (tem)
!     return relational_result (mode, cmp_mode, tem);
  
    /* For the following tests, ensure const0_rtx is op1.  */
    if (swap_commutative_operands_p (op0, op1)
diff -Nrcpad gcc-10.3.0/gcc/stor-layout.c gcc-10.4.0/gcc/stor-layout.c
*** gcc-10.3.0/gcc/stor-layout.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/stor-layout.c	Tue Jun 28 08:54:28 2022
*************** finish_bitfield_representative (tree rep
*** 2059,2067 ****
    bitsize = (bitsize + BITS_PER_UNIT - 1) & ~(BITS_PER_UNIT - 1);
  
    /* Now nothing tells us how to pad out bitsize ...  */
!   nextf = DECL_CHAIN (field);
!   while (nextf && TREE_CODE (nextf) != FIELD_DECL)
!     nextf = DECL_CHAIN (nextf);
    if (nextf)
      {
        tree maxsize;
--- 2059,2072 ----
    bitsize = (bitsize + BITS_PER_UNIT - 1) & ~(BITS_PER_UNIT - 1);
  
    /* Now nothing tells us how to pad out bitsize ...  */
!   if (TREE_CODE (DECL_CONTEXT (field)) == RECORD_TYPE)
!     {
!       nextf = DECL_CHAIN (field);
!       while (nextf && TREE_CODE (nextf) != FIELD_DECL)
! 	nextf = DECL_CHAIN (nextf);
!     }
!   else
!     nextf = NULL_TREE;
    if (nextf)
      {
        tree maxsize;
*************** finish_bitfield_layout (tree t)
*** 2154,2164 ****
    tree field, prev;
    tree repr = NULL_TREE;
  
!   /* Unions would be special, for the ease of type-punning optimizations
!      we could use the underlying type as hint for the representative
!      if the bitfield would fit and the representative would not exceed
!      the union in size.  */
!   if (TREE_CODE (t) != RECORD_TYPE)
      return;
  
    for (prev = NULL_TREE, field = TYPE_FIELDS (t);
--- 2159,2165 ----
    tree field, prev;
    tree repr = NULL_TREE;
  
!   if (TREE_CODE (t) == QUAL_UNION_TYPE)
      return;
  
    for (prev = NULL_TREE, field = TYPE_FIELDS (t);
*************** finish_bitfield_layout (tree t)
*** 2220,2226 ****
        if (repr)
  	DECL_BIT_FIELD_REPRESENTATIVE (field) = repr;
  
!       prev = field;
      }
  
    if (repr)
--- 2221,2233 ----
        if (repr)
  	DECL_BIT_FIELD_REPRESENTATIVE (field) = repr;
  
!       if (TREE_CODE (t) == RECORD_TYPE)
! 	prev = field;
!       else if (repr)
! 	{
! 	  finish_bitfield_representative (repr, field);
! 	  repr = NULL_TREE;
! 	}
      }
  
    if (repr)
diff -Nrcpad gcc-10.3.0/gcc/target.def gcc-10.4.0/gcc/target.def
*** gcc-10.3.0/gcc/target.def	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/target.def	Tue Jun 28 08:54:28 2022
*************** collecting constructors and destructors
*** 6702,6707 ****
--- 6702,6717 ----
  It is false if we must use @command{collect2}.",
   bool, false)
  
+ /* True if the target wants DTORs to be run from cxa_atexit.  */
+ DEFHOOKPOD
+ (dtors_from_cxa_atexit,
+  "This value is true if the target wants destructors to be queued to be\n\
+ run from __cxa_atexit.  If this is the case then, for each priority level,\n\
+ a new constructor will be entered that registers the destructors for that\n\
+ level with __cxa_atexit (and there will be no destructors emitted).\n\
+ It is false the method implied by @code{have_ctors_dtors} is used.",
+  bool, false)
+ 
  /* True if thread-local storage is supported.  */
  DEFHOOKPOD
  (have_tls,
diff -Nrcpad gcc-10.3.0/gcc/testsuite/ChangeLog gcc-10.4.0/gcc/testsuite/ChangeLog
*** gcc-10.3.0/gcc/testsuite/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gcc/testsuite/ChangeLog	Tue Jun 28 08:54:28 2022
***************
*** 1,3 ****
--- 1,3207 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-06-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105209
+ 	* gcc.target/alpha/pr105209.c: New test.
+ 
+ 2022-06-20  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105970
+ 	* gcc.target/i386/pr105970.c: New test.
+ 
+ 2022-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/105998
+ 	* c-c++-common/pr105998.c: New test.
+ 
+ 2022-06-20  Jan Hubicka  <jh@suse.cz>
+ 
+ 	Backported from master:
+ 	2022-06-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* gcc.dg/ipa/pr105739.c: New test.
+ 
+ 2022-06-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105729
+ 	* g++.dg/ubsan/pr105729.C: New test.
+ 
+ 2022-06-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/105732
+ 	* c-c++-common/cpp/va-opt-10.c: New test.
+ 
+ 2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2022-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* gdc.dg/Wpadded.d: New test.
+ 
+ 2022-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105726
+ 	* g++.dg/warn/Warray-bounds-27.C: New testcase.
+ 
+ 2022-06-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104637
+ 	* gcc.target/i386/pr104637.c: Don't run on ia32.  Add -Wno-div-by-zero
+ 	to dg-options.
+ 	(foo): Remove extraneous initializer.
+ 
+ 2022-06-14  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/104637
+ 	* gcc.target/i386/pr104637.c: New.
+ 
+ 2022-06-13  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR rtl-optimization/104777
+ 	* gcc.dg/torture/tls/pr104777.c: New test.
+ 
+ 2022-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* jit.dg/jit.exp (fixed_local_execute): Amend the match and
+ 	exit conditions to cater for more platforms.
+ 	* lib/target-supports.exp: Add support for checking that the
+ 	jit lib is usable on the target.
+ 
+ 2022-06-09  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* jit.dg/harness.h: Include jit-dejagnu.h.
+ 	* jit.dg/jit.exp: Use -rdynamic conditionally on target
+ 	support, instead of unconditional -Wl,--export-dynamic.
+ 
+ 2022-05-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/torture/pr100786.c: Add dg-require alias.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-03-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* lib/prune.exp: Prune useless output caused by a linker bug.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 		    Matt Jacobson   <mhjacobson@me.com>
+ 
+ 	PR objc/101666
+ 	* obj-c++.dg/pr101666-0.mm: New test.
+ 	* obj-c++.dg/pr101666-1.mm: New test.
+ 	* obj-c++.dg/pr101666.inc: New.
+ 	* objc.dg/pr101666-0.m: New test.
+ 	* objc.dg/pr101666-1.m: New test.
+ 	* objc.dg/pr101666.inc: New.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.dg/torture/fp-int-convert-timode-3.c: Remove XFAIL.
+ 	* gcc.dg/torture/fp-int-convert-timode-4.c: Likewise.
+ 
+ 2022-05-29  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-12-18  François-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 
+ 	* gcc.dg/darwin-minversion-link.c: Test darwin21.
+ 	* obj-c++.dg/cxx-ivars-3.mm: Homogeneize darwin versions.
+ 	* obj-c++.dg/objc-gc-3.mm: Homogeneize darwin versions.
+ 	* objc.dg/objc-gc-4.m: Homogeneize darwin versions.
+ 
+ 2022-05-27  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-04-18  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR testsuite/105266
+ 	* gcc.dg/pr105250.c: Skip for powerpc*-*-* and s390*-*-*.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105250
+ 	* gcc.dg/pr105250.c: New testcase.
+ 
+ 2022-05-27  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-04-07  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/105147
+ 	* gcc.dg/pr105140.c: Skip for s390*-*-*.
+ 
+ 2022-05-27  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	Backported from master:
+ 	2022-04-06  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/105147
+ 	* gcc.dg/pr105140.c: Skip for powerpc*-*-*.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105140
+ 	* gcc.dg/pr105140.c: New testcase.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105163
+ 	* gcc.dg/torture/pr105163.c: New testcase.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105173
+ 	* gcc.dg/pr105173.c: New testcase.
+ 
+ 2022-05-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102307
+ 	* g++.dg/cpp1z/constexpr-array2.C: New test.
+ 
+ 2022-05-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2022-05-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102629
+ 	* g++.dg/cpp2a/lambda-pack-init7.C: New test.
+ 
+ 2022-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-05-11  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/105230
+ 	* gfortran.dg/pr105230.f90: New test.
+ 
+ 2022-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-03-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104849
+ 	* gfortran.dg/pr104849.f90: New test.
+ 
+ 2022-05-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-04-05  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/105138
+ 	* gfortran.dg/recursive_reference_3.f90: New test.
+ 
+ 2022-05-16  Sebastian Pop  <spop@amazon.com>
+ 
+ 	PR target/105162
+ 	* gcc.target/aarch64/sync-comp-swap-ool.c: New.
+ 	* gcc.target/aarch64/sync-op-acquire-ool.c: New.
+ 	* gcc.target/aarch64/sync-op-full-ool.c: New.
+ 	* gcc.target/aarch64/target_attr_20.c: Update check.
+ 	* gcc.target/aarch64/target_attr_21.c: Same.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101078
+ 	* g++.dg/template/access39.C: New test.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/65211
+ 	* g++.target/i386/vec-tmpl1.C: New test.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101698
+ 	* g++.dg/template/conv19.C: New test.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101442
+ 	* g++.dg/cpp0x/initlist-nrv1.C: New test.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99066
+ 	* g++.dg/cpp0x/extern_template-6.C: New test.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/91241
+ 	* g++.dg/abi/lambda-defarg1.C: New test.
+ 
+ 2022-05-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/86355
+ 	* g++.dg/cpp0x/alias-decl-variadic2.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101767
+ 	* g++.dg/ext/anon-struct10.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/41723
+ 	* g++.dg/template/friend71.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/104142
+ 	* g++.dg/opt/const7.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102071
+ 	* g++.dg/cpp1z/aligned-new9.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100838
+ 	PR c++/105265
+ 	* g++.dg/init/no-elide2.C: New test.
+ 	* g++.dg/cpp0x/initlist-new6.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/82980
+ 	* g++.dg/cpp0x/lambda/lambda-current-inst1.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/104646
+ 	* g++.dg/cpp0x/constexpr-fno-elide-ctors1.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/102629
+ 	* g++.dg/cpp2a/lambda-pack-init7.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/59950
+ 	* g++.dg/init/assign2.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/105245
+ 	PR c++/100111
+ 	* g++.dg/cpp1y/constexpr-empty2.C: Add -fno-elide-constructors.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101717
+ 	* g++.dg/cpp1y/lambda-generic-this4.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100608
+ 	* g++.dg/warn/Wshadow-compatible-local-3.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/98249
+ 	* g++.dg/lookup/new3.C: New test.
+ 
+ 2022-05-12  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101767
+ 	* g++.dg/ext/anon-struct10.C: New test.
+ 
+ 2022-05-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-01  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/101194
+ 	* g++.dg/cpp0x/constexpr-empty16.C: New test.
+ 
+ 2022-05-10  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-04-28  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* lib/prune.exp (prune_gcc_output): Prune new linker warning.
+ 
+ 2022-05-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-05-05  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR testsuite/100422
+ 	* g++.dg/gomp/clause-3.C: Use 'reduction(&:..)' instead of '...(&&:..)'.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105396
+ 	* gcc.dg/asan/pr105396.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105333
+ 	* gcc.dg/pr105333.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105257
+ 	* gcc.dg/pr105257.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105256
+ 	* g++.dg/cpp0x/pr105256.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105214
+ 	* gcc.dg/asan/pr105214.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105211
+ 	* gcc.dg/pr105211.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105186
+ 	* c-c++-common/pr105186.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105189
+ 	* g++.dg/torture/pr105189.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105123
+ 	* gcc.target/i386/pr105123.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105093
+ 	* g++.dg/ubsan/pr105093.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105094
+ 	* gcc.dg/pr105094.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105061
+ 	* g++.dg/concepts/pr105061.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-c++-common/builtin-convertvector-3.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104994
+ 	* g++.dg/cpp2a/constexpr-nonlit7.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104971
+ 	* gcc.target/i386/pr104971.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104568
+ 	* g++.dg/cpp2a/constexpr-new22.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104910
+ 	* gcc.dg/pr104910.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104814
+ 	* gcc.c-torture/execute/pr104814.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104711
+ 	* c-c++-common/Wshift-negative-value-1.c: Remove
+ 	dg-additional-options, instead in target selectors of each diagnostic
+ 	check for exact C++ versions where it should be diagnosed.
+ 	* c-c++-common/Wshift-negative-value-2.c: Likewise.
+ 	* c-c++-common/Wshift-negative-value-3.c: Likewise.
+ 	* c-c++-common/Wshift-negative-value-4.c: Likewise.
+ 	* c-c++-common/Wshift-negative-value-7.c: New test.
+ 	* c-c++-common/Wshift-negative-value-8.c: New test.
+ 	* c-c++-common/Wshift-negative-value-9.c: New test.
+ 	* c-c++-common/Wshift-negative-value-10.c: New test.
+ 	* c-c++-common/Wshift-overflow-1.c: Remove
+ 	dg-additional-options, instead in target selectors of each diagnostic
+ 	check for exact C++ versions where it should be diagnosed.
+ 	* c-c++-common/Wshift-overflow-2.c: Likewise.
+ 	* c-c++-common/Wshift-overflow-5.c: Likewise.
+ 	* c-c++-common/Wshift-overflow-6.c: Likewise.
+ 	* c-c++-common/Wshift-overflow-7.c: Likewise.
+ 	* c-c++-common/Wshift-overflow-8.c: New test.
+ 	* c-c++-common/Wshift-overflow-9.c: New test.
+ 	* c-c++-common/Wshift-overflow-10.c: New test.
+ 	* c-c++-common/Wshift-overflow-11.c: New test.
+ 	* c-c++-common/Wshift-overflow-12.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104806
+ 	* g++.dg/spellcheck-pr104806.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104775
+ 	* gcc.target/s390/pr104775.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 		    Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/104675
+ 	* gcc.dg/pr104675-3.c : New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104681
+ 	* g++.dg/opt/pr104681.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104675
+ 	* gcc.dg/pr104675-1.c: New test.
+ 	* gcc.dg/pr104675-2.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104557
+ 	* gcc.dg/dfp/pr104557.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104544
+ 	* gcc.dg/pr104544.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104510
+ 	* gcc.dg/dfp/pr104510.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104513
+ 	* g++.dg/cpp1y/constexpr-104513.C: New test.
+ 	* g++.dg/cpp2a/constexpr-dtor12.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/104449
+ 	* gcc.dg/asan/pr104449.c: New test.
+ 	* g++.dg/asan/pr104449.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104502
+ 	* gcc.target/i386/pr104502.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104472
+ 	* g++.dg/cpp0x/constexpr-104472.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104446
+ 	* gcc.target/i386/pr104446.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102140
+ 	* gcc.dg/pr102140.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/104147
+ 	* c-c++-common/cpp/pr104147.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104263
+ 	* gcc.dg/pr104263.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/102478
+ 	* gcc.dg/pr102478.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/102860
+ 	* gfortran.dg/pr102860.f90: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/104055
+ 	* g++.dg/cpp2a/consteval27.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-12  Jakub Jelinek  <jakub@redhat.com>
+ 		    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/103480
+ 	* g++.dg/warn/Wuseless-cast2.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/101537
+ 	PR c/103881
+ 	* c-c++-common/pr101537.c: New test.
+ 	* c-c++-common/pr103881.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/103912
+ 	* g++.dg/cpp2a/consteval26.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103908
+ 	* gcc.target/i386/pr103908.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/89971
+ 	* c-c++-common/cpp/va-opt-9.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103860
+ 	* gcc.dg/pr103860.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103837
+ 	* gcc.dg/pr103837.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/103587
+ 	* gcc.dg/pr103587.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/102431
+ 	* c-c++-common/gomp/pr102431.c: New test.
+ 	* g++.dg/gomp/pr102431.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/70796
+ 	* g++.dg/cpp1z/eval-order11.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/103205
+ 	* gcc.target/i386/pr103205.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/101378
+ 	* g++.dg/debug/dwarf2/pr101378.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/64888
+ 	* c-c++-common/ubsan/pr64888.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102786
+ 	* g++.dg/cpp2a/constexpr-virtual19.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102548
+ 	* g++.target/i386/pr102548.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-01  Jakub Jelinek  <jakub@redhat.com>
+ 		    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR sanitizer/102515
+ 	* c-c++-common/ubsan/float-div-by-zero-2.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102498
+ 	* gcc.target/i386/pr102498.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/88578
+ 	PR c++/102295
+ 	* g++.dg/ext/flexary39.C: New test.
+ 	* g++.dg/ext/flexary40.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102295
+ 	* g++.target/i386/pr102295.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/102305
+ 	* g++.dg/cpp0x/pr102305.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102224
+ 	* gcc.dg/pr102224.c: New test.
+ 	* gcc.target/i386/avx-pr102224.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/101905
+ 	* gcc.dg/guality/pr101905.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101624
+ 	* gfortran.dg/ubsan/ubsan.exp: New file.
+ 	* gfortran.dg/ubsan/pr101624.f90: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/101562
+ 	* gcc.c-torture/compile/pr101562.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101535
+ 	* c-c++-common/gomp/pr101535-1.c: New test.
+ 	* c-c++-common/gomp/pr101535-2.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101516
+ 	* g++.dg/gomp/pr101516.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/101384
+ 	* gcc.dg/pr101384.c: New test.
+ 
+ 2022-05-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* gcc.dg/gomp/clause-1.c: Use 'reduction(&:..)' instead of '...(&&:..)'.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101443
+ 	* g++.dg/cpp0x/nullptr46.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/101266
+ 	* gcc.dg/pr101266.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101210
+ 	* g++.dg/ubsan/pr101210.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/101171
+ 	* gcc.dg/pr101171.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR inline-asm/100785
+ 	* c-c++-common/pr100785.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101062
+ 	* gcc.dg/pr101062.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.dg/guality/pr49888.c (f): Use noipa attribute instead of
+ 	noinline, noclone.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/100898
+ 	* g++.dg/ext/va-arg-pack-3.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/100666
+ 	* g++.dg/cpp1z/nodiscard8.C: New test.
+ 	* g++.dg/cpp1z/nodiscard9.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/100580
+ 	* g++.dg/other/pr100580.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/100342
+ 	* gcc.target/i386/pr100342.c: New test.
+ 
+ 2022-05-10  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2021-01-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR rtl-optimization/98694
+ 	* gcc.target/i386/pr98694.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* g++.dg/cpp1y/pr88872.C: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/100508
+ 	* gcc.dg/gomp/pr100508.c: New test.
+ 
+ 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.target/sparc/20220510-1.c: New test.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/105304
+ 	* g++.dg/cpp2a/concepts-requires30.C: New test.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/103455
+ 	* g++.dg/overload/builtin6.C: New test.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/104565
+ 	* g++.dg/template/non-dependent22.C: New test.
+ 
+ 2022-05-09  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-25  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/101532
+ 	PR c++/104225
+ 	* g++.dg/cpp0x/nsdmi-template21.C: New test.
+ 	* g++.dg/cpp0x/nsdmi-template21a.C: New test.
+ 
+ 2022-05-06  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-05-06   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/102059
+ 	* gcc.target/powerpc/pr102059-4.c: New test.
+ 
+ 2022-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105198
+ 	* gcc.dg/torture/pr105198.c: New testcase.
+ 
+ 2022-05-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104402
+ 	* gcc.dg/torture/pr104402.c: New testcase.
+ 
+ 2022-04-27  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	Backported from master:
+ 	2022-04-25  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/105339
+ 	* gcc.target/i386/sse-14.c: Add tests for new macro.
+ 
+ 2022-04-24  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/104228
+ 	PR fortran/104570
+ 	* gfortran.dg/asan_associate_58.f90: New test.
+ 	* gfortran.dg/asan_associate_59.f90: New test.
+ 	* gfortran.dg/associate_58.f90: New test.
+ 
+ 2022-04-21  Fritz Reese  <foreese@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2022-04-21  Fritz Reese  <foreese@gcc.gnu.org>
+ 
+ 	PR fortran/105310
+ 	* gfortran.dg/dec_union_12.f90: New test.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100786
+ 	* gcc.dg/torture/pr100786.c: New testcase.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103361
+ 	* g++.dg/torture/pr103361.C: New testcase.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103596
+ 	* gcc.dg/torture/pr103596.c: New testcase.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/104337
+ 	* gcc.dg/debug/pr104337.c: New testcase.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104786
+ 	* gcc.dg/pr104786.c: New testcase.
+ 
+ 2022-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105226
+ 	* gcc.dg/pr105226.c: New testcase.
+ 
+ 2022-04-11  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	Backported from master:
+ 	2022-04-11  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR target/104253
+ 	* gcc.target/powerpc/pr104253.c: Add missing dg- before
+ 	require-effective-target.  Prune warning about -mfloat128
+ 	possibly not being fully supported.
+ 
+ 2022-04-05  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2022-03-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* gcc.dg/ipa/pr103083-1.c: New test.
+ 	* gcc.dg/ipa/pr103083-2.c: Likewise.
+ 
+ 2022-03-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-03-04  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/87496
+ 	PR target/104208
+ 	* gcc.target/powerpc/pr104208-1.c: New test.
+ 	* gcc.target/powerpc/pr104208-2.c: Likewise.
+ 	* gcc.target/powerpc/pr87496-2.c: Swap long double options to trigger
+ 	the expected error.
+ 	* gcc.target/powerpc/pr87496-3.c: Likewise.
+ 
+ 2022-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/104453
+ 	* gcc.target/i386/pr104453.c: New testcase.
+ 
+ 2022-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2022-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104511
+ 	* gcc.dg/pr104511.c: New testcase.
+ 
+ 2022-03-12  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/99708
+ 	* gcc.target/powerpc/pr99708.c: Revert 2022-03-05 patch.
+ 
+ 2022-03-06  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/104253
+ 	* gcc.target/powerpc/pr104253.c: New test.  Backport change made
+ 	to the master branch on 2022-02-14.
+ 
+ 2022-03-06  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/99708
+ 	* gcc.target/powerpc/pr99708.c: New test.  Backport change to
+ 	master branch on 2022-02-17.
+ 
+ 2022-02-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-02-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104619
+ 	* gfortran.dg/derived_constructor_comps_7.f90: New test.
+ 
+ 2022-02-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	Revert:
+ 	2022-02-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92918
+ 	* g++.dg/lookup/using66.C: New test.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103237
+ 	* gcc.dg/torture/pr103237.c: New testcase.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/103181
+ 	PR middle-end/103248
+ 	* gcc.dg/torture/pr103181.c: New testcase.
+ 	* gcc.dg/pr103248.c: Likewise.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-11-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102798
+ 	* gcc.dg/pr102798.c: New testcase.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-10-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/102762
+ 	* gcc.dg/torture/pr102762.c: New testcase.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100923
+ 	* gcc.dg/torture/pr100923.c: New testcase.
+ 
+ 2022-02-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101158
+ 	* gfortran.dg/pr101158.f90: New testcase.
+ 
+ 2022-02-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103627
+ 	* gcc.target/powerpc/pr103627-3.c: New test.
+ 
+ 2022-02-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103627
+ 	* gcc.target/powerpc/pr103627-1.c: New test.
+ 	* gcc.target/powerpc/pr103627-2.c: New test.
+ 
+ 2022-02-10  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-02-10  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104458
+ 	* gcc.target/i386/pr104458.c: Replace long with long long.
+ 
+ 2022-02-10  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-02-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104469
+ 	* gcc.target/i386/pr104469.c: New test.
+ 
+ 2022-02-09  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104458
+ 	* gcc.target/i386/pr104458.c: New test.
+ 
+ 2022-02-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104451
+ 	* gcc.target/i386/pr104451.c: New test.
+ 
+ 2022-02-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-02-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104311
+ 	* gfortran.dg/transfer_simplify_15.f90: New test.
+ 
+ 2022-02-02  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-02-01  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104331
+ 	* gfortran.dg/eoshift_9.f90: New test.
+ 
+ 2022-02-02  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	Backported from master:
+ 	2022-02-01  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	* gcc.dg/pr95115.c: New test.
+ 
+ 2022-01-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-15  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/83079
+ 	* gfortran.dg/transfer_char_kind4.f90: New test.
+ 
+ 2022-01-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104127
+ 	* gfortran.dg/transfer_simplify_11.f90: Fix logic.
+ 	* gfortran.dg/transfer_simplify_13.f90: New test.
+ 
+ 2022-01-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/104227
+ 	* gfortran.dg/transfer_check_6.f90: New test.
+ 
+ 2022-01-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101762
+ 	* gfortran.dg/pr101762.f90: New test.
+ 
+ 2022-01-25  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/67804
+ 	* gfortran.dg/pr93604.f90: Adjust to changed diagnostics.
+ 	* gfortran.dg/pr67804.f90: New test.
+ 
+ 2022-01-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103782
+ 	* gfortran.dg/overload_4.f90: New test.
+ 
+ 2022-01-20  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2022-01-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103692
+ 	* gfortran.dg/pr102520.f90: Adjust error messages.
+ 	* gfortran.dg/pr103692.f90: New test.
+ 
+ 2022-01-15  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-16  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/102976
+ 	* gcc.target/powerpc/pr102976.c: New test.
+ 
+ 2022-01-15  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-09-14  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/mma-builtin-6.c: Add second call to xxsetacc
+ 	built-in.  Update instruction counts.
+ 
+ 2022-01-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/lto25.adb: New test.
+ 	* gnat.dg/opt96.adb: Likewise.
+ 	* gnat.dg/opt96_pkg.ads, gnat.dg/opt96_pkg.adb: New helper.
+ 
+ 2022-01-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102332
+ 	* gfortran.dg/pr102332.f90: New test.
+ 
+ 2022-01-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2020-11-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/97953
+ 	* gcc.dg/pr97953.c: New testcase.
+ 
+ 2022-01-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-05-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100551
+ 	* gfortran.dg/pr100551.f90: New test.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103418
+ 	* gfortran.dg/move_alloc_8.f90: Adjust error messages.
+ 	* gfortran.dg/pointer_intent_9.f90: New test.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR libfortran/103634
+ 	* gfortran.dg/intrinsic_pack_6.f90: New test.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103778
+ 	* gfortran.dg/illegal_boz_arg_3.f90: New test.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-18  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/101329
+ 	* gfortran.dg/pr101329.f90: New test.
+ 
+ 2021-12-19  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103588
+ 	* gfortran.dg/pr103588.f90: New test.
+ 
+ 2021-12-19  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-03  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/103505
+ 	* gfortran.dg/pr103505.f90: New test.
+ 
+ 2021-12-19  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103412
+ 	* gfortran.dg/illegal_boz_arg_2.f90: New test.
+ 
+ 2021-12-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-08  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103610
+ 	* gfortran.dg/shape_11.f90: New test.
+ 
+ 2021-12-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103606
+ 	* gfortran.dg/pr103606.f90: New test.
+ 
+ 2021-12-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103717
+ 	* gfortran.dg/do_check_19.f90: New test.
+ 
+ 2021-12-15  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-30  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/102347
+ 	* gcc.target/powerpc/pr102347.c: New test.
+ 
+ 2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	* gfortran.dg/array_constructor_54.f90: New test.
+ 
+ 2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102717
+ 	* gfortran.dg/reshape_shape_2.f90: New test.
+ 
+ 2021-12-11  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103411
+ 	* gfortran.dg/pr68153.f90: Adjust test to improved check.
+ 	* gfortran.dg/reshape_7.f90: Likewise.
+ 	* gfortran.dg/reshape_9.f90: New test.
+ 
+ 2021-12-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103607
+ 	* gfortran.dg/pr103607.f90: New test.
+ 
+ 2021-11-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/103392
+ 	* gfortran.dg/bound_simplification_7.f90: New test.
+ 
+ 2021-11-25  Jan Hubicka  <jh@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-11-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/103052
+ 	* gcc.c-torture/execute/pr103052.c: New test.
+ 
+ 2021-11-23  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/101985
+ 	* gcc.target/powerpc/pr101985-1.c: New.
+ 	* gcc.target/powerpc/pr101985-2.c: New.
+ 
+ 2021-11-22  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-21  Harald Anlauf  <anlauf@gmx.de>
+ 		    Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR fortran/99061
+ 	* gfortran.dg/dec_math_5.f90: New test.
+ 
+ 2021-11-22  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-11-19  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* gcc.target/s390/20211119.c: New test.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102816
+ 	* gfortran.dg/pr102816.f90: New test.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-15  Harald Anlauf  <anlauf@gmx.de>
+ 		    Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/102685
+ 	* gfortran.dg/derived_constructor_char_1.f90: Fix invalid code.
+ 	* gfortran.dg/pr70931.f90: Likewise.
+ 	* gfortran.dg/transfer_simplify_2.f90: Likewise.
+ 	* gfortran.dg/pr102685.f90: New test.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-06  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102715
+ 	* gfortran.dg/pr68019.f90: Adjust error message.
+ 	* gfortran.dg/pr102715.f90: New test.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-11-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102817
+ 	* gfortran.dg/pr102817.f90: New test.
+ 
+ 2021-11-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-10  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/99348
+ 	PR fortran/102521
+ 	* gfortran.dg/parameter_array_init_8.f90: New test.
+ 
+ 2021-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/102714
+ 	* gcc.dg/ipa/pr102714.c: New testcase.
+ 
+ 2021-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100672
+ 	* gcc.dg/torture/pr100672.c: New testcase.
+ 
+ 2021-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100253
+ 	* g++.dg/pr100253.C: New testcase.
+ 
+ 2021-11-03  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/102842
+ 	* g++.target/arm/pr102842.C: New test.
+ 
+ 2021-11-02  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-10-21  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/102505
+ 	* g++.dg/torture/pr102505.C: New test.
+ 
+ 2021-10-27  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/102761
+ 	* gcc.target/i386/pr102761.c: New test.
+ 
+ 2021-10-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102716
+ 	* gfortran.dg/shape_10.f90: New test.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102046
+ 	* gcc.dg/vect/pr102046.c: New testcase.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101925
+ 	* gcc.dg/sso-16.c: New testcase.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101373
+ 	PR tree-optimization/101868
+ 	* gcc.dg/lto/pr101868_0.c: New testcase.
+ 	* gcc.dg/lto/pr101868_1.c: Likewise.
+ 	* gcc.dg/lto/pr101868_2.c: Likewise.
+ 	* gcc.dg/lto/pr101868_3.c: Likewise.
+ 
+ 2021-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101824
+ 	* gcc.dg/tree-ssa/pr101824.c: New testcase.
+ 
+ 2021-10-11  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/102622
+ 	* gcc.c-torture/execute/bitfld-10.c: New test.
+ 
+ 2021-10-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102458
+ 	* gfortran.dg/pr102458b.f90: New test.
+ 
+ 2021-10-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-10-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102458
+ 	* gfortran.dg/pr102458.f90: New test.
+ 
+ 2021-10-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-07-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR c++/95520
+ 	* g++.dg/coroutines/pr95520.C: New test.
+ 
+ 2021-09-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/82314
+ 	* gfortran.dg/pr82314.f90: New test.
+ 
+ 2021-09-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-29  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102520
+ 	* gfortran.dg/pr102520.f90: New test.
+ 
+ 2021-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-13  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/85130
+ 	* gfortran.dg/substr_6.f90: Revert commit r8-7574, adding again
+ 	test that was erroneously considered as illegal.
+ 
+ 2021-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102287
+ 	* gfortran.dg/intent_out_14.f90: New test.
+ 
+ 2021-09-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/102366
+ 	* gfortran.dg/pr102366.f90: New test.
+ 
+ 2021-09-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* lib/target-supports.exp (no_fsanitize_address): Add missing bits.
+ 	* gcc.dg/pr91441.c: Likewise.
+ 	* gcc.dg/pr96260.c: Likewise.
+ 	* gcc.dg/pr96307.c: Likewise.
+ 	* g++.dg/abi/anon4.C: Likewise.
+ 
+ 2021-09-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.target/sparc/20210917-1.c: New test.
+ 
+ 2021-09-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-07  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101327
+ 	* gfortran.dg/pr101327.f90: New test.
+ 
+ 2021-09-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-09-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/98490
+ 	* gfortran.dg/bounds_check_23.f90: New test.
+ 
+ 2021-09-14  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-09-07  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR target/97142
+ 	* gcc.target/powerpc/pr97142.c: New test.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2020-12-29  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/97612
+ 	* gfortran.dg/structure_constructor_17.f90: New test.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-22  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/98565
+ 	* gfortran.dg/associated_target_7.f90 : New test.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2020-12-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/97694
+ 	PR fortran/97723
+ 	* gfortran.dg/select_rank_5.f90: New test.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-07  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93701
+ 	* gfortran.dg/associate_54.f90: New test.
+ 	* gfortran.dg/associate_55.f90: New test.
+ 	* gfortran.dg/associate_56.f90: New test.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/98472
+ 	* gfortran.dg/elemental_function_5.f90 : New test.
+ 
+ 2021-09-10  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-04-20  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/100110
+ 	* gfortran.dg/pdt_31.f03: New test.
+ 	* gfortran.dg/pdt_26.f03: Reduce 'builtin_malloc' count from 9
+ 	to 8.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101394
+ 	* gcc.dg/torture/pr101394.c: New testcase.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101173
+ 	PR tree-optimization/101280
+ 	* gcc.dg/torture/pr101173.c: New testcase.
+ 	* gcc.dg/tree-ssa/loop-interchange-16.c: New file.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101105
+ 	* gcc.dg/torture/pr101105.c: New testcase.
+ 
+ 2021-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101009
+ 	* gcc.dg/torture/pr101009.c: New testcase.
+ 
+ 2021-09-03  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-08-19  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/101849
+ 	* gcc.target/powerpc/pr101849.c: New test.
+ 
+ 2021-09-03  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-07-02  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/mma-builtin-7.c: New test.
+ 	* gcc.target/powerpc/mma-builtin-8.c: New test.
+ 
+ 2021-08-30  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-05-06  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/46691
+ 	PR fortran/99819
+ 	* gfortran.dg/class_dummy_6.f90: New test.
+ 	* gfortran.dg/class_dummy_7.f90: New test.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-04-03  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/99818
+ 	* gfortran.dg/coarray_48.f90: New test.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-27  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93924
+ 	PR fortran/93925
+ 	* gfortran.dg/proc_ptr_52.f90 : New test.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-01-08  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/93794
+ 	* gfortran.dg/deferred_character_35.f90 : New test.
+ 
+ 2021-08-28  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-03-13  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/99125
+ 	* gfortran.dg/alloc_deferred_comp_1.f90: New test.
+ 
+ 2021-08-27  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/101472
+ 	* gcc.target/i386/avx512f-pr101472.c: New test.
+ 	* gcc.target/i386/avx512vl-pr101472.c: New test.
+ 
+ 2021-08-26  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-08-24  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/98411
+ 	* gfortran.dg/pr98411.f90: Adjust testcase options to restrict to
+ 	F2008, and verify case of implicit SAVE.
+ 
+ 2021-08-25  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/101471
+ 	* gcc.target/i386/avx512f-pr101471.c: New test.
+ 
+ 2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102035
+ 	* gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c: New test.
+ 	* gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c: Likewise.
+ 	* gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c: Likewise.
+ 	* gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c: Likewise.
+ 	* gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c: Likewise.
+ 	* gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c: Likewise.
+ 	* gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c: Likewise.
+ 	* gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c: Likewise.
+ 
+ 2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* lib/target-supports.exp (check_effective_target_arm_cmse_hw):
+ 	New function.
+ 
+ 2021-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/97565
+ 	* g++.dg/lto/pr97565_0.C: New testcase.
+ 	* g++.dg/lto/pr97565_1.C: Likewise.
+ 
+ 2021-08-23  Christophe Lyon  <christophe.lyon@foss.st.com>
+ 
+ 	Backported from master:
+ 	2021-08-06  Christophe Lyon  <christophe.lyon@foss.st.com>
+ 
+ 	PR target/101723
+ 	* gcc.target/arm/pr69245.c: Make sure to emit code for fn1, fix
+ 	typo.
+ 
+ 2021-08-23  Christophe Lyon  <christophe.lyon@foss.st.com>
+ 
+ 	Backported from master:
+ 	2021-08-06  Christophe Lyon  <christophe.lyon@foss.st.com>
+ 
+ 	PR target/101723
+ 	* gcc.target/arm/attr-neon3.c: Fix typo.
+ 	* gcc.target/arm/pragma_fpu_attribute_2.c: Fix typo.
+ 
+ 2021-08-23  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-05  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/101723
+ 	* gcc.target/arm/cortex-m55-nofp-flag-hard.c: Update expected output.
+ 	* gcc.target/arm/cortex-m55-nofp-flag-softfp.c: Likewise.
+ 	* gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/mve_fpu1.c: Convert to dg-do assemble.
+ 	Add a non-no-op function body.
+ 	* gcc.target/arm/mve/intrinsics/mve_fpu2.c: Likewise.
+ 	* gcc.target/arm/attr-neon.c: Tighten scan-assembler tests.
+ 	* gcc.target/arm/attr-neon2.c: Use -Ofast, convert test to use
+ 	check-function-bodies.
+ 	* gcc.target/arm/attr-neon3.c: Likewise.
+ 	* gcc.target/arm/pr69245.c: Tighten scan-assembler match, but allow
+ 	multiple instances.
+ 	* gcc.target/arm/pragma_fpu_attribute.c: Likewise.
+ 	* gcc.target/arm/pragma_fpu_attribute_2.c: Likewise.
+ 
+ 2021-08-19  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-08-19  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR testsuite/101969
+ 	* gcc.dg/pr78213.c: Fix up for '--enable-checking=release' etc.
+ 
+ 2021-08-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-08-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* gcc.dg/pr78213.c: Restore testing.
+ 
+ 2021-08-17  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/100305
+ 	* gcc.c-torture/compile/pr100305.c: New test.
+ 
+ 2021-08-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/100788
+ 	* gcc.dg/pr100788.c: New test.
+ 
+ 2021-07-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-21  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101514
+ 	* gfortran.dg/pr101514.f90: New test.
+ 
+ 2021-07-30  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-23  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101536
+ 	* gfortran.dg/pr101536.f90: New test.
+ 
+ 2021-07-29  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/101531
+ 	* gcc.target/powerpc/pr101129.c: Adjust.
+ 
+ 2021-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/96435
+ 	* gdc.dg/pr96435.d: New test.
+ 
+ 2021-07-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/101084
+ 	* gfortran.dg/fmt_nonchar_3.f90: New test.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101640
+ 	* gdc.dg/pr101640.d: New test.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101490
+ 	* gdc.dg/pr101490.d: New test.
+ 	* gdc.test/fail_compilation/fail22144.d: New test.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101441
+ 	* gdc.test/compilable/b19002.d: New test.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101127
+ 	* gdc.dg/pr101127a.d: New test.
+ 	* gdc.dg/pr101127b.d: New test.
+ 
+ 2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/101619
+ 	* gdc.test/fail_compilation/fail7424b.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424c.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424d.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424e.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424f.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424g.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424h.d: Update test.
+ 	* gdc.test/fail_compilation/fail7424i.d: Update test.
+ 	* gdc.test/compilable/test22133.d: New test.
+ 	* gdc.test/fail_compilation/fail22133.d: New test.
+ 
+ 2021-07-20  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2021-07-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/101066
+ 	* gcc.dg/ipa/pr101066.c: New test.
+ 
+ 2021-07-20  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/100182
+ 	* gcc.target/i386/pr71245-1.c: Remove.
+ 	* gcc.target/i386/pr71245-2.c: Ditto.
+ 
+ 2021-07-19  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/101129
+ 	* gcc.target/powerpc/pr101129.c: New.
+ 
+ 2021-07-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-07-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100949
+ 	* gfortran.dg/pr100949.f90: New test.
+ 
+ 2021-07-12  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2021-07-06  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	PR fortran/100227
+ 	* gfortran.dg/implied_do_io_7.f90: New test.
+ 
+ 2021-07-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/101087
+ 	* g++.dg/cpp0x/noexcept70.C: New test.
+ 
+ 2021-06-24  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-06-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/101175
+ 	* gcc.target/i386/pr101175.c: New test.
+ 
+ 2021-06-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-06-16  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/95501
+ 	PR fortran/95502
+ 	* gfortran.dg/pr95502.f90: New test.
+ 
+ 2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/100856
+ 	* gcc.target/arm/acle/pr100856.c: New test.
+ 	* gcc.target/arm/multilib.exp: Add tests for cde options.
+ 
+ 2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-06-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/101016
+ 	* gcc.target/arm/mve/intrinsics/pr101016.c: New test.
+ 
+ 2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-06-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/99939
+ 	* gcc.target/arm/cmse/cmse-18.c: Add separate scan-assembler
+ 	directives check for target is v8.1-m.main+mve or not before
+ 	comparing the assembly output.
+ 	* gcc.target/arm/cmse/cmse-20.c: New test.
+ 
+ 2021-06-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/100777
+ 	* gcc.target/powerpc/pr100777.c: New test.
+ 
+ 2021-06-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-06-10  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/mma-builtin-4.c (__builtin_vsx_build_pair): Add
+ 	tests.  Update expected counts.
+ 	* gcc.target/powerpc/mma-builtin-5.c (__builtin_mma_build_acc): Add
+ 	tests.  Update expected counts.
+ 
+ 2021-06-18  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2021-05-31  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/99842
+ 	* g++.target/powerpc/pr99842.C: New.
+ 
+ 2021-06-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/101029
+ 	* g++.dg/ext/array4.C: New test.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100934
+ 	* gcc.dg/torture/pr100934.c: New testcase.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/100791
+ 	* gcc.dg/pr100791.c: New testcase.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100509
+ 	* gcc.dg/pr100509.c: New testcase.
+ 
+ 2021-06-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100492
+ 	* gcc.dg/torture/pr100492.c: New testcase.
+ 
+ 2021-06-16  José Rui Faustino de Sousa  <jrfsousa@gmail.com>
+ 
+ 	PR fortran/82376
+ 	* gfortran.dg/PR82376.f90: New test.
+ 
+ 2021-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100999
+ 	* gdc.test/compilable/staticforeach.d: Add new tests.
+ 	* gdc.test/fail_compilation/diag16976.d: Likewise.
+ 	* gdc.test/fail_compilation/fail117.d: Likewise.
+ 	* gdc.test/fail_compilation/fail238_m32.d: Likewise.
+ 	* gdc.test/fail_compilation/fail238_m64.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424b.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424c.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424d.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424e.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424f.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424g.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424h.d: Likewise.
+ 	* gdc.test/fail_compilation/fail7424i.d: Likewise.
+ 	* gdc.test/fail_compilation/fail9766.d: Likewise.
+ 	* gdc.test/fail_compilation/ice9406.d: Likewise.
+ 	* gdc.test/compilable/extra-files/minimal/object.d: New file.
+ 	* gdc.test/compilable/interpret5.d: New test.
+ 	* gdc.test/compilable/minimal3.d: New test.
+ 	* gdc.test/compilable/test21742.d: New test.
+ 	* gdc.test/compilable/test22006.d: New test.
+ 	* gdc.test/fail_compilation/b12504.d: New test.
+ 	* gdc.test/fail_compilation/fail22006.d: New test.
+ 	* gdc.test/fail_compilation/test21927.d: New test.
+ 	* gdc.test/fail_compilation/test21939.d: New test.
+ 
+ 2021-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100967
+ 	* gdc.dg/pr100967.d: New test.
+ 
+ 2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100964
+ 	* gdc.test/compilable/betterCarray.d: Add test cases.
+ 
+ 2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100935
+ 	* gdc.test/compilable/aggr_alignment.d: Add test cases.
+ 
+ 2021-06-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/100102
+ 	* g++.dg/cpp0x/alias-decl-72.C: New test.
+ 	* g++.dg/cpp0x/alias-decl-72a.C: New test.
+ 
+ 2021-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100882
+ 	* gdc.dg/pr100882a.d: New test.
+ 	* gdc.dg/pr100882b.d: New test.
+ 	* gdc.dg/pr100882c.d: New test.
+ 	* gdc.dg/pr100882d.d: New test.
+ 
+ 2021-06-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-06-04  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/99839
+ 	* gfortran.dg/inline_matmul_25.f90: New test.
+ 
+ 2021-06-04  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-19  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/100333
+ 	* gcc.target/arm/cmse/pr100333.c: New test.
+ 
+ 2021-06-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-21  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/98777
+ 	* gcc.target/riscv/pr98777.c: New.
+ 
+ 2021-06-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-20  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/98722
+ 	* g++.target/s390/pr98722.C: New.
+ 
+ 2021-06-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-12  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/97969
+ 	* gcc.target/arm/pr97969.c: New.
+ 
+ 2021-06-01  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99725
+ 	* gcc.target/arm/cmse/pr99725.c: New test.
+ 
+ 2021-06-01  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100797
+ 	PR c++/95719
+ 	* g++.dg/inherit/virtual15.C: New test.
+ 	* g++.dg/inherit/virtual15a.C: New test.
+ 
+ 2021-05-28  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-05-17  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/98411
+ 	* gfortran.dg/pr98411.f90: New test.
+ 
+ 2021-05-25  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-10  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99960
+ 	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c:
+ 	Update now that we're (correctly) using full 128-bit vector
+ 	loads/stores.
+ 	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c:
+ 	Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c:
+ 	Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c:
+ 	Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vuninitializedq_int.c: Likewise.
+ 	* gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c:
+ 	Likewise.
+ 
+ 2021-05-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/derived_type7.adb, gnat.dg/derived_type7.ads: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100489
+ 	* g++.dg/cpp2a/desig18.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/80456
+ 	* g++.dg/cpp0x/constexpr-volatile3.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100054
+ 	* g++.dg/cpp1y/lambda-generic-local-class1.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100032
+ 	* g++.dg/cpp0x/alias-decl-equiv1.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/91933
+ 	* g++.dg/cpp0x/constexpr-base7.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99180
+ 	PR c++/93295
+ 	PR c++/93867
+ 	PR c++/95486
+ 	* g++.dg/cpp2a/class-deduction-alias5.C: New test.
+ 	* g++.dg/cpp2a/class-deduction-alias6.C: New test.
+ 	* g++.dg/cpp2a/class-deduction-alias7.C: New test.
+ 	* g++.dg/cpp2a/class-deduction-alias8.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/41723
+ 	* g++.dg/template/friend71.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/52625
+ 	* g++.dg/template/friend70.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/92918
+ 	* g++.dg/lookup/using66.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/96673
+ 	* g++.dg/cpp1y/nsdmi-aggr13.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99901
+ 	* g++.dg/cpp1z/inline-var9.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/96311
+ 	* g++.dg/cpp1y/lambda-generic-Wunused.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/95870
+ 	* g++.dg/cpp0x/lambda/lambda-nsdmi10.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99201
+ 	* g++.dg/cpp1z/constexpr-if-lambda4.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/99643
+ 	* g++.dg/cpp0x/initlist-new5.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/90664
+ 	* g++.dg/cpp1z/noexcept-type24.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/91217
+ 	* g++.dg/opt/nrv20.C: New test.
+ 
+ 2021-05-20  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/97938
+ 	* g++.dg/cpp2a/lambda-pack-init6.C: New test.
+ 
+ 2021-05-20  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR testsuite/96488
+ 	* gnat.dg/unchecked_convert5.adb: Do not run on PowerPC64 LE.
+ 	* gnat.dg/unchecked_convert6.adb: Likewise.
+ 
+ 2021-05-20  Alex Coplan  <alex.coplan@arm.com>
+ 	    Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	PR target/99977
+ 	* gcc.target/arm/pr99977.c: New test.
+ 
+ 2021-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100566
+ 	* gcc.dg/torture/pr100566.c: New testcase.
+ 
+ 2021-05-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* gcc.dg/pr100563.c: New test.
+ 
+ 2021-05-12  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/100571
+ 	* gcc.dg/Wstringop-overflow-67.c: New test.
+ 
+ 2021-05-12  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99988
+ 	* gcc.target/aarch64/pr99988.c: New test.
+ 
+ 2021-05-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/100450
+ 	* c-c++-common/gomp/pr100450.c: New test.
+ 
+ 2021-05-06  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backported from master:
+ 	2021-04-30  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	PR rtl-optimization/100225
+ 	PR rtl-optimization/84878
+ 	* gcc.dg/pr100225.c: New test.
+ 
+ 2021-05-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	Backported from master:
+ 	2020-09-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* gcc.target/arm/pr95646.c: Fix testism.
+ 
+ 2021-05-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2020-06-23  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/95646
+ 	* gcc.target/arm/pr95646.c: New test.
+ 
+ 2021-05-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc.c-torture/execute/20210505-1.c: New test.
+ 
+ 2021-05-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-05-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100274
+ 	* gfortran.dg/argument_checking_25.f90: New test.
+ 
+ 2021-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98786
+ 	* gcc.dg/torture/pr98786.c: New testcase.
+ 
+ 2021-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100278
+ 	* gcc.dg/tree-ssa/pr100278.c: New testcase.
+ 
+ 2021-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/100254
+ 	* g++.dg/opt/pr100254.C: New test.
+ 
+ 2021-04-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c++/98032
+ 	* g++.dg/pr98032.C: New testcase.
+ 
+ 2021-04-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96513
+ 	* gcc.dg/torture/pr96513.c: New testcase.
+ 
+ 2021-04-29  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* gfortran.dg/gomp/map-5.f90: New test.
+ 
+ 2021-04-28  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-04-23  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/100182
+ 	* gcc.target/i386/pr100182.c: New test.
+ 	* gcc.target/i386/pr71245-1.c (dg-final): Xfail scan-assembler-not.
+ 	* gcc.target/i386/pr71245-2.c (dg-final): Ditto.
+ 
+ 2021-04-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-04-24  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/100154
+ 	* gfortran.dg/pr100154.f90: New test.
+ 
+ 2021-04-27  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/98952
+ 	* gcc.target/powerpc/pr98952.c: New test.  Test backported from
+ 	trunk change on 4/23, 886b6c1e8af502b69e3f318b9830b73b88215878.
+ 
+ 2021-04-26  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99647
+ 	* gcc.c-torture/compile/pr99647.c: New test.
+ 
+ 2021-04-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100053
+ 	* gcc.dg/torture/pr100053.c: New testcase.
+ 	* gcc.dg/tree-ssa/ssa-fre-93.c: Likewise.
+ 
+ 2021-04-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/99954
+ 	* gcc.dg/torture/pr99954.c: New testcase.
+ 
+ 2021-04-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/99880
+ 	* gcc.dg/torture/pr99880.c: New testcase.
+ 
+ 2021-04-24  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/96796
+ 	* gcc.c-torture/compile/pr96796.c: New test.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/pr99929_1.c: New file.
+ 	* gcc.target/aarch64/sve/pr99929_2.c: Likewise.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/98119
+ 	* gcc.target/aarch64/sve/pr98119.c: New test.
+ 
+ 2021-04-23  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	Backported from master:
+ 	2021-04-07  Bin Cheng  <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/98736
+ 	* gcc.c-torture/execute/pr98736.c: New test.
+ 
+ 2021-04-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2020-07-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc.dg/torture/20200727-0.c: New testcase.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/99249
+ 	* gcc.target/aarch64/sve/acle/general/pr99246.c: New test.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/97141
+ 	PR rtl-optimization/98726
+ 	* gcc.c-torture/compile/pr97141.c: New test.
+ 	* gcc.c-torture/compile/pr98726.c: Likewise.
+ 	* gcc.target/aarch64/sve/pr97141.c: Likewise.
+ 	* gcc.target/aarch64/sve/pr98726.c: Likewise.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-03-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/98136
+ 	* g++.dg/pr98136.C: New test.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/98268
+ 	* gcc.target/aarch64/sve/pr98268-1.c: New test.
+ 	* gcc.target/aarch64/sve/pr98268-2.c: Likewise.
+ 
+ 2021-04-23  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-03-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/99726
+ 	* gcc.target/i386/pr99726.c: New test.
+ 
+ 2021-04-22  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR target/99216
+ 	* g++.target/aarch64/sve/pr99216.C: New test.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-09-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97051
+ 	* g++.dg/cpp2a/is-constant-evaluated11.C: New test.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-07-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/95486
+ 	* g++.dg/cpp2a/class-deduction-alias3.C: New test.
+ 
+ 2021-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	Backported from master:
+ 	2021-04-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR testsuite/100176
+ 	* g++.dg/compat/struct-layout-1_generate.c: Add missing return.
+ 	* gcc.dg/compat/struct-layout-1_generate.c: Likewise.
+ 
+ 2021-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/100148
+ 	* g++.dg/opt/pr100148.C: New test.
+ 
+ 2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-10-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/97052
+ 	* g++.dg/cpp2a/concepts-defarg2.C: New test.
+ 
+ 2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/95434
+ 	* g++.dg/cpp2a/lambda-generic9.C: New test.
+ 
+ 2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-14  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/83476
+ 	PR c++/99885
+ 	* g++.dg/cpp1z/class-deduction85.C: New test.
+ 	* g++.dg/template/ref11.C: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/100111
+ 	* g++.dg/cpp0x/constexpr-100111.C: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/99767
+ 	* gcc.target/aarch64/pr99767.c: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/99833
+ 	* g++.dg/cpp1z/pr99833.C: New test.
+ 	* g++.dg/cpp2a/pr99833.C: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/99905
+ 	* gcc.target/i386/pr99905.c: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/99830
+ 	* gcc.dg/pr99830.c: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/99990
+ 	* gcc.dg/pr99990.c: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/99849
+ 	* gcc.dg/lto/pr99849_0.c: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/98601
+ 	* gcc.dg/torture/pr98601.c: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/99859
+ 	* g++.dg/cpp1y/constexpr-99859-1.C: New test.
+ 	* g++.dg/cpp1y/constexpr-99859-2.C: New test.
+ 	* g++.dg/cpp2a/constexpr-new18.C: New test.
+ 	* g++.dg/cpp2a/constexpr-new19.C: New test.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/99863
+ 	* gcc.target/i386/pr99863.c: New test.
+ 
+ 2021-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/98457
+ 	* gdc.dg/pr98457.d: New test.
+ 
+ 2021-04-19  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2020-11-27  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR c/97880
+ 	* gcc.dg/goacc/tile-1.c: New test.
+ 
+ 2021-04-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/opt92.adb: New test.
+ 
+ 2021-04-18  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-04-16  Harald Anlauf  <anlauf@gmx.de>
+ 		    Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/63797
+ 	* gfortran.dg/pr63797.f90: New test.
+ 
+ 2021-04-18  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-11  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+ 
+ 	PR middle-end/98088
+ 	* c-c++-common/goacc/collapse-2.c: New.
+ 
+ 2021-04-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/100048
+ 	* gcc.target/aarch64/sve/pr100048.c: New test.
+ 
+ 2021-04-12  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/99817
+ 	* gfortran.dg/coarray/dummy_2.f90: New test.
+ 
+ 2021-04-10  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97973
+ 	* g++.dg/conversion/real-to-int1.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99806
+ 	* g++.dg/concepts/abbrev10.C: New test.
+ 	* g++.dg/concepts/abbrev11.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-03  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/91416
+ 	* g++.dg/other/gc7.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99831
+ 	* g++.dg/other/gc6.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99331
+ 	* g++.dg/warn/Wconversion5.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	DR 1312
+ 	PR c++/99176
+ 	* g++.dg/cpp0x/constexpr-nullptr-2.C: Adjust dg-error.
+ 	* g++.dg/cpp0x/constexpr-cast2.C: New test.
+ 	* g++.dg/cpp0x/constexpr-cast3.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99120
+ 	* g++.dg/warn/Wshadow-17.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/99374
+ 	* g++.dg/cpp1z/noexcept-type23.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-02-05  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/98947
+ 	* g++.dg/cpp2a/volatile5.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/97966
+ 	* g++.dg/cpp0x/noexcept63.C: New test.
+ 
+ 2021-04-09  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-01-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/98333
+ 	* g++.dg/cpp0x/noexcept62.C: New test.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c	Tue Jun 28 08:54:28 2022
***************
*** 1,13 ****
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O -Wextra" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
!   C = -1 << 1, /* { dg-warning "10:left shift of negative value|not an integer constant" } */
!   /* { dg-error "left operand of shift expression" "shift" { target c++ } .-1 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
--- 1,12 ----
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O -Wextra" } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
!   C = -1 << 1, /* { dg-warning "10:left shift of negative value|not an integer constant" "" { target { c || { c++11 && c++17_down } } } } */
!   /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-1 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
*************** left (int x)
*** 23,32 ****
    int r = 0;
    r += z << x;
    r += o << x;
!   r += m << x; /* { dg-warning "10:left shift of negative value" } */
    r += 0 << x;
    r += 1 << x;
!   r += -1 << x; /* { dg-warning "11:left shift of negative value" } */
    r += -1U << x;
    return r;
  }
--- 22,31 ----
    int r = 0;
    r += z << x;
    r += o << x;
!   r += m << x; /* { dg-warning "10:left shift of negative value" "" { target { c || { c++11 && c++17_down } } } } */
    r += 0 << x;
    r += 1 << x;
!   r += -1 << x; /* { dg-warning "11:left shift of negative value" "" { target { c || { c++11 && c++17_down } } } } */
    r += -1U << x;
    return r;
  }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,7 ----
+ /* PR c/65179 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -Wshift-negative-value -fwrapv" } */
+ /* { dg-additional-options "-std=c++03" { target c++ } } */
+ /* { dg-additional-options "-std=c90" { target c } } */
+ 
+ #include "Wshift-negative-value-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c	Tue Jun 28 08:54:28 2022
***************
*** 1,14 ****
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O -Wshift-negative-value" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
    C = -1 << 1, /* { dg-warning "10:left shift of negative value" } */
!   /* { dg-error "not an integer constant" "no constant" { target c++ } .-1 } */
!   /* { dg-error "left operand of shift expression" "shift" { target c++ } .-2 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
--- 1,13 ----
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O -Wshift-negative-value" } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
    C = -1 << 1, /* { dg-warning "10:left shift of negative value" } */
!   /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */
!   /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c	Tue Jun 28 08:54:28 2022
***************
*** 1,14 ****
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O -Wextra -Wno-shift-negative-value" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
    C = -1 << 1,
!   /* { dg-error "not an integer constant" "no constant" { target c++ } .-1 } */
!   /* { dg-error "left operand of shift expression" "shift" { target c++ } .-2 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
--- 1,13 ----
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O -Wextra -Wno-shift-negative-value" } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
    C = -1 << 1,
!   /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */
!   /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c	Tue Jun 28 08:54:28 2022
***************
*** 1,14 ****
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
    C = -1 << 1,
!   /* { dg-error "not an integer constant" "no constant" { target c++ } .-1 } */
!   /* { dg-error "left operand of shift expression" "shift" { target c++ } .-2 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
--- 1,13 ----
  /* PR c/65179 */
  /* { dg-do compile } */
  /* { dg-options "-O" } */
  
  enum E {
    A = 0 << 1,
    B = 1 << 1,
    C = -1 << 1,
!   /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */
!   /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */
    D = 0 >> 1,
    E = 1 >> 1,
    F = -1 >> 1
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c/65179 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -Wextra -fwrapv" } */
+ 
+ #include "Wshift-negative-value-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c/65179 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -Wshift-negative-value -fwrapv" } */
+ 
+ #include "Wshift-negative-value-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c/65179 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -fwrapv" } */
+ 
+ #include "Wshift-negative-value-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-1.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-1.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-1.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-1.c	Tue Jun 28 08:54:28 2022
***************
*** 1,7 ****
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-O" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1)
  #define INTM2 (sizeof (int) * __CHAR_BIT__ - 2)
--- 1,6 ----
***************
*** 12,27 ****
  #define LONG_LONG_MIN (-__LONG_LONG_MAX__-1)
  
  int i1 = 1 << INTM1;
! int i2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" } */
! int i3 = 10 << INTM2; /* { dg-warning "requires 35 bits to represent" } */
! int i4 = __INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" } */
! int i5 = __INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" } */
  int i6 = -1 << INTM1;
! int i7 = -9 << INTM1; /* { dg-warning "requires 36 bits to represent" } */
! int i8 = -10 << INTM2; /* { dg-warning "requires 35 bits to represent" } */
! int i9 = -__INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" } */
! int i10 = -__INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" } */
! int i11 = INT_MIN << 1; /* { dg-warning "requires 33 bits to represent" } */
  
  int r1 = 1 >> INTM1;
  int r2 = 9 >> INTM1;
--- 11,26 ----
  #define LONG_LONG_MIN (-__LONG_LONG_MAX__-1)
  
  int i1 = 1 << INTM1;
! int i2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i3 = 10 << INTM2; /* { dg-warning "requires 35 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i4 = __INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i5 = __INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
  int i6 = -1 << INTM1;
! int i7 = -9 << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i8 = -10 << INTM2; /* { dg-warning "requires 35 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i9 = -__INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i10 = -__INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! int i11 = INT_MIN << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
  
  int r1 = 1 >> INTM1;
  int r2 = 9 >> INTM1;
*************** int r9 = -__INT_MAX__ >> 2;
*** 35,63 ****
  int r10 = -__INT_MAX__ >> INTM1;
  
  unsigned u1 = 1 << INTM1;
! unsigned u2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" } */
  unsigned u3 = 2U << INTM1;
  unsigned u4 = 9U << INTM1;
  unsigned u5 = 10U << INTM2;
  
  long long int l1 = 1LL << LLONGM1;
! long long int l2 = 9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" } */
! long long int l3 = 10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" } */
! long long int l4 = __LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" } */
! long long int l5 = __LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" } */
  long long int l6 = -1LL << LLONGM1;
! long long int l7 = -9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" } */
! long long int l8 = -10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" } */
! long long int l9 = -__LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" } */
! long long int l10 = -__LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" } */
! long long int l11 = LONG_LONG_MIN << 1; /* { dg-warning "requires 65 bits to represent" } */
  
  void
  fn (void)
  {
    const int a = 10;
    const __SIZE_TYPE__ b = INTM1;
!   int k1 = a << b; /* { dg-warning "requires 36 bits to represent" } */
!   int k2 = 10 << b; /* { dg-warning "requires 36 bits to represent" } */
!   int k3 = a << INTM1; /* { dg-warning "requires 36 bits to represent" } */
  }
--- 34,62 ----
  int r10 = -__INT_MAX__ >> INTM1;
  
  unsigned u1 = 1 << INTM1;
! unsigned u2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
  unsigned u3 = 2U << INTM1;
  unsigned u4 = 9U << INTM1;
  unsigned u5 = 10U << INTM2;
  
  long long int l1 = 1LL << LLONGM1;
! long long int l2 = 9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l3 = 10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l4 = __LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l5 = __LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
  long long int l6 = -1LL << LLONGM1;
! long long int l7 = -9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l8 = -10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l9 = -__LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l10 = -__LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
! long long int l11 = LONG_LONG_MIN << 1; /* { dg-warning "requires 65 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
  
  void
  fn (void)
  {
    const int a = 10;
    const __SIZE_TYPE__ b = INTM1;
!   int k1 = a << b; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
!   int k2 = 10 << b; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
!   int k3 = a << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */
  }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-10.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-10.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-10.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-10.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c++/55095 */
+ /* { dg-do compile { target int32 } } */
+ /* { dg-options "-O -Wshift-overflow=2 -fwrapv" } */
+ 
+ #include "Wshift-overflow-5.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-11.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-11.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-11.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-11.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c++/55095 */
+ /* { dg-do compile { target int32 } } */
+ /* { dg-options "-Wshift-overflow=1 -fwrapv" } */
+ 
+ #include "Wshift-overflow-6.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-12.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-12.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-12.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-12.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c++/55095 */
+ /* { dg-do compile { target int32 } } */
+ /* { dg-options "-Wshift-overflow=2 -fwrapv" } */
+ 
+ #include "Wshift-overflow-7.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-2.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-2.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-2.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-2.c	Tue Jun 28 08:54:28 2022
***************
*** 1,7 ****
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-O -Wno-shift-overflow" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1)
  #define INTM2 (sizeof (int) * __CHAR_BIT__ - 2)
--- 1,6 ----
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-5.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-5.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-5.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-5.c	Tue Jun 28 08:54:28 2022
***************
*** 1,11 ****
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-O -Wshift-overflow=2" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1)
  #define LLONGM1 (sizeof (long long) * __CHAR_BIT__ - 1)
  
! int i1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" } */
! unsigned u1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" } */
! long long int l1 = 1LL << LLONGM1; /* { dg-warning "requires 65 bits to represent" } */
--- 1,10 ----
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-O -Wshift-overflow=2" } */
  
  #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1)
  #define LLONGM1 (sizeof (long long) * __CHAR_BIT__ - 1)
  
! int i1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! unsigned u1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! long long int l1 = 1LL << LLONGM1; /* { dg-warning "requires 65 bits to represent" "" { target { c || c++11_down } } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-6.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-6.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-6.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-6.c	Tue Jun 28 08:54:28 2022
***************
*** 1,7 ****
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-Wshift-overflow=1" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
  int i00 = 0b1 << 31;
  int i01 = 0b10 << 30;
--- 1,6 ----
*************** int i27 = 0b1000000000000000000000000000
*** 34,37 ****
  int i28 = 0b10000000000000000000000000000 << 3;
  int i29 = 0b100000000000000000000000000000 << 2;
  int i30 = 0b1000000000000000000000000000000 << 1;
! int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" } */
--- 33,36 ----
  int i28 = 0b10000000000000000000000000000 << 3;
  int i29 = 0b100000000000000000000000000000 << 2;
  int i30 = 0b1000000000000000000000000000000 << 1;
! int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++17_down } } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-7.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-7.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-7.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-7.c	Tue Jun 28 08:54:28 2022
***************
*** 1,37 ****
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-Wshift-overflow=2" } */
- /* { dg-additional-options "-std=c++11" { target c++ } } */
  
! int i00 = 0b1 << 31; /* { dg-warning "requires 33 bits to represent" } */
! int i01 = 0b10 << 30; /* { dg-warning "requires 33 bits to represent" } */
! int i02 = 0b100 << 29; /* { dg-warning "requires 33 bits to represent" } */
! int i03 = 0b1000 << 28; /* { dg-warning "requires 33 bits to represent" } */
! int i04 = 0b10000 << 27; /* { dg-warning "requires 33 bits to represent" } */
! int i05 = 0b100000 << 26; /* { dg-warning "requires 33 bits to represent" } */
! int i06 = 0b1000000 << 25; /* { dg-warning "requires 33 bits to represent" } */
! int i07 = 0b10000000 << 24; /* { dg-warning "requires 33 bits to represent" } */
! int i08 = 0b100000000 << 23; /* { dg-warning "requires 33 bits to represent" } */
! int i09 = 0b1000000000 << 22; /* { dg-warning "requires 33 bits to represent" } */
! int i10 = 0b10000000000 << 21; /* { dg-warning "requires 33 bits to represent" } */
! int i11 = 0b100000000000 << 20; /* { dg-warning "requires 33 bits to represent" } */
! int i12 = 0b1000000000000 << 19; /* { dg-warning "requires 33 bits to represent" } */
! int i13 = 0b10000000000000 << 18; /* { dg-warning "requires 33 bits to represent" } */
! int i14 = 0b100000000000000 << 17; /* { dg-warning "requires 33 bits to represent" } */
! int i15 = 0b1000000000000000 << 16; /* { dg-warning "requires 33 bits to represent" } */
! int i16 = 0b10000000000000000 << 15; /* { dg-warning "requires 33 bits to represent" } */
! int i17 = 0b100000000000000000 << 14; /* { dg-warning "requires 33 bits to represent" } */
! int i18 = 0b1000000000000000000 << 13; /* { dg-warning "requires 33 bits to represent" } */
! int i19 = 0b10000000000000000000 << 12; /* { dg-warning "requires 33 bits to represent" } */
! int i20 = 0b100000000000000000000 << 11; /* { dg-warning "requires 33 bits to represent" } */
! int i21 = 0b1000000000000000000000 << 10; /* { dg-warning "requires 33 bits to represent" } */
! int i22 = 0b10000000000000000000000 << 9; /* { dg-warning "requires 33 bits to represent" } */
! int i23 = 0b100000000000000000000000 << 8; /* { dg-warning "requires 33 bits to represent" } */
! int i24 = 0b1000000000000000000000000 << 7; /* { dg-warning "requires 33 bits to represent" } */
! int i25 = 0b10000000000000000000000000 << 6; /* { dg-warning "requires 33 bits to represent" } */
! int i26 = 0b100000000000000000000000000 << 5; /* { dg-warning "requires 33 bits to represent" } */
! int i27 = 0b1000000000000000000000000000 << 4; /* { dg-warning "requires 33 bits to represent" } */
! int i28 = 0b10000000000000000000000000000 << 3; /* { dg-warning "requires 33 bits to represent" } */
! int i29 = 0b100000000000000000000000000000 << 2; /* { dg-warning "requires 33 bits to represent" } */
! int i30 = 0b1000000000000000000000000000000 << 1; /* { dg-warning "requires 33 bits to represent" } */
! int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" } */
--- 1,36 ----
  /* PR c++/55095 */
  /* { dg-do compile { target int32 } } */
  /* { dg-options "-Wshift-overflow=2" } */
  
! int i00 = 0b1 << 31; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i01 = 0b10 << 30; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i02 = 0b100 << 29; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i03 = 0b1000 << 28; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i04 = 0b10000 << 27; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i05 = 0b100000 << 26; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i06 = 0b1000000 << 25; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i07 = 0b10000000 << 24; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i08 = 0b100000000 << 23; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i09 = 0b1000000000 << 22; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i10 = 0b10000000000 << 21; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i11 = 0b100000000000 << 20; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i12 = 0b1000000000000 << 19; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i13 = 0b10000000000000 << 18; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i14 = 0b100000000000000 << 17; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i15 = 0b1000000000000000 << 16; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i16 = 0b10000000000000000 << 15; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i17 = 0b100000000000000000 << 14; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i18 = 0b1000000000000000000 << 13; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i19 = 0b10000000000000000000 << 12; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i20 = 0b100000000000000000000 << 11; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i21 = 0b1000000000000000000000 << 10; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i22 = 0b10000000000000000000000 << 9; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i23 = 0b100000000000000000000000 << 8; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i24 = 0b1000000000000000000000000 << 7; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i25 = 0b10000000000000000000000000 << 6; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i26 = 0b100000000000000000000000000 << 5; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i27 = 0b1000000000000000000000000000 << 4; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i28 = 0b10000000000000000000000000000 << 3; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i29 = 0b100000000000000000000000000000 << 2; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i30 = 0b1000000000000000000000000000000 << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */
! int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++17_down } } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-8.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-8.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-8.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-8.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c++/55095 */
+ /* { dg-do compile { target int32 } } */
+ /* { dg-options "-O -fwrapv" } */
+ 
+ #include "Wshift-overflow-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-9.c gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-9.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/Wshift-overflow-9.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/Wshift-overflow-9.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,7 ----
+ /* PR c++/55095 */
+ /* { dg-do compile { target int32 } } */
+ /* { dg-options "-O -Wshift-overflow -fwrapv" } */
+ /* { dg-additional-options "-std=gnu90" { target c } } */
+ /* { dg-additional-options "-std=c++03" { target c++ } } */
+ 
+ #include "Wshift-overflow-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/builtin-convertvector-3.c gcc-10.4.0/gcc/testsuite/c-c++-common/builtin-convertvector-3.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/builtin-convertvector-3.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/builtin-convertvector-3.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ typedef int v4si __attribute__((vector_size (4 * sizeof (int))));
+ typedef double v4df __attribute__((vector_size (4 * sizeof (double))));
+ double
+ foo (void)
+ {
+   v4si a = { 1, 2, 3, 4 };
+   return __builtin_convertvector (a, v4df)[1];
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/cpp/pr104147.c gcc-10.4.0/gcc/testsuite/c-c++-common/cpp/pr104147.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/cpp/pr104147.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/cpp/pr104147.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,27 ----
+ /* PR preprocessor/104147 */
+ /* { dg-do run } */
+ 
+ #define X(x,y) 	x y
+ #define STR_(x) #x
+ #define STR(x) 	STR_(x)
+ const char *str =
+ STR(X(Y,Y))
+ #define Y()
+ STR(X(Y,Y))
+ #undef Y
+ STR(X(Y,Y))
+ #define Y()
+ STR(X(Y,Y))
+ STR(X(Y,
+ Y))
+ STR(X(Y
+ ,Y))
+ ;
+ 
+ int
+ main ()
+ {
+   if (__builtin_strcmp (str, "Y YY YY YY YY YY Y") != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/cpp/va-opt-10.c gcc-10.4.0/gcc/testsuite/c-c++-common/cpp/va-opt-10.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/cpp/va-opt-10.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/cpp/va-opt-10.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ /* PR preprocessor/105732 */
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu99" { target c } } */
+ /* { dg-options "-std=c++20" { target c++ } } */
+ 
+ #define m1(p1, p2, p3) p3
+ #define m2(p1, ...) 1##__VA_OPT__(foo)
+ #define m3(...) m1(1, 2, m2)
+ #define m4(p1, ...) 1 __VA_OPT__()
+ #define m5(...) m1(1, 2, m4)
+ #if m3(,)(,)
+ #else
+ #error
+ #endif
+ #if m5(,)(,)
+ #else
+ #error
+ #endif
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/cpp/va-opt-9.c gcc-10.4.0/gcc/testsuite/c-c++-common/cpp/va-opt-9.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/cpp/va-opt-9.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/cpp/va-opt-9.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,20 ----
+ /* PR preprocessor/89971 */
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu99" { target c } } */
+ /* { dg-options "-std=c++20" { target c++ } } */
+ 
+ int a, c;
+ #define m1(...) a /##__VA_OPT__(b) c
+ #define m2(...) a /##__VA_OPT__() c
+ #define m3(...) a##__VA_OPT__()##b = 1
+ #define m4(...) a##__VA_OPT__(b c d)##e = 2
+ 
+ int
+ foo (void)
+ {
+   int d = m1();
+   int e = m2(1);
+   int m3(1 2 3);
+   int m4();
+   return d + e + ab + ae;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/goacc/collapse-2.c gcc-10.4.0/gcc/testsuite/c-c++-common/goacc/collapse-2.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/goacc/collapse-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/goacc/collapse-2.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,56 ----
+ /* Test for ICE as reported in PR98088.  */
+ 
+ int i, j;
+ 
+ void
+ f1 (void)
+ {
+   #pragma acc parallel
+   #pragma acc loop collapse (2)
+   for (i = 5; i > 5; i--)
+ 	for (j = 5; j > 0; j--)
+ 	  ;
+ }
+ 
+ void
+ f2 (void)
+ {
+   #pragma acc parallel
+   #pragma acc loop collapse (2)
+   for (i = 0; i < 5; i++)
+ 	for (j = 5; j > 0; j--)
+ 	  ;
+ }
+ 
+ void
+ f3 (void)
+ {
+   #pragma acc parallel
+   #pragma acc loop collapse (2)
+   for (i = 5; i >= 0; i--)
+ 	for (j = 5; j >= 0; j--)
+ 	  ;
+ }
+ 
+ void f4 ()
+ {
+   #pragma acc parallel loop tile(2, 3)
+   for (int i = 0; i > 8; i++)
+     for (int j = 0; j > 8; j++);
+ }
+ 
+ void f5 ()
+ {
+   #pragma acc parallel loop tile(2, 3)
+   for (int i = 0; i > 8; i++)
+     for (long j = 0; j > 8; j++);
+ }
+ 
+ void
+ f6 (int a[32][32])
+ {
+   #pragma acc parallel loop collapse(2)
+   for (int i = 16; i > 8; i--)
+     for (int j = 16; j > 8; j--)
+       a[i][j] = i + j;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr100450.c gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr100450.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr100450.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr100450.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,20 ----
+ /* PR c/100450 */
+ /* { dg-do compile } */
+ /* { dg-options "-fopenmp -save-temps -Wunknown-pragmas" } */
+ 
+ #define TEST(T) { \
+      {T} \
+ }
+ #define CLAUSES reduction(+:red)
+ #define PARALLEL_FOR(X) TEST({ \
+ _Pragma("omp for CLAUSES") \
+ X \
+ })
+ 
+ void foo()
+ {
+   int red = 0;
+   int A[3] = {};
+   #pragma omp parallel shared(red)
+   PARALLEL_FOR( for(int i=0; i < 3; i++) red += A[i]; )
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr101535-1.c gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr101535-1.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr101535-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr101535-1.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,31 ----
+ /* PR middle-end/101535 */
+ 
+ void
+ foo (void)
+ {
+   int a = 1, i;
+   #pragma omp target data map(to:a)
+   #pragma omp for lastprivate(i)	/* { dg-error "lastprivate variable 'i' is private in outer context" } */
+   for (i = 1; i < 2; i++)
+     ;
+ }
+ 
+ void
+ bar (void)
+ {
+   int a = 1, i;
+   #pragma omp target private(i)
+   #pragma omp for lastprivate(i)	/* { dg-error "lastprivate variable 'i' is private in outer context" } */
+   for (i = 1; i < 2; i++)
+     ;
+ }
+ 
+ void
+ baz (void)
+ {
+   int a = 1, i;
+   #pragma omp target firstprivate(i)
+   #pragma omp for lastprivate(i)	/* { dg-error "lastprivate variable 'i' is private in outer context" } */
+   for (i = 1; i < 2; i++)
+     ;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr101535-2.c gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr101535-2.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr101535-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr101535-2.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ /* PR middle-end/101535 */
+ 
+ void
+ foo (void)
+ {
+   int a = 1, i;
+   #pragma omp target map(tofrom:i)
+   #pragma omp for lastprivate(i)
+   for (i = 1; i < 2; i++)
+     ;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr102431.c gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr102431.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/gomp/pr102431.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/gomp/pr102431.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ /* PR middle-end/102431 */
+ 
+ struct S { int s; } s;
+ void add (struct S *, struct S *);
+ void init (struct S *);
+ void bar (int i, struct S *);
+ #pragma omp declare reduction (+:struct S:add (&omp_out, &omp_in)) initializer (init (&omp_priv))
+ 
+ void
+ foo (void)
+ {
+   int i;
+   #pragma omp loop bind(teams) reduction(+:s)
+   for (i = 0; i < 8; i++)
+     bar (i, &s);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/pr100785.c gcc-10.4.0/gcc/testsuite/c-c++-common/pr100785.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/pr100785.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/pr100785.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,21 ----
+ /* PR inline-asm/100785 */
+ 
+ struct S { int a : 1; };
+ 
+ void
+ foo (struct S *x)
+ {
+   __asm__ ("" : "+m" (x->a));	/* { dg-error "address of bit-field" } */
+ }				/* { dg-error "invalid lvalue in 'asm' output 0" "" { target c } .-1 } */
+ 				/* { dg-error "memory input 1 is not directly addressable" "" { target c } .-2 } */
+ void
+ bar (struct S *x)
+ {
+   __asm__ ("" : "=m" (x->a));	/* { dg-error "address of bit-field" } */
+ }				/* { dg-error "invalid lvalue in 'asm' output 0" "" { target c } .-1 } */
+ 
+ void
+ baz (struct S *x)
+ {
+   __asm__ ("" : : "m" (x->a));	/* { dg-error "address of bit-field" } */
+ }				/* { dg-error "memory input 0 is not directly addressable" "" { target c } .-1 } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/pr101537.c gcc-10.4.0/gcc/testsuite/c-c++-common/pr101537.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/pr101537.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/pr101537.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,26 ----
+ /* PR c/101537 */
+ /* { dg-do compile } */
+ /* { dg-options "-Wconversion" } */
+ 
+ int
+ foo ()
+ {
+   int aaa = 1;
+   unsigned char bbb = 0;
+   bbb |= aaa ? 1 : 0;
+   return bbb;
+ }
+ 
+ int
+ bar (unsigned char x, int f)
+ {
+   x |= f ? 1 : 0;
+   return x;
+ }
+ 
+ int
+ baz (unsigned char x, int f)
+ {
+   x = x | f ? 1 : 0;
+   return x;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/pr103881.c gcc-10.4.0/gcc/testsuite/c-c++-common/pr103881.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/pr103881.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/pr103881.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,20 ----
+ /* PR c/103881 */
+ /* { dg-do compile } */
+ /* { dg-options "-Wconversion" } */
+ 
+ unsigned char bar (void);
+ 
+ void
+ foo (void)
+ {
+   unsigned char t = 0;
+   t |= bar ();
+   t |= bar () & bar ();	/* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */
+   t &= bar () & bar ();	/* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */
+   t = bar () & bar ();
+ 
+   unsigned char a = bar ();
+   t |= a & a;
+   t |= bar () & a;		/* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */
+   t |= a & bar ();		/* { dg-bogus "conversion from 'int' to 'unsigned char' may change value" "" { xfail c++ } } */
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/pr105186.c gcc-10.4.0/gcc/testsuite/c-c++-common/pr105186.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/pr105186.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/pr105186.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ /* PR c++/105186 */
+ /* { dg-do compile } */
+ 
+ __attribute__((__int128)) int i;	/* { dg-warning "'__int128' attribute directive ignored" } */
+ __attribute__((__int128__)) int j;	/* { dg-warning "'__int128' attribute directive ignored" } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/pr105998.c gcc-10.4.0/gcc/testsuite/c-c++-common/pr105998.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/pr105998.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/pr105998.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ /* PR middle-end/105998 */
+ 
+ typedef int __attribute__((__vector_size__ (sizeof (long long)))) V;
+ 
+ V v;
+ 
+ long long
+ foo (void)
+ {
+   long long l = (long long) ((0 | v) - ((V) { } == 0));
+   return l;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-2.c gcc-10.4.0/gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-2.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/ubsan/float-div-by-zero-2.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+ /* { dg-shouldfail "ubsan" } */
+ /* { dg-options "-fsanitize=float-divide-by-zero -fno-sanitize-recover=float-divide-by-zero -fsanitize-recover=integer-divide-by-zero" } */
+ 
+ int
+ main (void)
+ {
+   volatile float a = 1.3f;
+   volatile double b = 0.0;
+   volatile int c = 4;
+   volatile float res;
+ 
+   res = a / b;
+ 
+   return 0;
+ }
+ 
+ /* { dg-output "division by zero" } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/c-c++-common/ubsan/pr64888.c gcc-10.4.0/gcc/testsuite/c-c++-common/ubsan/pr64888.c
*** gcc-10.3.0/gcc/testsuite/c-c++-common/ubsan/pr64888.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/c-c++-common/ubsan/pr64888.c	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,27 ----
+ /* PR middle-end/64888 */
+ /* { dg-do compile { target fopenmp } } */
+ /* { dg-options "-fopenmp -fsanitize=undefined" } */
+ 
+ int a, b;
+ 
+ void
+ foo ()
+ {
+   int c;
+ #pragma omp parallel default (none) shared (a, b) private (c)
+   {
+     c = a / b;	/* { dg-bogus "not specified in enclosing" } */
+     (void) c;
+   }
+ #pragma omp task default (none) shared (a, b) private (c)
+   {
+     c = a << b;	/* { dg-bogus "not specified in enclosing" } */
+     (void) c;
+   }
+ #pragma omp teams default (none) shared (a, b)
+   {
+     int d[a];	/* { dg-bogus "not specified in enclosing" } */
+     d[0] = 0;
+     (void) d[0];
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/abi/anon4.C gcc-10.4.0/gcc/testsuite/g++.dg/abi/anon4.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/abi/anon4.C	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/g++.dg/abi/anon4.C	Tue Jun 28 08:54:28 2022
***************
*** 1,4 ****
--- 1,5 ----
  // PR c++/65209
+ // { dg-additional-options "-fno-pie" { target sparc*-*-* } }
  // { dg-final { scan-assembler-not "comdat" } }
  
  // Everything involving the anonymous namespace bits should be private, not
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/abi/lambda-defarg1.C gcc-10.4.0/gcc/testsuite/g++.dg/abi/lambda-defarg1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/abi/lambda-defarg1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/abi/lambda-defarg1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/91241
+ // { dg-do compile { target c++11 } }
+ 
+ struct A {
+   int *b(const int & = []() -> int { return 0; }(),
+ 	 const int & = []() -> int { return 0; }());
+ };
+ int *A::b(const int &, const int &) { b(); return 0; }
+ // { dg-final { scan-assembler "_ZN1A1bERKiS1_" } }
+ // { dg-final { scan-assembler "_ZZN1A1bERKiS1_Ed_NKUlvE_clEv" } }
+ // { dg-final { scan-assembler "_ZZN1A1bERKiS1_Ed0_NKUlvE_clEv" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/asan/pr104449.C gcc-10.4.0/gcc/testsuite/g++.dg/asan/pr104449.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/asan/pr104449.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/asan/pr104449.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // PR sanitizer/104449
+ // { dg-do compile }
+ // { dg-options "-fexceptions -fsanitize=address -fstack-check=generic" }
+ 
+ void bar (int *);
+ struct A { A (); ~A (); };
+ 
+ void
+ foo (int n)
+ {
+   A b;
+   {
+     int a[n];
+     bar (a);
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c gcc-10.4.0/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
*** gcc-10.3.0/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c	Tue Jun 28 08:54:28 2022
*************** subvalues (struct entry *e, char *p, cha
*** 983,988 ****
--- 983,990 ----
        if (e[0].len != 0)
  	output_FNB ('B', e);
        return 1;
+     default:
+       return 0;
      }
  }
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/concepts/abbrev10.C gcc-10.4.0/gcc/testsuite/g++.dg/concepts/abbrev10.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/concepts/abbrev10.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/concepts/abbrev10.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/99806
+ // { dg-do compile { target c++14 } }
+ // { dg-additional-options "-fconcepts" }
+ 
+ struct S {
+   void f(auto, auto, int = 3);
+   void f2(auto, auto, int = 3) { }
+   template<typename T> static T g(T, auto, int = 3);
+ };
+ 
+ void
+ g ()
+ {
+   S::g(1, 2);
+   S s;
+   s.f(1, 2);
+   s.f2(1, 2);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/concepts/abbrev11.C gcc-10.4.0/gcc/testsuite/g++.dg/concepts/abbrev11.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/concepts/abbrev11.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/concepts/abbrev11.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/99806
+ // { dg-do compile { target c++14 } }
+ // { dg-additional-options "-fconcepts" }
+ 
+ template <typename T> concept C = requires (T a) { a.f(0); };
+ struct S {
+   void f(auto) noexcept(B);
+   static constexpr bool B = true;
+ };
+ static_assert(C<S>, "");
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/concepts/pr105061.C gcc-10.4.0/gcc/testsuite/g++.dg/concepts/pr105061.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/concepts/pr105061.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/concepts/pr105061.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/105061
+ 
+ template <typename T, int U, int V>
+ struct A { T : V, u : U; };
+ template <int U, int V>
+ struct B { unsigned : V, u : U; };
+ typedef unsigned uns;
+ template <int U, int V>
+ struct C { uns : V, u : U; };
+ 
+ A<unsigned int, 4, 5> a = { 13 };
+ B<5, 6> b = { 26 };
+ C<8, 9> c = { 42 };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/conversion/real-to-int1.C gcc-10.4.0/gcc/testsuite/g++.dg/conversion/real-to-int1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/conversion/real-to-int1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/conversion/real-to-int1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/97973
+ 
+ void (*foo[1])(const int &);
+ void (*foo2[1])(const double &);
+ 
+ template<typename>
+ void f ()
+ {
+   (foo[0])(1.1);
+   (foo2[0])(1);
+ }
+ 
+ void
+ g ()
+ {
+   f<char> ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/coroutines/pr95520.C gcc-10.4.0/gcc/testsuite/g++.dg/coroutines/pr95520.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/coroutines/pr95520.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/coroutines/pr95520.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,29 ----
+ // { dg-do run }
+ // { dg-output "coroutine name: MyFoo" }
+ #include <coroutine>
+ #include <cstdio>
+ 
+ struct pt
+ {
+     using handle_t = std::coroutine_handle<pt>;
+     auto get_return_object() noexcept { return handle_t::from_promise(*this); }
+ 
+     std::suspend_never initial_suspend () const noexcept { return {}; }
+     std::suspend_never final_suspend () const noexcept { return {}; }
+     void return_void() const noexcept {}
+     void unhandled_exception() const noexcept {}
+ };
+ 
+ template <> struct std::coroutine_traits<pt::handle_t>
+     { using promise_type = pt; };
+ 
+ static pt::handle_t MyFoo ()
+ { 
+     printf ("coroutine name: %s\n", __builtin_FUNCTION());
+     co_return;
+ }
+ 
+ int main()
+ {
+     MyFoo ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/100102
+ // { dg-do compile { target c++11 } }
+ 
+ template<int()> struct ratio;
+ template<class T, class U> struct duration {
+   static constexpr int _S_gcd();
+   template<class> using __is_harmonic = ratio<_S_gcd>;
+   using type = __is_harmonic<int>;
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-72a.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/100102
+ // { dg-do compile { target c++11 } }
+ 
+ template<int> struct ratio;
+ template<class T> struct duration {
+   static constexpr int _S_gcd();
+   template<class> using __is_harmonic = ratio<(duration::_S_gcd)()>;
+   using type = __is_harmonic<int>;
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-equiv1.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-equiv1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-equiv1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-equiv1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/100032
+ // { dg-do compile { target c++11 } }
+ 
+ template <template<class> class> struct X { };
+ template <class> struct Y { };
+ template <class T> using Z = const Y<T>;
+ 
+ template <class T> using W = Z<T>;
+ using U = X<Z>;
+ using U = X<W>;
+ 
+ using T = X<Y>;
+ using T = X<Z>;			// { dg-error "conflicting declaration" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-variadic2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-variadic2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-variadic2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/alias-decl-variadic2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/86355
+ // { dg-do compile { target c++11 } }
+ 
+ template <int...> struct integral_constant {
+   static const int value = 1;
+ };
+ template <class... T> using mp_all = integral_constant<T::value...>;
+ template <class... T> using check2 = mp_all<mp_all<T..., integral_constant<0>>>;
+ check2<> x;
+ 
+ template <class T, class U> struct assert_same;
+ template <class T> struct assert_same<T,T> { };
+ assert_same<decltype(x),integral_constant<1>> a;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-100111.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/100111
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-fno-elide-constructors" }
+ 
+ struct A {};
+ struct B : A { int b; constexpr B (A x) : A(x), b() {} };
+ struct C { B c; constexpr C () : c({}) {} } d;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-104472.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-104472.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-104472.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-104472.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/104472
+ // { dg-options "-O2 -frounding-math" }
+ // { dg-add-options float16 }
+ // { dg-require-effective-target float16 }
+ 
+ typedef short __attribute__((__vector_size__ (16))) V;
+ typedef _Float16 __attribute__((__vector_size__ (16))) F;
+ 
+ V v = __builtin_convertvector (__builtin_convertvector ((V){5534}, F), V) < 8;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-base7.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-base7.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-base7.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-base7.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/91933
+ // { dg-do compile { target c++11 } }
+ 
+ struct NoMut1 { int a, b; };
+ struct NoMut3 : NoMut1 {
+   constexpr NoMut3(int a, int b) : NoMut1{a, b} {}
+ };
+ void mutable_subobjects() {
+   constexpr NoMut3 nm3 = {1, 2};
+   struct A {
+     void f() {
+       static_assert(nm3.a == 1, "");
+     }
+   };
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // DR 1312 - Simulated reinterpret_cast in constant expressions.
+ // PR c++/99176
+ // { dg-do compile { target c++11 } }
+ 
+ static int i;
+ constexpr void *vp0 = nullptr;
+ constexpr void *vpi = &i;
+ constexpr int *p1 = (int *) vp0; // { dg-error "cast from .void\\*. is not allowed" }
+ constexpr int *p2 = (int *) vpi; // { dg-error "cast from .void\\*. is not allowed" "integer_zerop" { xfail *-*-* } }
+ constexpr int *p3 = static_cast<int *>(vp0); // { dg-error "cast from .void\\*. is not allowed" }
+ constexpr int *p4 = static_cast<int *>(vpi); // { dg-error "cast from .void\\*. is not allowed" "integer_zerop" { xfail *-*-* } }
+ constexpr void *p5 = vp0;
+ constexpr void *p6 = vpi;
+ 
+ constexpr int *pi = &i;
+ constexpr bool b = ((int *)(void *) pi == pi); // { dg-error "cast from .void\\*. is not allowed" "integer_zerop" { xfail *-*-* } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast3.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast3.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-cast3.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/99176
+ // { dg-do compile { target c++11 } }
+ 
+ constexpr const int *p = nullptr;
+ constexpr int *q1 = const_cast<int*>(p);
+ constexpr int *q2 = (int *)(const int *) nullptr;
+ 
+ struct B { };
+ struct D : B { };
+ constexpr B *q3 = static_cast<B*>(nullptr);
+ constexpr D *pd = nullptr;
+ constexpr B *pb = nullptr;
+ constexpr B *q4 = static_cast<B*>(pd);
+ constexpr D *q5 = static_cast<D*>(pb);
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-empty16.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-empty16.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-empty16.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-empty16.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/101194
+ // { dg-do compile { target c++11 } }
+ 
+ struct nodefault {
+   constexpr nodefault(int) { }
+ };
+ 
+ constexpr nodefault x[1] = { nodefault{0} };
+ 
+ constexpr nodefault y = x[0];
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-fno-elide-ctors1.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-fno-elide-ctors1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-fno-elide-ctors1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-fno-elide-ctors1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,89 ----
+ // PR c++/104646
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options -fno-elide-constructors }
+ 
+ template <typename _T1> struct pair {
+   _T1 first;
+   int second;
+ };
+ template <typename _Iterator> class __normal_iterator {
+   _Iterator __traits_type;
+ 
+ public:
+   constexpr __normal_iterator() {}
+ };
+ template <typename> class allocator;
+ template <typename> struct allocator_traits;
+ template <typename _Tp> struct allocator_traits<allocator<_Tp>> {
+   using value_type = _Tp;
+   template <typename _Up> using rebind_alloc = allocator<_Up>;
+ };
+ template <typename _Alloc> struct __alloc_traits {
+   typedef allocator_traits<_Alloc> _Base_type;
+   typedef typename _Base_type::value_type &const_reference;
+   template <typename _Tp> struct rebind {
+     typedef typename _Base_type::template rebind_alloc<_Tp> other;
+   };
+ };
+ template <typename _Tp, typename _Alloc> struct _Vector_base {
+   typedef typename __alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type;
+ };
+ template <typename _Tp, typename _Alloc = allocator<_Tp>> class vector {
+ public:
+   typename __alloc_traits<
+       typename _Vector_base<_Tp, _Alloc>::_Tp_alloc_type>::const_reference
+   operator[](long);
+ };
+ enum match_flag_type {};
+ template <typename, typename> class Trans_NS___cxx11_basic_regex;
+ class Trans_NS___cxx11_match_results;
+ enum _RegexExecutorPolicy { _S_auto };
+ template <typename, typename, typename _CharT, typename _TraitsT,
+           _RegexExecutorPolicy, bool>
+ bool __regex_algo_impl(Trans_NS___cxx11_match_results &,
+                        const Trans_NS___cxx11_basic_regex<_CharT, _TraitsT> &);
+ template <typename, typename, typename, bool> class _Executor;
+ template <typename _Ch_type, typename = _Ch_type>
+ class Trans_NS___cxx11_basic_regex {};
+ class Trans_NS___cxx11_match_results : vector<int> {
+   template <typename, typename, typename _Cp, typename _Rp,
+             _RegexExecutorPolicy, bool>
+   friend bool __regex_algo_impl(Trans_NS___cxx11_match_results &,
+                                 const Trans_NS___cxx11_basic_regex<_Cp, _Rp> &);
+ };
+ template <typename _Bi_iter, typename _Alloc, typename _Ch_type,
+           typename _Rx_traits>
+ void regex_search(_Bi_iter, _Alloc,
+                   Trans_NS___cxx11_basic_regex<_Ch_type, _Rx_traits>) {
+   __regex_algo_impl<_Bi_iter, _Alloc, _Ch_type, _Rx_traits, _S_auto, false>;
+ }
+ match_flag_type __regex_algo_impl___flags;
+ template <typename, typename, typename _CharT, typename _TraitsT,
+           _RegexExecutorPolicy, bool>
+ bool __regex_algo_impl(
+     Trans_NS___cxx11_match_results &__m,
+     const Trans_NS___cxx11_basic_regex<_CharT, _TraitsT> &__re) {
+   __normal_iterator<const char *> __e, __s;
+   _Executor<int, int, _TraitsT, false> __executor(__s, __e, __m, __re,
+                                                   __regex_algo_impl___flags);
+   __executor._M_match();
+   return false;
+ }
+ template <typename, typename, typename, bool> class _Executor {
+ public:
+   _Executor(__normal_iterator<const char *>, __normal_iterator<const char *>,
+             vector<int>, Trans_NS___cxx11_basic_regex<char>, match_flag_type);
+   void _M_match() { _M_dfs(); }
+   void _M_dfs();
+   vector<pair<__normal_iterator<char *>>> _M_rep_count;
+ };
+ long _M_rep_once_more___i;
+ template <typename _BiIter, typename _Alloc, typename _TraitsT, bool __dfs_mode>
+ void _Executor<_BiIter, _Alloc, _TraitsT, __dfs_mode>::_M_dfs() {
+   auto __rep_count = _M_rep_count[_M_rep_once_more___i];
+ }
+ char main___trans_tmp_1;
+ void main___trans_tmp_2() {
+   Trans_NS___cxx11_basic_regex<char> re;
+   regex_search(main___trans_tmp_1, main___trans_tmp_2, re);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C	Tue Jun 28 08:54:28 2022
*************** constexpr const void *pv2 = pv0;
*** 163,169 ****
  constexpr void *pv3 = pv2;      // { dg-error "invalid conversion|not a constant expression" }
  constexpr const void *pv4 = pv2;
  
! constexpr X *px4 = pv0;	 // { dg-error "invalid conversion|not a constant expression" }
  
  }
  
--- 163,169 ----
  constexpr void *pv3 = pv2;      // { dg-error "invalid conversion|not a constant expression" }
  constexpr const void *pv4 = pv2;
  
! constexpr X *px4 = pv0;	 // { dg-error "cast from|invalid conversion|not a constant expression" }
  
  }
  
*************** constexpr A *pa3 = pd0;		   // { dg-erro
*** 226,232 ****
  constexpr A *pa4 = static_cast<A*>(pd0);  // { dg-error "ambiguous base" }
  
  constexpr B *pb1 = pa0;		   // { dg-error "invalid conversion|not a constant expression" }
! constexpr B *pb2 = static_cast<B*>(pa0);  // { dg-error "not a constant expression" }
  
  constexpr C *pc1 = pa0;		   // { dg-error "invalid conversion|not a constant expression" }
  constexpr D *pd1 = pa0;		   // { dg-error "ambiguous base|invalid conversion" }
--- 226,232 ----
  constexpr A *pa4 = static_cast<A*>(pd0);  // { dg-error "ambiguous base" }
  
  constexpr B *pb1 = pa0;		   // { dg-error "invalid conversion|not a constant expression" }
! constexpr B *pb2 = static_cast<B*>(pa0);
  
  constexpr C *pc1 = pa0;		   // { dg-error "invalid conversion|not a constant expression" }
  constexpr D *pd1 = pa0;		   // { dg-error "ambiguous base|invalid conversion" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-volatile3.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-volatile3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/constexpr-volatile3.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/constexpr-volatile3.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/80456
+ // { dg-do compile { target c++11 } }
+ 
+ struct A {
+   static constexpr bool test() noexcept { return true; }
+ 
+   void f() volatile {
+     constexpr bool b = test();
+   }
+ };
+ 
+ void g() {
+   A a;
+   a.f();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/extern_template-6.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/extern_template-6.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/extern_template-6.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/extern_template-6.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/99066
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename a> struct basic_string {
+   static const int npos = 1;
+ };
+ template <typename a> const int basic_string<a>::npos;
+ 
+ struct e { template <bool> int f() const; };
+ 
+ template <bool> int e::f() const {
+   return basic_string<char>::npos;
+ }
+ 
+ extern template class basic_string<char>;
+ 
+ // { dg-final { scan-assembler-not "_ZN12basic_stringIcE4nposE" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-new5.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-new5.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-new5.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-new5.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/99643
+ // { dg-do compile { target c++11 } }
+ 
+ struct Foo {};
+ Foo get_foo();
+ 
+ int main() {
+     new Foo[1]{get_foo()};
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-new6.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-new6.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-new6.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-new6.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,39 ----
+ // PR c++/105265
+ // { dg-do run { target c++11 } }
+ 
+ int c;
+ 
+ class Block
+ {
+ public:
+   Block(int n) : data{new char[n]}, size{n}
+   {
+     ++c;
+   }
+ 
+   ~Block()
+   {
+     --c;
+     delete[] data;
+   }
+ 
+ private:
+   char* data;
+   int size;
+ };
+ 
+ struct Cargo
+ {
+   Block const& block;
+ };
+ 
+ int main()
+ {
+   {
+     Cargo* c = new Cargo{{4000}};
+     delete c;
+   }
+   if (c != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-nrv1.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-nrv1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/initlist-nrv1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/initlist-nrv1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,34 ----
+ // PR c++/101442
+ // { dg-do run { target c++11 } }
+ 
+ bool destroyed = false;
+ 
+ struct A
+ {
+   A() {}
+   A(const A &) = delete;
+   A &operator=(const A &) = delete;
+   ~A() {destroyed = true;}
+ };
+ 
+ struct B
+ {
+   const A &a;
+   struct string {
+     string(const char*) { }
+     ~string() { }
+   } s;
+ };
+ 
+ B foo()
+ {
+   B ret{ A{}, "" };
+   return ret;
+ }
+ 
+ int main()
+ {
+   B b = foo();
+   if (!destroyed)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-current-inst1.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-current-inst1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-current-inst1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-current-inst1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/82980
+ // { dg-do compile { target c++11 } }
+ 
+ template <class T>
+ struct Outer
+ {
+   template <class U>
+   void f();
+ 
+   void bar(Outer outer) {
+     [outer](){ outer.f<int>(); };
+   }
+   void baz(Outer *p) {
+     [&](){ p->f<int>(); };
+   }
+ };
+ 
+ int main() { }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi10.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi10.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi10.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nsdmi10.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/95870
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename> struct S {
+   S();
+   int b = []() -> int { enum E {}; return 1; }();
+ };
+ struct C : S<int> {
+   C();
+ };
+ template <typename T> S<T>::S() = default;
+ C::C() {}
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept62.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept62.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept62.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept62.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/98333
+ // { dg-do compile { target c++11 } }
+ 
+ struct T {
+   template <bool N>
+   struct S {
+     S () noexcept (N) {}
+   };
+   int a = __has_nothrow_constructor (S<true>);
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept63.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept63.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept63.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept63.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,63 ----
+ // PR c++/97966
+ // { dg-do compile { target c++11 } }
+ 
+ template <int>
+ struct S1 {
+   __attribute__((used)) S1() noexcept(noexcept(this->foo())) { }
+   void foo();
+ };
+ 
+ template <int>
+ struct S2 {
+   __attribute__((used)) void bar() noexcept(noexcept(this->foo())) { }
+   void foo();
+ };
+ 
+ template <int>
+ struct S3 {
+   void __attribute__((used)) bar() noexcept(noexcept(this->foo())) { }
+   void foo();
+ };
+ 
+ template <int>
+ struct S4 {
+   [[gnu::used]] void bar() noexcept(noexcept(this->foo())) { }
+   void foo();
+ };
+ 
+ template <int>
+ struct S5 {
+   void bar() noexcept(noexcept(this->foo())) __attribute__((used)) { }
+   void foo();
+ };
+ 
+ template <int>
+ struct S6 {
+   template <int>
+   struct N {
+     [[gnu::used]] void bar() noexcept(noexcept(this->foo())) { }
+     void foo();
+   };
+ };
+ 
+ void
+ g ()
+ {
+   S1<1> s1;
+   S2<1> s2;
+   S3<1> s3;
+   S4<1> s4;
+   S5<1> s5;
+   S6<1>::N<1> n;
+ }
+ 
+ // Make sure that we did emit the functions marked with attribute used
+ // even though they're not referenced in this TU.  (Well, the S1()
+ // constructor is.)
+ // { dg-final { scan-assembler "_ZN2S1ILi1EEC1Ev" } }
+ // { dg-final { scan-assembler "_ZN2S1ILi1EEC2Ev" } }
+ // { dg-final { scan-assembler "_ZN2S2ILi1EE3barEv" } }
+ // { dg-final { scan-assembler "_ZN2S3ILi1EE3barEv" } }
+ // { dg-final { scan-assembler "_ZN2S4ILi1EE3barEv" } }
+ // { dg-final { scan-assembler "_ZN2S5ILi1EE3barEv" } }
+ // { dg-final { scan-assembler "_ZN2S6ILi1EE1NILi1EE3barEv" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept70.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept70.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/noexcept70.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/noexcept70.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/101087
+ // { dg-do compile { target c++11 } }
+ 
+ int f();
+ static_assert(noexcept(sizeof(f())), "");
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/101532
+ // { dg-do compile { target c++11 } }
+ 
+ struct A { private: ~A(); };
+ 
+ template<class> struct B { A a = A(); }; // { dg-error "private" }
+ 
+ B<int> b; // { dg-error "deleted" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21a.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21a.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21a.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/nsdmi-template21a.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/104225
+ // { dg-do compile { target c++11 } }
+ 
+ struct A { private: ~A(); };
+ 
+ template<class> struct B { A a = A(); }; // { dg-error "private" }
+ 
+ int main() {
+   new B<int>; // { dg-error "deleted" }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr46.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr46.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/nullptr46.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/nullptr46.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/101443
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-O2" }
+ 
+ decltype(nullptr) foo ();
+ 
+ bool
+ bar ()
+ {
+   return foo () > nullptr || foo () < nullptr;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/pr102305.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/pr102305.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/pr102305.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/pr102305.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,39 ----
+ // PR c++/102305
+ // { dg-do compile { target c++11 } }
+ 
+ namespace std
+ {
+   template<typename _Tp, _Tp __v>
+     struct integral_constant
+     {
+       static constexpr _Tp value = __v;
+       typedef integral_constant<_Tp, __v> type;
+     };
+ 
+   template<typename _Tp, _Tp __v>
+     constexpr _Tp integral_constant<_Tp, __v>::value;
+ 
+   typedef integral_constant<bool, true> true_type;
+   typedef integral_constant<bool, false> false_type;
+ 
+   template<bool __v>
+     using bool_constant = integral_constant<bool, __v>;
+ 
+   template<typename _Tp, typename... _Args>
+     struct is_constructible
+     : public bool_constant<__is_constructible(_Tp, _Args...)>
+     {
+     };
+ }
+ 
+ template<typename>
+ struct A {
+   virtual ~A() = 0;
+ };
+ 
+ struct B {
+   virtual ~B() = 0;
+ };
+ 
+ static_assert(!std::is_constructible<A<int> >::value, "");
+ static_assert(!std::is_constructible<B>::value, "");
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/pr105256.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/pr105256.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp0x/pr105256.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp0x/pr105256.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/105256
+ // { dg-do compile { target c++11 } }
+ 
+ int bar (int &);
+ 
+ struct S {
+   struct T {
+     struct U {
+       int i = bar (i);
+     } u;
+   };
+ };
+ 
+ void
+ foo (S::T *p)
+ {
+   *p = {};
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/104513
+ // { dg-do compile { target c++14 } }
+ 
+ struct A {
+   int a1;
+   short a2, a3;
+   long a4;
+   constexpr A() : a1(42), a2(42), a3(42), a4(42) { return; }
+ };
+ constexpr A a;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-1.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/99859
+ // { dg-do compile { target c++14 } }
+ 
+ constexpr int
+ foo (int *x)
+ {
+   return ++*x;
+ }
+ 
+ struct S { constexpr S () : a(0) { foo (&a); foo (&a); } int a; };
+ constexpr S s = S ();
+ static_assert (s.a == 2, "");
+ 
+ struct R { int *p; };
+ 
+ constexpr int
+ bar (R x)
+ {
+   return ++*x.p;
+ }
+ 
+ struct T { int a = 0; constexpr T () { bar (R{&a}); bar (R{&a}); } };
+ constexpr T t = T ();
+ static_assert (t.a == 2, "");
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-99859-2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/99859
+ // { dg-do compile { target c++14 } }
+ 
+ struct A
+ {
+   int i;
+   constexpr int f() { return i; }
+   constexpr A() : i(0) { i = f(); i = 1; i = f(); }
+ };
+ 
+ constexpr A a = A();
+ static_assert (a.i == 1, "");
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C	Tue Jun 28 08:54:28 2022
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-do compile { target c++14 } }
+ // { dg-additional-options -fno-elide-constructors }
  
  struct A
  {
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-Wunused.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-Wunused.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-Wunused.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-Wunused.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/96311
+ // { dg-do compile { target c++14 } }
+ // { dg-additional-options -Wunused }
+ 
+ auto foo()
+ {
+   constexpr int used = 0;
+   return
+     [](auto unused)
+     {
+       return used;
+     };
+ }
+ 
+ int main()
+ {
+   foo()(42);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class1.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/100054
+ // { dg-do compile { target c++14 } }
+ 
+ template <class T>
+ void f() {
+   struct A { T m{}; };
+   [](auto){ return A{}; };
+ }
+ 
+ template void f<int>();
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/lambda-generic-this4.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/101717
+ // { dg-do compile { target c++14 } }
+ 
+ struct x {
+   static void f() { }
+   void (*_)() = [] { [=](auto) { f(); }(0); };
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr13.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr13.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr13.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr13.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,33 ----
+ // PR c++/96673
+ // { dg-do compile { target c++11 } }
+ 
+ template <class T>
+ class A {};
+ 
+ template <class T>
+ class B;
+ 
+ template <class T>
+ class C {
+     private:
+ 
+     friend class B<T>;
+ 
+     explicit C(A<T>&) {};
+ };
+ 
+ 
+ template <class T>
+ class B {
+     public:
+     B() = default;
+     //B() {};       // << This implementation of the constructor makes it work
+ 
+     A<T> a = {};
+     C<T> c = C<T>{a};
+ };
+ 
+ int main() {
+     auto b = B<int>{};
+     auto &c = b.c;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/pr88872.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/pr88872.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1y/pr88872.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1y/pr88872.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/88872
+ // { dg-do compile { target c++14 } }
+ 
+ struct a {
+   template <typename b> constexpr a(b) : c() {}
+   int c;
+ };
+ void d();
+ template <char...> constexpr a operator"" _n() { return d; }
+ struct e;
+ struct f {
+   e operator[](int);
+ };
+ struct g {
+   void h();
+   f i;
+ };
+ template <typename> struct j {
+   void k() { [](auto) { constexpr auto l = 2_n; }(keywords); }
+   int keywords;
+ };
+ using m = j<int>;
+ class e : public m {};
+ void g::h() { i[0].k(); }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/aligned-new9.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/aligned-new9.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/aligned-new9.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/aligned-new9.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,30 ----
+ // PR c++/102071
+ // { dg-do run { target c++17 } }
+ // { dg-additional-options -faligned-new=2 }
+ 
+ #include <new>
+ 
+ int nalign;
+ void *operator new (std::size_t s, std::align_val_t a)
+ {
+   nalign = (int)a;
+   return operator new (s);
+ }
+ 
+ struct X { ~X(); int c; };
+ 
+ int align = (alignof (X) > alignof (std::size_t)
+ 	     ? alignof (X) : alignof (std::size_t));
+ 
+ int n = 4;
+ 
+ int main()
+ {
+   X *p = new X[n];
+   if (nalign != align)
+     __builtin_abort ();
+ 
+   X *p2 = new X;
+   if (nalign != alignof (X))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction85.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction85.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/class-deduction85.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/class-deduction85.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/99885
+ // { dg-do compile { target c++17 } }
+ 
+ template <auto const& A>
+ struct Foo {};
+ 
+ template <auto const& A>
+ struct Bar {
+     constexpr auto foo() const -> Foo<A> {
+         return {};
+     }
+ };
+ 
+ constexpr int a = 1;
+ constexpr Bar<a> bar;
+ Foo foo = bar.foo(); // <-- CTAD failure
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-array2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-array2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-array2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-array2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/102307
+ // { dg-do compile { target c++11 } }
+ 
+ #include <array>
+ template <unsigned N, unsigned M> struct Matrix {
+   constexpr Matrix(double const (&arr)[N][M]); // { dg-warning "never defined" }
+   constexpr Matrix(std::array<std::array<double, M>, N> const &arr);
+ };
+ int main() {
+   constexpr Matrix<2, 3>
+     mat {{ {1.0, 2.0, 3.0}, {4.0, 5.0, 6.0} }}; // { dg-error "before its definition" }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda4.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda4.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda4.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda4.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/99201
+ // { dg-do compile { target c++17 } }
+ 
+ template <typename RefF>
+   auto
+   make_tester(const RefF& reffun)
+   {
+     return [=](auto in) {
+       auto&& expected = [&](const auto&... vs) {
+         if constexpr (sizeof(in) > 0)
+           return [&](int i) { return reffun(vs[i]...); }(0);
+         else
+           return [&](int i) { return reffun(vs[i]...); }(0);
+       };
+     };
+   }
+ 
+ int main()
+ {
+   make_tester([](int x) { return x; })(0);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/eval-order11.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/eval-order11.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/eval-order11.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/eval-order11.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,89 ----
+ // PR c++/70796
+ // { dg-do run { target c++11 } }
+ // { dg-options "-fstrong-eval-order" { target c++14_down } }
+ 
+ struct A
+ {
+   int x = 0;
+   A & operator ++ () { ++x; return *this; }
+ };
+ struct B
+ {
+   A first, second;
+   B (A x, A y) : first{x}, second{y} {}
+ };
+ struct C
+ {
+   int first, second;
+   C (int x, int y) : first{x}, second{y} {}
+ };
+ struct D
+ {
+   int d;
+   void foo (int x, D *y)
+   {
+     if (y != this + 1)
+       __builtin_abort ();
+     d = x;
+   }
+ };
+ D d[2] = { { 1 }, { 2 } };
+ 
+ void
+ foo ()
+ {
+   int i = 0;
+   C p{++i, ++i};
+   if (p.first != 1 || p.second != 2)
+     __builtin_abort ();
+ }
+ 
+ void
+ bar ()
+ {
+   int i = 0;
+   C p{++i, ++i};
+   if (p.first != 1 || p.second != 2)
+     __builtin_abort ();
+   int &j = i;
+   C q{++j, ++j};
+   if (q.first != 3 || q.second != 4)
+     __builtin_abort ();
+ }
+ 
+ void
+ baz ()
+ {
+   int i = 0;
+   C p{(int &) ++i, (int &) ++i};
+   if (p.first != 1 || p.second != 2)
+     __builtin_abort ();
+ }
+ 
+ void
+ qux ()
+ {
+   A i;
+   B p{++i, ++i};
+   if (p.first.x != 1 || p.second.x != 2)
+     __builtin_abort ();
+ }
+ 
+ void
+ corge ()
+ {
+   D *p = &d[0];
+   p->foo (3, ++p);
+   if (d[0].d != 3 || d[1].d != 2)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   bar ();
+   baz ();
+   foo ();
+   qux ();
+   corge ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/inline-var9.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/inline-var9.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/inline-var9.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/inline-var9.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,40 ----
+ // PR c++/99901
+ // { dg-do compile { target c++11 } }
+ // { dg-final { scan-assembler-not "_ZN1A1aE" } }
+ // { dg-final { scan-assembler-not "_ZN2A21aE" } }
+ // { dg-final { scan-assembler-not "_ZN1CIiE1cE" } }
+ // { dg-final { scan-assembler "_ZN1B1bE" } }
+ // { dg-final { scan-assembler "_ZN2B21bE" } }
+ // { dg-final { scan-assembler "_ZN2B31bE" } }
+ 
+ struct A {
+   static const int a = 5;
+ };
+ 
+ struct A2 {
+   static constexpr int a = 5;
+ };
+ 
+ struct B {
+   static const int b;
+ };
+ constexpr int B::b = 5;
+ 
+ struct B2 {
+   static const int b = 5;
+ };
+ constexpr int B2::b;
+ 
+ struct B3 {
+   static constexpr int b = 5;
+ };
+ const int B3::b;
+ 
+ template <class T>
+ struct C {
+   static constexpr int c = 5;
+ };
+ template <class T>
+ constexpr int C<T>::c;
+ 
+ int i = C<int>::c;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/nodiscard8.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/nodiscard8.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/nodiscard8.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/nodiscard8.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/100666
+ // { dg-do compile { target c++11 } }
+ 
+ [[nodiscard]] decltype(nullptr) bar ();
+ extern void foo (...);
+ template <typename T> void qux (T);
+ 
+ void
+ baz ()
+ {
+   foo (bar ());		// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   bar ();		// { dg-warning "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   auto x = bar ();	// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   qux (bar ());		// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/nodiscard9.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/nodiscard9.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/nodiscard9.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/nodiscard9.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/100666
+ // { dg-do compile { target c++11 } }
+ 
+ struct S {};
+ [[nodiscard]] S bar ();
+ struct U { S s; };
+ [[nodiscard]] U corge ();
+ extern void foo (...);
+ template <typename T> void qux (T);
+ 
+ void
+ baz ()
+ {
+   foo (bar ());		// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   bar ();		// { dg-warning "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   auto x = bar ();	// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   qux (bar ());		// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   foo (corge ());	// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   corge ();		// { dg-warning "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   auto y = corge ();	// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+   qux (corge ());	// { dg-bogus "ignoring return value of '\[^\n\r]*', declared with attribute 'nodiscard'" }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type23.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type23.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type23.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type23.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/99374
+ // { dg-do compile { target c++17 } }
+ 
+ struct S;
+ struct R;
+ using F1 = int (S::*)();
+ using F2 = int (S::*)() noexcept;
+ using F3 = int (R::*)() noexcept;
+ using T = S;
+ using F4 = int (T::*)() noexcept;
+ F1 f21 = F2();
+ F1 f41 = F4();
+ F2 f12 = F1(); // { dg-error "cannot convert" }
+ F1 f31 = F3(); // { dg-error "cannot convert" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type24.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type24.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type24.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/noexcept-type24.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,22 ----
+ // PR c++/90664
+ // { dg-do compile { target c++11 } }
+ 
+ template <typename TT, typename MFP, MFP> struct OpM;
+ 
+ template <typename TR, typename TT, TR (TT::*f)()>
+ struct OpM<TT, TR (TT::*)(), f>
+ {};
+ 
+ class Class {
+ public:
+   int address() noexcept { return 0; }
+   void address(int) noexcept {}
+ };
+ 
+ struct Sk {
+   template <class C, typename R> Sk(R (C::*p)()) {
+     typedef OpM<C, R (C::*)() /* noexcept */, &Class::address> OP;
+   }
+ };
+ 
+ Sk sk(static_cast<int (Class::*)()>(&Class::address));
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/pr99833.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/pr99833.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp1z/pr99833.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp1z/pr99833.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/99833
+ // { dg-do compile { target c++17 } }
+ 
+ struct S { int a, b; };
+ template <class>
+ void
+ foo ()
+ {
+   [](auto d) { if constexpr (auto [a, b]{d}; sizeof (a) > 0) a++; } (S{});
+ }
+ template void foo<S> ();
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/95486
+ // { dg-do compile { target c++20 } }
+ 
+ template<class T, class U>
+ struct X { X(U) requires __is_same(U, int) {} };
+ 
+ template<class U>
+ using Y = X<void, U>;
+ 
+ Y y{1};
+ Y z{'a'}; // { dg-error "failed|no match" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias5.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/99180
+ // { dg-do compile { target c++17 } }
+ 
+ template <bool, typename... Ts>
+ struct A {
+   A(Ts...) {}
+ };
+ 
+ template <typename... Ts>
+ using B = A<false, Ts...>;
+ 
+ template <typename... Ts>
+ A(Ts...) -> A<true, Ts...>;
+ 
+ int main() {
+   B{};				// { dg-error "alias" "" { target c++17_down } }
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias6.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias6.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias6.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias6.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/93295
+ // { dg-do compile { target c++20 } }
+ 
+ template<typename T, bool B = false>
+ struct Foo {
+     Foo(T) {}
+ };
+ 
+ template<typename T> Foo(T) -> Foo<T>;
+ template<typename T> using Bar = Foo<T, true>;
+ Bar b{0};
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias7.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias7.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias7.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias7.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,32 ----
+ // PR c++/93867
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename CharT, unsigned N>
+ struct basic_fixed_string
+ {
+   constexpr basic_fixed_string(const CharT *p) {
+     for (int i = 0; i < N; ++i) {
+       m_data[i] = p[i];
+     }
+   }
+ 
+   CharT m_data[N] {};
+ };
+ 
+ template <typename CharT, unsigned N>
+ basic_fixed_string(const CharT (&)[N]) -> basic_fixed_string<CharT,N>;
+ 
+ template <unsigned N>
+ using fixed_string = basic_fixed_string<char, N>;
+ 
+ template <fixed_string path>
+ constexpr int foo()
+ {
+   return 42;
+ }
+ 
+ int main(int argc, char const *argv[])
+ {
+   foo<"hello">();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias8.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias8.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias8.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/class-deduction-alias8.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/95486
+ // { dg-do compile { target c++20 } }
+ 
+ template<class T, class U>
+ struct X { X(U) requires __is_same(U, int) {} };
+ 
+ template<class U>
+ X(U) -> X<char, U>;
+ 
+ template<class U>
+ using Y = X<void, U>;
+ 
+ Y y{1};
+ Y z{'a'}; // { dg-error "failed|no match" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/97052
+ // { dg-do compile { target c++20 } }
+ 
+ template<typename T, typename U = typename T::type>
+ concept C = true;
+ 
+ constexpr bool f(C auto) {
+   return true;
+ }
+ 
+ static_assert(f(0));
+ 
+ C auto x = 0;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/concepts-requires30.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/concepts-requires30.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/concepts-requires30.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/concepts-requires30.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/105304
+ // { dg-do compile { target c++20 } }
+ // { dg-additional-options "-Wall -Wsequence-point" }
+ 
+ struct A { };
+ 
+ int main() {
+   if (requires { A(); })
+     ;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/consteval26.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/consteval26.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/consteval26.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/consteval26.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,39 ----
+ // PR c++/103912
+ // { dg-do run { target c++20 } }
+ // { dg-additional-options "-O2 -g -fkeep-inline-functions" }
+ 
+ extern "C" void abort ();
+ 
+ struct A { A () {} };
+ 
+ consteval auto
+ foo ()
+ {
+   if (1)
+     ;
+   return [] (A x) { return 1; };
+ }
+ 
+ consteval auto
+ bar (int a)
+ {
+   int b = a + 4;
+   if (1)
+     ;
+   return [=] (A x) { return a + b; };
+ }
+ 
+ int
+ main ()
+ {
+   A x;
+   auto h = foo ();
+   if (h (x) != 1)
+     abort ();
+   auto i = bar (5);
+   if (i (x) != 14)
+     abort ();
+   auto j = bar (42);
+   if (j (x) != 88)
+     abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/consteval27.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/consteval27.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/consteval27.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/consteval27.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/104055
+ // { dg-do run { target c++20 } }
+ 
+ int g;
+ 
+ struct A { 
+   ~A () { if (a != 17 || b != 26) __builtin_abort (); g = 42; }
+   consteval A () : a (17), b (26) {}
+   int a, b;
+ };
+ 
+ int
+ main ()
+ {
+   A{};
+   if (g != 42)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/104513
+ // { dg-do compile { target c++20 } }
+ 
+ struct S {
+   constexpr S () : s (nullptr) {}
+   constexpr ~S () { delete s; }
+   int *s;
+ };
+ struct T : S {
+   constexpr T () : S () {}
+   constexpr ~T () { s = new int (42); return; }
+ };
+ constexpr T t;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new18.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new18.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new18.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new18.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,45 ----
+ // PR c++/99859
+ // { dg-do compile { target c++20 } }
+ 
+ template <class T>
+ struct intrusive_ptr
+ {
+   T *ptr = nullptr;
+   constexpr explicit intrusive_ptr(T* p) : ptr(p) {
+     ++ptr->count_;
+   }
+   constexpr ~intrusive_ptr() {
+     if (ptr->dec() == 0)
+       delete ptr;
+   }
+   constexpr intrusive_ptr(intrusive_ptr const& a) : ptr(a.ptr) {
+     ++ptr->count_;
+   }
+ };
+ 
+ struct Foo {
+   int count_ = 0;
+   constexpr int dec() {
+     return --count_;
+   }
+ };
+ 
+ constexpr bool baz() {
+   Foo f { 4 };
+   intrusive_ptr a(&f);
+   return true;
+ }
+ constexpr bool x = baz();
+ 
+ constexpr void bar(intrusive_ptr<Foo> a) 
+ {
+   if (a.ptr->count_ != 2) throw 1;
+ }
+ 
+ constexpr bool foo() {
+   intrusive_ptr a(new Foo());
+   bar(a);
+   return true;
+ }
+ 
+ static_assert(foo());
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new19.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new19.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new19.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new19.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,43 ----
+ // PR c++/99859
+ // { dg-do compile { target c++20 } }
+ 
+ constexpr void
+ foo (int *x)
+ {
+   ++*x;
+ }
+ 
+ constexpr int
+ bar ()
+ {
+   int *x = new int (0);
+   foo (x);
+   foo (x);
+   int y = *x;
+   delete x;
+   return y;
+ }
+ 
+ static_assert (bar () == 2);
+ 
+ struct R { int a, *b; };
+ 
+ constexpr void
+ baz (R x)
+ {
+   ++*x.b;
+ }
+ 
+ constexpr int
+ qux ()
+ {
+   int *x = new int (0);
+   R r{1, x};
+   baz (r);
+   baz (r);
+   int y = *x;
+   delete x;
+   return y;
+ }
+ 
+ static_assert (qux () == 2);
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new22.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new22.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new22.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-new22.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,42 ----
+ // PR c++/104568
+ // { dg-do compile { target c++20 } }
+ // { dg-options "" }
+ 
+ struct S { int s; constexpr S () : s (0) {} constexpr ~S () {} };
+ typedef int T[0];
+ typedef int U[0];
+ 
+ constexpr bool
+ foo ()
+ {
+   auto p = new T[2];
+   auto q1 = &p[0];
+   auto q2 = &p[1];
+   auto q3 = &p[2];
+   delete[] p;
+   return true;
+ }
+ 
+ constexpr bool
+ bar ()
+ {
+   auto p = new U[2];
+   auto q1 = &p[0];
+   auto q2 = &p[1];
+   auto q3 = &p[2];
+   delete[] p;
+   return true;
+ }
+ 
+ constexpr bool
+ baz ()
+ {
+   auto p = new T[0];
+   auto q1 = &p[0];
+   delete[] p;
+   return true;
+ }
+ 
+ constexpr bool a = foo ();
+ constexpr bool b = bar ();
+ constexpr bool c = baz ();
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-nonlit7.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-nonlit7.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-nonlit7.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-nonlit7.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/104994
+ // CWG2552
+ // { dg-do compile { target c++14 } }
+ 
+ constexpr bool foo () { extern thread_local int t; return true; }
+ static constexpr bool a = foo ();
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual19.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual19.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual19.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual19.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/102786
+ // { dg-do compile { target c++20 } }
+ 
+ struct S {
+   virtual constexpr int foo () const { return 42; }
+ };
+ 
+ constexpr S s;
+ constexpr auto a = &S::foo;
+ constexpr auto b = (s.*a) ();
+ constexpr auto c = (s.*&S::foo) ();
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/desig18.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/desig18.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/desig18.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/desig18.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/100489
+ // { dg-options "" }
+ 
+ union U
+ {
+   union
+   {
+     unsigned char a;
+   };
+ 
+   unsigned char b[1];
+ };
+ 
+ void f(unsigned char a)
+ {
+   union U u = { .a = a };
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/97051
+ // { dg-do compile { target c++20 } }
+ 
+ namespace std {
+   constexpr inline bool
+   is_constant_evaluated () noexcept
+   {
+     return __builtin_is_constant_evaluated ();
+   }
+ }
+ 
+ template<typename>
+   requires (std::is_constant_evaluated())
+ constexpr int a = 0;
+ 
+ constexpr int b = a<int>;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/lambda-generic9.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/95434
+ // { dg-do compile { target c++20 } }
+ 
+ template <class>
+ void f() {
+   [] <template <class> class U> () { U{0}; };
+ }
+ 
+ template void f<int>();
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,27 ----
+ // PR c++/97938
+ // { dg-do compile { target c++20 } }
+ 
+ template <typename... Args>
+ int sink(Args&&... args) { return 2; }
+ 
+ auto fwd1(const auto&&... ts1) {
+   return
+     [...ts1 = ts1] {
+       return sink(ts1...);
+     }();
+ }
+ 
+ template <typename T1>
+ auto fwd2(const T1& t1) {
+   return
+     [] (auto&&... ts1) {
+       return
+ 	[...ts1 = ts1] {
+ 	  return sink(ts1...);
+ 	}();
+     }();
+ }
+ 
+ int main() {
+   return fwd1() + fwd2(1);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/pr99833.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/pr99833.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/pr99833.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/pr99833.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/99833
+ // { dg-do compile { target c++20 } }
+ 
+ #include <tuple>
+ 
+ auto f(auto&& x)
+ {
+   [&](auto...) {
+     auto y = std::tuple{ "what's happening here?", x };
+     if constexpr (auto [_, z] = y; requires { z; })
+       return;
+   }();
+ }
+ 
+ int main()
+ {
+   f(42);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/volatile5.C gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/volatile5.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/cpp2a/volatile5.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/cpp2a/volatile5.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,15 ----
+ // PR c++/98947
+ // { dg-do compile }
+ 
+ volatile int x, y, z;
+ 
+ void
+ f (bool b)
+ {
+   (b ? x : y) = 1;
+   (b ? x : y) += 1; // { dg-warning "compound assignment" "" { target c++20 } }
+   z = (b ? x : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } }
+   ((z = 2) ? x : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } }
+   (b ? (x = 2) : y) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } }
+   (b ? x : (y = 5)) = 1; // { dg-warning "using value of simple assignment" "" { target c++20 } }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr101378.C gcc-10.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr101378.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/debug/dwarf2/pr101378.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/debug/dwarf2/pr101378.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR debug/101378
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-gdwarf-5 -dA" }
+ // { dg-final { scan-assembler-times "0\[^0-9x\\r\\n\]* DW_AT_data_member_location" 1 } }
+ // { dg-final { scan-assembler-times "1\[^0-9x\\r\\n\]* DW_AT_data_member_location" 1 } }
+ // { dg-final { scan-assembler-times "2\[^0-9x\\r\\n\]* DW_AT_data_member_location" 1 } }
+ // { dg-final { scan-assembler-not "-1\[^0-9x\\r\\n\]* DW_AT_data_member_location" } }
+ 
+ struct E {};
+ struct S
+ {
+   [[no_unique_address]] E e, f, g;
+ } s;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ext/anon-struct10.C gcc-10.4.0/gcc/testsuite/g++.dg/ext/anon-struct10.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ext/anon-struct10.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ext/anon-struct10.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,21 ----
+ // PR c++/101767
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-Wno-pedantic" }
+ 
+ typedef struct {
+   struct {
+     int x;
+   };
+   union {
+     int y;
+     float z;
+   };
+ } S;
+ 
+ void foo(void)
+ {
+   [[maybe_unused]] S a = {
+     .x = 1,
+     .y = 0
+   };
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ext/array4.C gcc-10.4.0/gcc/testsuite/g++.dg/ext/array4.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ext/array4.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ext/array4.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,172 ----
+ // PR c++/101029
+ // { dg-do compile { target c++11 } }
+ // { dg-options "" } allow [0]
+ 
+ template <int __v> struct integral_constant {
+   static constexpr int value = __v;
+   typedef int value_type;
+   constexpr operator value_type() { return __v; }
+ };
+ template <bool __v> using __bool_constant = integral_constant<__v>;
+ template <bool, typename> struct conditional;
+ template <typename...> struct __and_;
+ template <typename _B1, typename _B2, typename _B3, typename... _Bn>
+ struct __and_<_B1, _B2, _B3, _Bn...> : conditional<_B1::value, _B1> {};
+ template <typename _Tp>
+ constexpr integral_constant<true> __is_complete_or_unbounded(_Tp) {
+   return {};
+ }
+ struct Trans_NS_std_formatter;
+ template <typename _Tp>
+ struct is_default_constructible : integral_constant<false> {
+   static_assert(__is_complete_or_unbounded(_Tp{}), "");
+ };
+ template <typename _Tp, typename _Up>
+ struct is_same : integral_constant<__is_same_as(_Tp, _Up)> {};
+ template <bool> struct enable_if;
+ template <typename _Iffalse> struct conditional<false, _Iffalse> {
+   typedef _Iffalse type;
+ };
+ struct pair {
+   template <typename _U1 = int, typename _U2 = int,
+             typename enable_if<__and_<is_default_constructible<_U1>, _U2,
+                                       int>::valuebool>::type>
+   pair();
+ };
+ 
+ class BucketLogger;
+ struct __shared_ptr_access {
+   using element_type = BucketLogger;
+   element_type *operator->();
+ };
+ struct DcpProducer {
+   __shared_ptr_access logger;
+   void bufferAcknowledgement();
+ };
+ struct atomic {
+   atomic(long);
+ };
+ inline namespace v7 {
+ template <bool B, class, class F>
+ using conditional_t = typename conditional<B, F>::type;
+ template <typename> struct basic_string_view { basic_string_view(int, int); };
+ template <typename, typename> struct formatter;
+ template <typename, typename>
+ using has_formatter =
+     __bool_constant<__is_constructible(Trans_NS_std_formatter)>;
+ struct fallback_formatter;
+ template <typename Context> struct custom_value {
+   using parse_context = typename Context::parse_context_type;
+   void (*format)(const void *, parse_context &, Context &);
+ };
+ template <typename Context> struct value {
+   float float_value;
+   custom_value<Context> custom;
+   template <typename T> value(T) {
+     custom.format =
+         format_custom_arg<T, conditional_t<has_formatter<T, Context>::value,
+                                            typename Context::formatter_type<T>,
+                                            fallback_formatter>>;
+   }
+   template <typename, typename Formatter>
+   static void format_custom_arg(const void *arg,
+                                 typename Context::parse_context_type &,
+                                 Context &ctx) {
+     Formatter f;
+     f.format(*static_cast<const int *>(arg), ctx);
+   }
+ };
+ enum { max_packed_args };
+ template <typename Context> struct basic_format_arg { value<Context> value_; };
+ template <typename Visitor, typename Context>
+ void visit_format_arg(Visitor vis, Context arg) {
+   vis(arg.value_.float_value);
+ }
+ template <typename Context, typename T> basic_format_arg<Context> make_arg(T);
+ struct basic_format_context {
+   using char_type = int;
+   using parse_context_type = int;
+   template <typename T> using formatter_type = formatter<T, char_type>;
+ };
+ struct format_arg_store {
+   using value_type = conditional_t<max_packed_args, basic_format_context,
+                                    basic_format_arg<basic_format_context>>;
+   value_type data_;
+ };
+ template <typename... Args, typename S>
+ auto make_args_checked(S, Args... args) -> format_arg_store {
+   return {args...};
+ }
+ struct basic_format_specs {};
+ template <typename Char, typename OutputIt, typename T>
+ void write(OutputIt, T, Char) {
+   if (is_same<T, float>())
+     ;
+ }
+ struct arg_formatter_base {
+   using iterator = int;
+   using format_specs = basic_format_specs;
+   iterator out_;
+   template <typename T> void operator()(T value) {
+     auto specs = format_specs();
+     write(out_, value, specs);
+   }
+ };
+ struct arg_formatter : arg_formatter_base {
+   using context_type = basic_format_context;
+   arg_formatter(context_type, int *, format_specs *);
+ };
+ template <typename T, typename> struct formatter {
+   template <typename FormatContext> void format(T val, FormatContext ctx) {
+     using af = arg_formatter;
+     basic_format_arg<FormatContext> __trans_tmp_2 = make_arg<FormatContext>(val);
+     visit_format_arg(af(ctx, nullptr, &specs_), __trans_tmp_2);
+   }
+   basic_format_specs specs_;
+ };
+ } // namespace v7
+ namespace level {
+ enum level_enum { warn };
+ }
+ struct BucketLogger {
+   template <typename S, typename... Args>
+   void log(level::level_enum, const S &, Args &&...);
+   template <typename... Args> void warn(const char *, const Args &...);
+ };
+ namespace v7 {
+ struct fallback_formatter : formatter<basic_string_view<int>, int> {
+   template <typename OutputIt> void format(int, OutputIt ctx) {
+     basic_string_view<int> str(0, 0);
+     formatter::format(str, ctx);
+   }
+ };
+ } // namespace v7
+ template <typename S, typename... Args>
+ void BucketLogger::log(level::level_enum, const S &fmt, Args &&...args) {
+   make_args_checked(fmt, args...);
+ }
+ template <typename... Args>
+ void BucketLogger::warn(const char *fmt, const Args &...args) {
+   log(level::warn, fmt, args...);
+ }
+ template <class KeyT> struct AtomicHashArray {
+   static void create();
+   atomic isFull_;
+   atomic numErases_;
+   pair cells_[0];
+   AtomicHashArray(int, KeyT, KeyT, KeyT, double, unsigned);
+ };
+ template <class KeyT>
+ AtomicHashArray<KeyT>::AtomicHashArray(int, KeyT, KeyT, KeyT, double, unsigned)
+     : isFull_(0), numErases_(0) {}
+ template <class KeyT> void AtomicHashArray<KeyT>::create() {
+   int c_4, capacity;
+   double c_3;
+   char c_2, c_1, c_0;
+   AtomicHashArray(capacity, c_0, c_1, c_2, c_3, c_4);
+ }
+ int bufferAcknowledgement_vbucket;
+ void DcpProducer::bufferAcknowledgement() {
+   logger->warn("", bufferAcknowledgement_vbucket);
+ }
+ void (*makeStreamsMap_p)() = AtomicHashArray<char>::create;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ext/flexary39.C gcc-10.4.0/gcc/testsuite/g++.dg/ext/flexary39.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ext/flexary39.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ext/flexary39.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,65 ----
+ // PR c++/88578
+ // { dg-do run }
+ // { dg-options -Wno-pedantic }
+ 
+ #define STR(s) #s
+ #define ASSERT(exp) \
+   ((exp) ? (void)0 : (void)(__builtin_printf ("%s:%i: assertion %s failed\n", \
+                      __FILE__, __LINE__, STR(exp)), \
+                       __builtin_abort ()))
+ 
+ typedef int int32_t __attribute__((mode (__SI__)));
+ 
+ struct Ax { int32_t n, a[]; };
+ struct AAx { int32_t i; Ax ax; };
+ 
+ int32_t i = 12345678;
+ 
+ void
+ test ()
+ {
+   {
+     // OK.  Does not assign any elements to flexible array.
+     Ax s = { 0 };
+     ASSERT (s.n == 0);
+   }
+   {
+     // OK only for statically allocated objects, otherwise error.
+     static Ax s = { 0, { } };
+     ASSERT (s.n == 0);
+   }
+   {
+     static Ax s = { 1, { 2 } };
+     ASSERT (s.n == 1 && s.a [0] == 2);
+   }
+   {
+     static Ax s = { 2, { 3, 4 } };
+     ASSERT (s.n = 2 && s.a [0] == 3 && s.a [1] == 4);
+   }
+   {
+     static Ax s = { 123, i };
+     ASSERT (s.n == 123 && s.a [0] == i);
+   }
+   {
+     static Ax s = { 456, { i } };
+     ASSERT (s.n == 456 && s.a [0] == i);
+   }
+   {
+     int32_t j = i + 1, k = j + 1;
+     static Ax s = { 3, { i, j, k } };
+     ASSERT (s.n == 3 && s.a [0] == i && s.a [1] == j && s.a [2] == k);
+   }
+ 
+   {
+     // OK.  Does not assign any elements to flexible array.
+     AAx s = { 1, { 2 } };
+     ASSERT (s.i == 1 && s.ax.n == 2);
+   }
+ }
+ 
+ int
+ main ()
+ {
+   test ();
+   test ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ext/flexary40.C gcc-10.4.0/gcc/testsuite/g++.dg/ext/flexary40.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ext/flexary40.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ext/flexary40.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,50 ----
+ // PR c++/102295
+ // { dg-do run }
+ // { dg-options "" }
+ 
+ struct A { int a; int b[]; };
+ struct B { B (); int k; };
+ struct C { int l; B m[]; };
+ 
+ int x[4];
+ A c = { 42, { ++x[0], ++x[1], ++x[2], ++x[3] } };
+ A d = { 43, { 0, ++x[0], ++x[1], ++x[2], ++x[3] } };
+ A e = { 44, { ++x[0], ++x[1], ++x[2], 17 } };
+ A f = { 45 };
+ C n = { 50, { B (), B () } };
+ C o = { 51, {} };
+ 
+ int
+ main ()
+ {
+   static A g = { 46, { ++x[0], ++x[1], ++x[2], ++x[3] } };
+   static A h = { 47, { 0, ++x[0], ++x[1], ++x[2], ++x[3] } };
+   static A i = { 48, { ++x[0], ++x[1], ++x[2], 18 } };
+   static A j = { 49 };
+   if (c.a != 42 || c.b[0] != 1 || c.b[1] != 1 || c.b[2] != 1 || c.b[3] != 1)
+     __builtin_abort ();
+   if (d.a != 43 || d.b[0] != 0 || d.b[1] != 2 || d.b[2] != 2 || d.b[3] != 2 || d.b[4] != 2)
+     __builtin_abort ();
+   if (e.a != 44 || e.b[0] != 3 || e.b[1] != 3 || e.b[2] != 3 || e.b[3] != 17)
+     __builtin_abort ();
+   if (f.a != 45)
+     __builtin_abort ();
+   if (g.a != 46 || g.b[0] != 4 || g.b[1] != 4 || g.b[2] != 4 || g.b[3] != 3)
+     __builtin_abort ();
+   if (h.a != 47 || h.b[0] != 0 || h.b[1] != 5 || h.b[2] != 5 || h.b[3] != 5 || h.b[4] != 4)
+     __builtin_abort ();
+   if (i.a != 48 || i.b[0] != 6 || i.b[1] != 6 || i.b[2] != 6 || i.b[3] != 18)
+     __builtin_abort ();
+   if (j.a != 49)
+     __builtin_abort ();
+   if (n.l != 50 || n.m[0].k != 42 || n.m[1].k != 42)
+     __builtin_abort ();
+   if (o.l != 51)
+     __builtin_abort ();
+   if (x[0] != 6 || x[1] != 6 || x[2] != 6 || x[3] != 4)
+     __builtin_abort ();
+ }
+ 
+ B::B () : k (42)
+ {
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ext/va-arg-pack-3.C gcc-10.4.0/gcc/testsuite/g++.dg/ext/va-arg-pack-3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ext/va-arg-pack-3.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ext/va-arg-pack-3.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR middle-end/100898
+ 
+ int a;
+ int bar (int, ...);
+ 
+ static inline __attribute__((always_inline)) int
+ foo (...)
+ {
+   while (a)
+     return bar (0, __builtin_va_arg_pack ());
+   return 0;
+ }
+ 
+ void
+ baz (void)
+ {
+   foo ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/gomp/clause-3.C gcc-10.4.0/gcc/testsuite/g++.dg/gomp/clause-3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/gomp/clause-3.C	Thu Apr  8 11:56:28 2021
--- gcc-10.4.0/gcc/testsuite/g++.dg/gomp/clause-3.C	Tue Jun 28 08:54:28 2022
*************** foo (int x)
*** 56,62 ****
      ;
  #pragma omp p reduction (|:d) // { dg-error "user defined reduction not found for" }
      ;
! #pragma omp p reduction (&&:d) // { dg-error "user defined reduction not found for" }
      ;
  #pragma omp p copyin (d) // { dg-error "must be 'threadprivate'" }
      ;
--- 56,62 ----
      ;
  #pragma omp p reduction (|:d) // { dg-error "user defined reduction not found for" }
      ;
! #pragma omp p reduction (&:d) // { dg-error "user defined reduction not found for" }
      ;
  #pragma omp p copyin (d) // { dg-error "must be 'threadprivate'" }
      ;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/gomp/pr101516.C gcc-10.4.0/gcc/testsuite/g++.dg/gomp/pr101516.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/gomp/pr101516.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/gomp/pr101516.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/101516
+ 
+ void
+ foo (int (&v) [])
+ {
+   #pragma omp parallel reduction (+:v)	// { dg-error "invalid use of array with unspecified bounds" }
+   ;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/gomp/pr102431.C gcc-10.4.0/gcc/testsuite/g++.dg/gomp/pr102431.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/gomp/pr102431.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/gomp/pr102431.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR middle-end/102431
+ 
+ struct S { S (); ~S (); S (const S &); void add (const S &); int s; } s;
+ void bar (int, S &);
+ #pragma omp declare reduction (+:S:omp_out.add (omp_in))
+ 
+ void
+ foo ()
+ {
+   #pragma omp loop bind(teams) reduction(+:s)
+   for (int i = 0; i < 8; i++)
+     bar (i, s);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/inherit/virtual15.C gcc-10.4.0/gcc/testsuite/g++.dg/inherit/virtual15.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/inherit/virtual15.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/inherit/virtual15.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/100797
+ // { dg-do run }
+ 
+ bool ok = false;
+ struct S1 { virtual ~S1() {} };
+ struct S2 { virtual void f1() = 0; };
+ struct S3: S1, S2 {
+     void f1() { f2(); }
+     virtual void f2() = 0;
+ };
+ struct S4: S3 {
+   void f2() { ok = true; }
+   using S2::f1;
+ };
+ int main() {
+   S4().f1();
+   if (!ok) __builtin_abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/inherit/virtual15a.C gcc-10.4.0/gcc/testsuite/g++.dg/inherit/virtual15a.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/inherit/virtual15a.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/inherit/virtual15a.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/100797 plus diamond inheritance
+ // { dg-do run }
+ 
+ bool ok = false;
+ struct S1 { virtual ~S1() {} };
+ struct S2 { virtual void f1() = 0; };
+ struct S3: S1, virtual S2 {
+     void f1() { f2(); }
+     virtual void f2() = 0;
+ };
+ struct SX: virtual S2 { };
+ struct S4: SX, S3 {
+   void f2() { ok = true; }
+   using S2::f1;
+ };
+ int main() {
+   S4().f1();
+   if (!ok) __builtin_abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/init/assign2.C gcc-10.4.0/gcc/testsuite/g++.dg/init/assign2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/init/assign2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/init/assign2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,6 ----
+ // PR c++/59950
+ 
+  struct Foo {};
+ 
+  int f(Foo *p);
+  int n = f(&(Foo() = Foo()));
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/init/no-elide2.C gcc-10.4.0/gcc/testsuite/g++.dg/init/no-elide2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/init/no-elide2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/init/no-elide2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,32 ----
+ // PR c++/100838
+ // { dg-do run }
+ // { dg-additional-options -fno-elide-constructors }
+ 
+ extern "C" int puts (const char *);
+ 
+ int c,d;
+ class MyString {
+ public:
+   MyString(const char* s = "") {
+     puts ("ctor");
+     ++c;
+   }
+   ~MyString() {
+     puts ("dtor");
+     ++d;
+   }
+   MyString(const MyString& s) {
+     puts ("copy ctor");
+     ++c;
+   }
+   MyString& operator=(const MyString& s);
+ };
+ 
+ int main() {
+   {
+     MyString s1 = "Hello";
+     puts ("main");
+   }
+   if (c != d)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/lookup/new3.C gcc-10.4.0/gcc/testsuite/g++.dg/lookup/new3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/lookup/new3.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/lookup/new3.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/98249
+ 
+ #include <new>
+ struct Incomplete;
+ template<class T> struct Holder { T t; };
+ Holder<Incomplete> *p;
+ void test() {
+     ::new (p) int;
+     new (p) int;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/lto/pr97565_0.C gcc-10.4.0/gcc/testsuite/g++.dg/lto/pr97565_0.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/lto/pr97565_0.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/lto/pr97565_0.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,7 ----
+ // { dg-lto-do link }
+ // { dg-lto-options { "-O -flto -fipa-pta" } }
+ 
+ extern "C" void abort(void)
+ {
+   abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/lto/pr97565_1.C gcc-10.4.0/gcc/testsuite/g++.dg/lto/pr97565_1.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/lto/pr97565_1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/lto/pr97565_1.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,6 ----
+ extern "C" void abort(void);
+ 
+ int main(int argc, char * argv[])
+ {
+   abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/opt/const7.C gcc-10.4.0/gcc/testsuite/g++.dg/opt/const7.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/opt/const7.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/opt/const7.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,7 ----
+ // PR c++/104142
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options -Wunused-variable }
+ 
+ struct B { B()=default; };
+ static const B b_var;		//  { dg-bogus "" }
+ // { dg-final { scan-assembler "\\.rodata" { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/opt/nrv20.C gcc-10.4.0/gcc/testsuite/g++.dg/opt/nrv20.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/opt/nrv20.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/opt/nrv20.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,20 ----
+ // PR c++/91217
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options -fdump-tree-gimple }
+ // { dg-final { scan-tree-dump-not "<retval> = a" "gimple" } }
+ 
+ struct A
+ {
+   int ar[42];
+ };
+ 
+ template <class T>
+ A f()
+ {
+   return [] { A a; return a; }();
+ }
+ 
+ int main()
+ {
+   f<int>();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/opt/pr100148.C gcc-10.4.0/gcc/testsuite/g++.dg/opt/pr100148.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/opt/pr100148.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/opt/pr100148.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,27 ----
+ // PR rtl-optimization/100148
+ // { dg-do compile }
+ // { dg-options "-O2 -fno-dce -fno-tree-dce -fno-tree-dominator-opts -fno-tree-sink -fcompare-debug" }
+ 
+ int i;
+ enum E { } e, ee;
+ 
+ bool
+ baz (int)
+ {
+   return ee;
+ }
+ 
+ bool bar ();
+ bool a, b;
+ 
+ void
+ foo ()
+ {
+   switch (ee)
+     {
+     case 0:
+       e = E (a ? : i);
+     case 1:
+       !(b || baz (0) && bar ());
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/opt/pr100254.C gcc-10.4.0/gcc/testsuite/g++.dg/opt/pr100254.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/opt/pr100254.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/opt/pr100254.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,101 ----
+ // PR rtl-optimization/100254
+ // { dg-do compile }
+ // { dg-options "-O2 -fno-guess-branch-probability -fipa-pta -fnon-call-exceptions -fcompare-debug" }
+ // { dg-additional-options "-mtune=goldmont" { target i?86-*-* x86_64-*-* } }
+ 
+ struct _Rb_tree_node_base {
+   typedef _Rb_tree_node_base *_Base_ptr;
+   typedef _Rb_tree_node_base *_Const_Base_ptr;
+   _Base_ptr _M_left;
+ };
+ template <typename _Key_compare> struct _Rb_tree_key_compare {
+   _Key_compare _M_key_compare;
+ };
+ struct _Rb_tree_header {
+   _Rb_tree_node_base _M_header;
+ };
+ struct _Rb_tree_iterator {
+   _Rb_tree_iterator(_Rb_tree_node_base::_Base_ptr);
+   friend bool operator==(_Rb_tree_iterator, _Rb_tree_iterator);
+ };
+ template <typename _Tp> struct _Rb_tree_const_iterator {
+   typedef _Rb_tree_const_iterator _Self;
+   _Rb_tree_const_iterator(_Rb_tree_node_base::_Const_Base_ptr) {}
+   _Tp operator*();
+   template <typename _Up>
+   friend bool operator!=(_Rb_tree_const_iterator<_Up>, _Rb_tree_const_iterator<_Up>);
+ };
+ template <typename _Key, typename _Val, typename _Compare> struct _Rb_tree {
+   template <typename _Key_compare>
+   struct _Rb_tree_impl : _Rb_tree_key_compare<_Key_compare>, _Rb_tree_header {};
+   _Rb_tree_impl<_Compare> _M_impl;
+   _Key _S_key();
+   typedef _Rb_tree_const_iterator<_Val> const_iterator;
+   const_iterator begin() { return _M_impl._M_header._M_left; }
+   _Rb_tree_iterator find(const _Key &);
+ };
+ template <typename _Key, typename _Val, typename _Compare>
+ _Rb_tree_iterator _Rb_tree<_Key, _Val, _Compare>::find(const _Key &__k) {
+   _Rb_tree_iterator __j = 0;
+   return __j == 0 || _M_impl._M_key_compare(__k, _S_key()) ? 0 : __j;
+ }
+ template <typename _Key, typename _Compare = _Key> struct set {
+   typedef _Key key_type;
+   typedef _Rb_tree<key_type, _Key, _Compare> _Rep_type;
+   _Rep_type _M_t;
+   typedef typename _Rep_type::const_iterator iterator;
+   iterator begin() { return _M_t.begin(); }
+   iterator end();
+   void find(key_type __x) { _M_t.find(__x); }
+ };
+ struct WindowDesc {
+   WindowDesc(short);
+ } _station_view_desc(0);
+ struct Window {
+   void IsWidgetLowered();
+   virtual void OnClick(int, int, int);
+ };
+ int AllocateWindowDescFront_window_number;
+ template <typename Wcls> void AllocateWindowDescFront(WindowDesc *desc, bool) {
+   Wcls(desc, AllocateWindowDescFront_window_number);
+ }
+ class CargoDataEntry;
+ struct CargoSorter {
+   bool operator()(const CargoDataEntry *, const CargoDataEntry *) const;
+ };
+ struct CargoDataEntry {
+   ~CargoDataEntry();
+   char Retrieve_cargo;
+   void Retrieve() {
+     CargoDataEntry t(Retrieve_cargo);
+     children->find(&t);
+   }
+   CargoDataEntry(char);
+   set<CargoDataEntry *, CargoSorter> *children;
+ };
+ CargoDataEntry::CargoDataEntry(char) : children() {}
+ CargoDataEntry::~CargoDataEntry() {
+   if (children)
+     for (set<CargoDataEntry *>::iterator i = children->begin();
+          i != children->end();)
+       delete *i;
+ }
+ bool CargoSorter::operator()(const CargoDataEntry *,
+                              const CargoDataEntry *) const { return false; }
+ struct StationViewWindow : Window {
+   StationViewWindow(WindowDesc *, int);
+   CargoDataEntry HandleCargoWaitingClick_filter;
+   void OnClick(int, int widget, int) {
+     switch (widget) {
+     case 0:
+       HandleCargoWaitingClick_filter.Retrieve();
+       HandleCargoWaitingClick_filter.Retrieve();
+     case 1:
+       IsWidgetLowered();
+     }
+   }
+ };
+ void ShowStationViewWindow_station() {
+   AllocateWindowDescFront<StationViewWindow>(&_station_view_desc,
+                                              ShowStationViewWindow_station);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/opt/pr104681.C gcc-10.4.0/gcc/testsuite/g++.dg/opt/pr104681.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/opt/pr104681.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/opt/pr104681.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,19 ----
+ // PR target/104681
+ // { dg-do compile }
+ // { dg-options "-O2" }
+ 
+ void bar ();
+ struct A {
+   A (bool) : a(7.0L), b(0) {}
+   long double a;
+   long b;
+ };
+ struct B {
+   void foo () { c = bar; }
+   A c;
+ };
+ struct C {
+   void baz ();
+   B d;
+ };
+ void C::baz () { d.foo (); }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/other/gc6.C gcc-10.4.0/gcc/testsuite/g++.dg/other/gc6.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/other/gc6.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/other/gc6.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/99831
+ // { dg-do compile { target c++20 } }
+ // { dg-options "--param ggc-min-heapsize=0 --param ggc-min-expand=0" }
+ 
+ template <int N> struct S {
+   constexpr S(const char (&str)[N]) : value{} { }
+   char value[N];
+ };
+ template <S> struct string {
+   constexpr bool operator==(const string &) const = default;
+ };
+ template <S L2> void operator+(string<L2>) {
+   char value[1];
+   S{value};
+ }
+ static_assert(string<"a">{} == string<"a">{});
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/other/gc7.C gcc-10.4.0/gcc/testsuite/g++.dg/other/gc7.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/other/gc7.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/other/gc7.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // PR c++/91416 - GC during late parsing collects live data.
+ // { dg-do compile }
+ // { dg-options "--param ggc-min-heapsize=0 --param ggc-min-expand=0" }
+ 
+ __attribute__ ((unused)) struct S {
+   S() { }
+ } s;
+ 
+ __attribute__ ((unused)) struct X {
+   void fn ()
+   {
+     __attribute__ ((unused)) struct N {
+ 	N() { }
+     } n;
+   }
+ } x;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/other/pr100580.C gcc-10.4.0/gcc/testsuite/g++.dg/other/pr100580.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/other/pr100580.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/other/pr100580.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,8 ----
+ // PR c++/100580
+ // { dg-do compile }
+ // { dg-require-weak "" }
+ // { dg-options "-fdump-passes" }
+ // { dg-prune-output ".*" }
+ 
+ int foo;
+ static __typeof(foo) bar __attribute__((__weakref__("foo")));
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/overload/builtin6.C gcc-10.4.0/gcc/testsuite/g++.dg/overload/builtin6.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/overload/builtin6.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/overload/builtin6.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,14 ----
+ // PR c++/103455
+ 
+ struct A { };
+ 
+ struct B {
+   operator A*() const;
+   template<class T> operator T*() const;
+ };
+ 
+ typedef void (A::*F)();
+ 
+ void f(B b, F pmf) {
+   (b->*pmf)();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/pr100253.C gcc-10.4.0/gcc/testsuite/g++.dg/pr100253.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/pr100253.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/pr100253.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-tree-bit-ccp -ftree-slp-vectorize" } */
+ 
+ #include <vector>
+ 
+ struct T
+ {
+ };
+ 
+ struct S
+ {
+   std::vector < std::vector < T > > v;
+   char x;
+   char y[16];
+   char z[16];
+ };
+ 
+ S s, g[1];
+ 
+ void
+ foo (char *buf)
+ {
+   s = g[*buf];
+ }
+ 
+ char c;
+ 
+ int
+ main ()
+ {
+   foo (&c);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/pr98032.C gcc-10.4.0/gcc/testsuite/g++.dg/pr98032.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/pr98032.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/pr98032.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile }
+ 
+ namespace osl {
+ class Thread {
+ public:
+   virtual ~Thread();
+   virtual void join();
+ };
+ } // namespace osl
+ class SimpleReferenceObject {
+ protected:
+   virtual ~SimpleReferenceObject();
+ };
+ class Thread : SimpleReferenceObject, osl::Thread {
+ public:
+   using osl::Thread::join;
+ };
+ class RenderThread : Thread {
+   RenderThread() { join(); }
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/pr98136.C gcc-10.4.0/gcc/testsuite/g++.dg/pr98136.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/pr98136.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/pr98136.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,26 ----
+ // { dg-do compile { target { ilp32 || lp64 } } }
+ 
+ struct AddIn
+ {
+     virtual ~AddIn() {}
+     virtual void AddInCall()=0;
+ };
+ 
+ struct Base
+ {
+     char b[32*1024*1024];   // Anything bigger than 16mb causes internal compiler error
+     virtual ~Base() {}
+ };
+ 
+ struct Deriv : public Base,
+                     public AddIn
+ {
+     void AddInCall() {}
+ };
+ 
+ int main (int argc, char **argv)
+ {
+     Deriv deriv;
+     deriv.AddInCall();
+     return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/spellcheck-pr104806.C gcc-10.4.0/gcc/testsuite/g++.dg/spellcheck-pr104806.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/spellcheck-pr104806.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/spellcheck-pr104806.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/104806
+ 
+ struct S {};
+ int main() { S s; s.__d; }	// { dg-bogus "'struct S' has no member named '__d'; did you mean '__\[a-z]* '" }
+ 				// { dg-error "'struct S' has no member named '__d'" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/template/access39.C gcc-10.4.0/gcc/testsuite/g++.dg/template/access39.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/template/access39.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/template/access39.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/101078
+ 
+ struct A {
+   static void f();
+ };
+ 
+ template<class>
+ struct B : private A {
+   struct C {
+     void g() { f(); }
+     void g2() { B::f(); }
+   };
+ };
+ 
+ int main() {
+   B<int>::C().g();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/template/conv19.C gcc-10.4.0/gcc/testsuite/g++.dg/template/conv19.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/template/conv19.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/template/conv19.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,34 ----
+ // PR c++/101698
+ // { dg-do compile { target c++11 } }
+ 
+ class Base {
+  public:
+   template <class T>
+   operator const T&() const = delete;
+ 
+   virtual operator const int&() const {
+     static int res;
+     return res;
+   }
+ };
+ 
+ template <class T>
+ class Derive : public Base {
+  public:
+   operator const T&() const override {
+     using Y = int;
+     //static_assert(__is_same_as(T,Y), "");
+ 
+     static int res;
+ 
+     res = Base::operator const Y&(); // OK
+     res = Base::operator const T&(); // { dg-bogus "deleted" }
+     return res;
+   }
+ };
+ 
+ int main() {
+   Derive<int> a;
+   const int& b = a;
+   (void)b;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/template/friend70.C gcc-10.4.0/gcc/testsuite/g++.dg/template/friend70.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/template/friend70.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/template/friend70.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/52625
+ 
+ template<class>
+ class base {};
+ 
+ class derived : public base<derived>
+ {
+   template<class> friend class base;
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/template/nested7.C gcc-10.4.0/gcc/testsuite/g++.dg/template/nested7.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/template/nested7.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/template/nested7.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/102300
+ 
+ template<typename T>
+ struct holder
+ {
+   template<typename F> struct fn {};
+ 
+   struct t1 : fn<T> {};                      // pass
+   struct t2 : holder<T >::fn<T> {};          // fail
+   struct t3 : holder<T >::template fn<T> {}; // fail
+   struct t4 : holder<T*>::template fn<T> {}; // pass
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/template/non-dependent22.C gcc-10.4.0/gcc/testsuite/g++.dg/template/non-dependent22.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/template/non-dependent22.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/template/non-dependent22.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/104565
+ // { dg-do compile { target c++11 } }
+ 
+ struct apa {
+   constexpr int n() const { return 3; }
+ };
+ 
+ template<class>
+ int f() {
+   apa foo;
+   return int{foo.n()};  // no matching function for call to 'apa::n(apa*)'
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/template/ref11.C gcc-10.4.0/gcc/testsuite/g++.dg/template/ref11.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/template/ref11.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/template/ref11.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR c++/83476
+ 
+ int n;
+ template <int& V> struct A {};
+ template <int& V> void f(A<V>);
+ int main() {
+   A<n> a;
+   f(a);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/torture/pr102505.C gcc-10.4.0/gcc/testsuite/g++.dg/torture/pr102505.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/torture/pr102505.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/torture/pr102505.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,15 ----
+ struct D  { int i;  int pad alignas(16); };
+ struct B : virtual D
+ {
+   int j =84;
+   int k =84;
+ };
+ 
+ struct C: B { };
+ 
+ int main()
+ {
+   C c;
+   if (c.j != 84 || c.k != 84)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/torture/pr103361.C gcc-10.4.0/gcc/testsuite/g++.dg/torture/pr103361.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/torture/pr103361.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/torture/pr103361.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-floop-unroll-and-jam" } */
+ 
+ char a, b;
+ extern unsigned short c[];
+ extern bool d[];
+ const unsigned short &e(const unsigned short &f, const unsigned short &g) {
+   if (g < f)
+     return g;
+   return f;
+ }
+ void k() {
+   for (int h = 0; b; h += 3)
+     for (unsigned long i = 0; i < 11104842004558084287ULL;
+          i += -11104842004558084300ULL)
+       for (bool j(e(6, e(6, c[h + i]))); j < (bool)a; j = 7)
+         d[7] = 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/torture/pr105189.C gcc-10.4.0/gcc/testsuite/g++.dg/torture/pr105189.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/torture/pr105189.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/torture/pr105189.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,19 ----
+ // PR tree-optimization/105189
+ // { dg-do run }
+ 
+ int
+ foo ()
+ {
+   return -1;
+ }
+ 
+ int
+ main ()
+ {
+   int c = foo () >= 0U && 1;
+   if (c != 1)
+     __builtin_abort ();
+   int d = foo () >= 3U && 1;
+   if (d != 1)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ubsan/pr101210.C gcc-10.4.0/gcc/testsuite/g++.dg/ubsan/pr101210.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ubsan/pr101210.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ubsan/pr101210.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,13 ----
+ // PR c++/101210
+ // { dg-do run }
+ // { dg-options "-fsanitize=null,alignment -fno-sanitize-recover=null,alignment" }
+ 
+ int v[2];
+ int
+ main ()
+ {
+   int x;
+   int &y = x;
+   v[0] = reinterpret_cast<__INTPTR_TYPE__>(&y) == 0;
+   v[1] = reinterpret_cast<__INTPTR_TYPE__>(&y) == 1;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ubsan/pr105093.C gcc-10.4.0/gcc/testsuite/g++.dg/ubsan/pr105093.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ubsan/pr105093.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ubsan/pr105093.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR sanitizer/105093
+ // { dg-do compile }
+ // { dg-options "-O2 -fsanitize=undefined -Wno-volatile" }
+ 
+ struct X { X (); ~X (); };
+ 
+ volatile X
+ foo ()
+ {
+   X x;
+   return x;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/ubsan/pr105729.C gcc-10.4.0/gcc/testsuite/g++.dg/ubsan/pr105729.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/ubsan/pr105729.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/ubsan/pr105729.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,29 ----
+ // PR sanitizer/105729
+ // { dg-do run }
+ // { dg-options "-fsanitize=null -fno-sanitize-recover=null" }
+ 
+ int
+ foo (int x)
+ {
+   throw 0;
+ }
+ 
+ struct S {};
+ struct T {
+   S *data;
+   T () : data (0) {}
+   const S &bar (int x) const { return data[foo (x)]; }
+ };
+ 
+ int
+ main ()
+ {
+   T t;
+   try
+     {
+       t.bar (-1);
+     }
+   catch (...)
+     {
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C gcc-10.4.0/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/warn/Warray-bounds-27.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,16 ----
+ // PR105726
+ // { dg-do compile }
+ // { dg-require-effective-target c++11 }
+ // { dg-options "-O2 -Warray-bounds" }
+ 
+ #include <array>
+ #include <cstring>
+ 
+ struct X {
+     char pad[4];
+     std::array<char, 1> mField;
+ };
+ 
+ void encode(char* aBuffer, const X& aMessage) {
+     strncpy(aBuffer, aMessage.mField.data(), 1); // { dg-bogus "bounds" }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wconversion5.C gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wconversion5.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wconversion5.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wconversion5.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,19 ----
+ // PR c++/99331
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-Wconversion" }
+ // Don't issue -Wconversion warnings for value-dependent expressions.
+ 
+ template <int> struct X {};
+ template <signed char> struct Y {};
+ template <typename T> X<sizeof(T)> foo();
+ template <typename T> X<alignof(T)> foo2();
+ template<int I> Y<I> foo3();
+ template<int> Y<1024> foo4(); // { dg-error "narrowing conversion" }
+ template<int> Y<1u> foo5();
+ template<int> X<__INT_MAX__ + 1U> foo6(); // { dg-error "narrowing conversion" }
+ 
+ template <typename T>
+ struct S {
+   using t = X<sizeof(T)>;
+   using u = X<alignof(T)>;
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wshadow-17.C gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wshadow-17.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wshadow-17.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wshadow-17.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,11 ----
+ // PR c++/99120
+ // { dg-options "-Wshadow" }
+ 
+ struct S {
+   void X();
+ 
+   template<typename T>
+   void fn () {
+     enum { X };
+   }
+ };
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-3.C gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-3.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-3.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wshadow-compatible-local-3.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/100608
+ // { dg-do compile { target c++11 } }
+ // { dg-additional-options "-Wshadow=compatible-local" }
+ 
+ template <typename> class X {};
+ 
+ void foo()
+ {
+   auto a = X<class a>{};	// no warning, not compatible
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C
*** gcc-10.3.0/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.dg/warn/Wuseless-cast2.C	Tue Jun 28 08:54:28 2022
***************
*** 0 ****
--- 1,24 ----
+ // PR c++/103480
+ // { dg-do compile { target c++14 } }
+ // { dg-options "-Wuseless-cast" }
+ 
+ template <typename T, int N>
+ struct A { typedef T t[N]; };
+ template <typename T, int N>
+ struct B { typename A<T, N>::t b; };
+ struct C {
+   constexpr C (C &&) {}
+   template <int N>
+   static auto bar ()
+   {
+     B<C, N> r;
+     return r;		// { dg-bogus "useless cast to type" }
+   }
+   C () = default;
+ };
+ 
+ void
+ foo ()
+ {
+   C::bar<2> ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/aarch64/sve/pr99216.C gcc-10.4.0/gcc/testsuite/g++.target/aarch64/sve/pr99216.C
*** gcc-10.3.0/gcc/testsuite/g++.target/aarch64/sve/pr99216.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/aarch64/sve/pr99216.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do link { target aarch64_asm_sve_ok } } */
+ /* { dg-additional-options "-flto" } */
+ #include <arm_sve.h>
+ bool a;
+ int main() { a = svaddv(svptrue_b8(), svdup_s8(0)); }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/arm/pr102842.C gcc-10.4.0/gcc/testsuite/g++.target/arm/pr102842.C
*** gcc-10.3.0/gcc/testsuite/g++.target/arm/pr102842.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/arm/pr102842.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* PR rtl-optimization/102842 */
+ /* { dg-do compile } */
+ /* { dg-options "-fPIC  -O2 -fno-omit-frame-pointer -mthumb -march=armv7-a+fp" } */
+ 
+ struct Plane {
+   using T = float;
+   T *Row();
+ };
+ using ImageF = Plane;
+ long long Mirror_x;
+ struct EnsurePaddingInPlaceRowByRow {
+   void Process() {
+     switch (strategy_) {
+     case kSlow:
+       float *row = img_.Row();
+       long long xsize = x1_;
+       while (Mirror_x >= xsize)
+         if (Mirror_x)
+           Mirror_x = 2 * xsize - 1;
+       *row = Mirror_x;
+     }
+   }
+   ImageF img_;
+   unsigned x1_;
+   enum { kSlow } strategy_;
+ };
+ void FinalizeImageRect() {
+   EnsurePaddingInPlaceRowByRow ensure_padding;
+   ensure_padding.Process();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/i386/pr102295.C gcc-10.4.0/gcc/testsuite/g++.target/i386/pr102295.C
*** gcc-10.3.0/gcc/testsuite/g++.target/i386/pr102295.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/i386/pr102295.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/102295
+ // { dg-do compile { target *-*-linux* } }
+ // { dg-options "-Wno-pedantic" }
+ 
+ struct S {
+   int a;
+   int b[];
+ } S;
+ 
+ struct S s = { 1, { 2, 3 } };
+ 
+ /* { dg-final { scan-assembler ".size\[\t \]*s, 12" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/i386/pr102548.C gcc-10.4.0/gcc/testsuite/g++.target/i386/pr102548.C
*** gcc-10.3.0/gcc/testsuite/g++.target/i386/pr102548.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/i386/pr102548.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/102548
+ // { dg-do compile { target { c++14 && ia32 } } }
+ 
+ typedef decltype(sizeof(0)) size_t;
+ struct tm;
+ extern "C" size_t __attribute__((__cdecl__)) strftime (char *, size_t, const char *, const struct tm *);
+ 
+ auto
+ foo (void)
+ {
+   return strftime;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/i386/vec-tmpl1.C gcc-10.4.0/gcc/testsuite/g++.target/i386/vec-tmpl1.C
*** gcc-10.3.0/gcc/testsuite/g++.target/i386/vec-tmpl1.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/i386/vec-tmpl1.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/65211
+ // { dg-additional-options "-Wno-psabi" }
+ // { dg-final { scan-assembler-not "movdqa" } }
+ 
+ typedef unsigned v4ui __attribute__ ((vector_size(16), aligned (16)));
+ 
+ template<int I>
+ static v4ui t1(unsigned *dest_data)
+ {
+   typedef unsigned v4ui_1 __attribute__ ((vector_size (16), aligned (4)));
+   return ((const v4ui_1*)dest_data)[0];
+ }
+ 
+ v4ui f(unsigned int *array)
+ {
+     return t1<1>(array+7);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/powerpc/pr99842.C gcc-10.4.0/gcc/testsuite/g++.target/powerpc/pr99842.C
*** gcc-10.3.0/gcc/testsuite/g++.target/powerpc/pr99842.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/powerpc/pr99842.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,188 ----
+ /* PR target/99842 */
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-O3 -mdejagnu-cpu=power10 -Wno-return-type" } */
+ 
+ /* Verify we do not ICE on the following noisy creduced test case.  */
+ 
+ enum { a, b, c, d };
+ template <typename> struct e;
+ template <typename g, typename h, typename k> struct e<g(h, k)> {
+   typedef h f;
+ };
+ template <typename> struct ac;
+ template <typename ab> struct ac<const ab> : ac<ab> {};
+ template <typename> struct l;
+ template <typename, int, int m, int = 0, int = a, int = m> class n;
+ template <typename> class o;
+ template <typename, typename, typename> class ag;
+ template <typename, typename, int = c> class af;
+ template <typename> struct ad;
+ template <typename ab> struct an {
+   typedef n<typename ab ::ah, ac<ab>::ai, ac<ab>::aj> f;
+ };
+ template <typename al> struct am { typedef o<al> f; };
+ template <typename al, typename = typename ac<al>::ao,
+           typename = typename ac<al>::av>
+ struct ak;
+ template <typename al, typename ao> struct ak<al, ao, int> {
+   typedef typename am<al>::f f;
+ };
+ template <typename, typename, typename> struct aq;
+ template <typename ar, typename as> struct aq<ar, ar, as> { typedef ar at; };
+ template <typename ap> ap bf(const typename ad<ap>::f *);
+ template <typename ap, int> ap aw(typename ad<ap>::f *ax) { return bf<ap>(ax); }
+ typedef __attribute__((altivec(vector__))) double au;
+ template <> struct ad<au> { typedef double f; };
+ template <> au bf(const double *ax) { return __builtin_vec_vsx_ld(0, ax); }
+ template <typename> struct az {};
+ template <typename al> class o : public l<al> {
+ public:
+   typedef typename ac<al>::ah ah;
+   template <typename ay> al &operator+=(const o<ay> &);
+ };
+ template <typename> struct l {};
+ template <typename ba, typename bb, int bd> struct ac<af<ba, bb, bd>> {
+   typedef typename ba::ah ah;
+   enum { ai, aj };
+ };
+ template <typename, typename, int bd>
+ class af
+     : public ak<
+           af<ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+              n<double, -1, 1, 3>, bd>,
+           int, int>::f {};
+ template <typename, typename, typename> struct be;
+ template <typename bj, typename bg, typename g> void bi(bj, bg bm, g) {
+   typename an<bg>::f bk(bm);
+ }
+ template <typename bj, typename bg, typename g> void bl(bj, bg bm, g bp) {
+   be<bj, bg, g>::bn(a, bm, bp);
+ }
+ template <typename, typename, typename, typename> struct bo;
+ class bs {
+ public:
+   bs(double *, int);
+   double &operator()(int, int) { return bq[br]; }
+   template <typename bw, int> bw bt(int i, int j) {
+     double &bu = operator()(i, j);
+     return aw<bw, b>(&bu);
+   }
+   double *bq;
+   int br;
+ };
+ class ca : public bs {
+ public:
+   ca(double *by, int bz) : bs(by, bz) {}
+ };
+ template <typename al> class ce : public am<al>::f {
+ protected:
+   template <typename ay> void cb(l<ay>) {
+     af<ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+        n<double, -1, 1, 3>>
+         cc;
+     bl(0, cc, az<typename ay::ah>());
+   }
+   template <typename> void ch(long);
+   template <typename ay> void ch(l<ay> cf) { cb(cf); }
+ };
+ template <typename cg, int aa, int m, int cl, int ci, int cj>
+ struct ac<n<cg, aa, m, cl, ci, cj>> {
+   typedef cg ah;
+   typedef int av;
+ };
+ template <typename cg, int, int m, int, int, int>
+ class n : public ce<n<cg, m, c>> {
+ public:
+   template <typename ab> n(ab p) { n::template ch<ab>(p); }
+ };
+ template <typename bc, typename ba, typename bb> struct ac<ag<bc, ba, bb>> {
+   typedef ba ao;
+   typedef typename e<bc(typename ba::ah, typename bb::ah)>::f ah;
+   typedef typename aq<typename ac<ba>::av, typename ac<bb>::av, bc>::at av;
+ };
+ template <typename> class cm;
+ template <typename, typename r, typename cs>
+ class ag
+     : public cm<typename aq<typename ac<r>::av, typename ac<cs>::av, int>::at> {
+ };
+ template <typename>
+ class cm : public ak<ag<int, n<double, 1, 1>, n<double, 1, 1>>>::f {};
+ template <typename al>
+ template <typename ay>
+ al &o<al>::operator+=(const o<ay> &) {
+   af<ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+      n<double, -1, 1, 3>>
+       co;
+   bi(0, co, int());
+ }
+ enum { cp };
+ template <int> struct cq;
+ template <typename> struct cr {
+   enum { q };
+   enum { ae = cq<q>::at };
+ };
+ template <> struct cq<cp> {
+   enum { at = d };
+ };
+ struct t {
+   template <typename ba, typename bb, typename s> static void bn(ba, bb, s) {
+     typedef typename bb::ah x;
+     x u;
+     bo<long, ca, x, ca>::bn(0, 0, ca(0, 0), ca(&u, 1), 0, 0, 0);
+   }
+ };
+ template <typename, typename bb, int = cr<bb>::ae> struct cu;
+ template <typename cd, typename ba, typename bb, int ct, typename ah>
+ struct be<cd, af<ba, bb, ct>, az<ah>> {
+   static void bn(cd, af<ba, bb> bm, az<ah>) {
+     ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>> da;
+     cu<ba, bb>::cv(c, da, bm);
+   }
+ };
+ template <typename al> struct cw {
+   template <typename bj>
+   static void
+   cv(bj, ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>>,
+      n<double, -1, 1, 3> bx) {
+     double alpha;
+     ag<int, const n<double, -1, -1, 3>, const n<double, -1, -1, 3>> bh;
+     al::cx(c, bh, bx, alpha);
+   }
+ };
+ template <typename ba, typename bb> struct cu<ba, bb, d> : cw<cu<ba, bb>> {
+   template <typename s> static void cx(s, ba, bb bx, typename af<ba, bb>::ah) {
+     ba cz;
+     t::bn(cz, bx, c);
+   }
+ };
+ template <typename dj, typename, bool>
+ void db(__vector_quad *, __vector_pair &, dj);
+ template <typename, typename, typename, typename, typename, typename, int>
+ void dc(ca alhs) {
+   typedef au dj;
+   typedef au dd;
+   ca bh(alhs);
+   enum { de };
+   __vector_quad df, dg;
+   int j;
+   dd v;
+   __vector_pair dh;
+   __builtin_mma_assemble_pair(
+       &dh, (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j),
+       (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j));
+   db<dj, dd, true>(&df, dh, v);
+   __vector_pair di;
+   __builtin_mma_assemble_pair(
+       &di, (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j),
+       (__attribute__((altivec(vector__))) char)bh.bt<dj, de>(0, j));
+   db<dj, dd, true>(&dg, di, v);
+ }
+ template <typename bv, typename w, typename cy> struct bo<bv, w, double, cy> {
+   static void bn(bv, bv, w bh, cy, double, bv, double) {
+     dc<bv, double, w, double, cy, double, d>(bh);
+   }
+ };
+ void dm() {
+   n<double, 1, 1> dk(1), y(0);
+   y += dk;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/g++.target/s390/pr98722.C gcc-10.4.0/gcc/testsuite/g++.target/s390/pr98722.C
*** gcc-10.3.0/gcc/testsuite/g++.target/s390/pr98722.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/g++.target/s390/pr98722.C	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ // { dg-do compile }
+ // { dg-options "-Og -fno-tree-fre -fno-split-wide-types" }
+ struct B {
+   virtual void Method();
+ };
+ typedef void (B::*fn_type_a)();
+ 
+ int main() {
+   fn_type_a f(&B::Method);
+   B b;
+   (b.*f)();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr100305.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr100305.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr100305.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr100305.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ /* PR target/100305 */
+ 
+ typedef double v2df __attribute__((vector_size(16)));
+ 
+ #define N 4096
+ void consume (void *);
+ v2df
+ foo (void)
+ {
+   double x[N+2];
+   consume (x);
+   return (v2df) { x[N], x[N + 1] };
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr101562.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr101562.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr101562.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr101562.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ /* PR rtl-optimization/101562 */
+ 
+ struct S { char c; };
+ void baz (struct S a, struct S b);
+ 
+ void
+ foo (void)
+ {
+   struct S x[1];
+   *(short *)&x[0] = 256;
+   baz (x[0], x[1]);
+ }
+ 
+ void
+ bar (void)
+ {
+   struct S x[1];
+   x[0].c = 0;
+   x[1].c = 1;
+   baz (x[0], x[1]);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr96796.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr96796.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr96796.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr96796.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-additional-options "-fcommon" } */
+ 
+ struct S0 {
+   signed f0 : 8;
+   unsigned f1;
+   unsigned f4;
+ };
+ struct S1 {
+   long f3;
+   char f4;
+ } g_3_4;
+ 
+ int g_5, func_1_l_32, func_50___trans_tmp_31;
+ static struct S0 g_144, g_834, g_1255, g_1261;
+ 
+ int g_273[120] = {};
+ int *g_555;
+ char **g_979;
+ static int g_1092_0;
+ static int g_1193;
+ int safe_mul_func_int16_t_s_s(int si1, int si2) { return si1 * si2; }
+ static struct S0 *func_50();
+ int func_1() { func_50(g_3_4, g_5, func_1_l_32, 8, 3); }
+ void safe_div_func_int64_t_s_s(int *);
+ void safe_mod_func_uint32_t_u_u(struct S0);
+ struct S0 *func_50(int p_51, struct S0 p_52, struct S1 p_53, int p_54,
+                    int p_55) {
+   int __trans_tmp_30;
+   char __trans_tmp_22;
+   short __trans_tmp_19;
+   long l_985_1;
+   long l_1191[8];
+   safe_div_func_int64_t_s_s(g_273);
+   __builtin_printf((char*)g_1261.f4);
+   safe_mod_func_uint32_t_u_u(g_834);
+   g_144.f0 += 1;
+   for (;;) {
+     struct S1 l_1350 = {&l_1350};
+     for (; p_53.f3; p_53.f3 -= 1)
+       for (; g_1193 <= 2; g_1193 += 1) {
+         __trans_tmp_19 = safe_mul_func_int16_t_s_s(l_1191[l_985_1 + p_53.f3],
+                                                    p_55 % (**g_979 = 10));
+         __trans_tmp_22 = g_1255.f1 * p_53.f4;
+         __trans_tmp_30 = __trans_tmp_19 + __trans_tmp_22;
+         if (__trans_tmp_30)
+           g_1261.f0 = p_51;
+         else {
+           g_1255.f0 = p_53.f3;
+           int *l_1422 = g_834.f0 = g_144.f4 != (*l_1422)++ > 0 < 0 ^ 51;
+           g_555 = ~0;
+           g_1092_0 |= func_50___trans_tmp_31;
+         }
+       }
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr97141.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr97141.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr97141.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr97141.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ int a;
+ short b, c;
+ short d(short e, short f) { return e + f; }
+ void g(void) {
+   a = -9;
+   for (; a != 51; a = d(a, 5))
+     b |= c;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr98726.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr98726.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr98726.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr98726.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,7 ----
+ int a, c;
+ char b;
+ int d() {
+   a = 0;
+   for (; a <= 21; a = (short)a + 1)
+     b &= c;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr99647.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr99647.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/compile/pr99647.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/compile/pr99647.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do assemble } */
+ typedef int __attribute((vector_size(16))) V;
+ V f(void) {
+   return (V){ (int)f, (int)f, (int)f, (int)f };
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/20210505-1.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/20210505-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/20210505-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/20210505-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,31 ----
+ /* PR target/100402 */
+ /* Testcase by Hannes Domani <ssbssa@yahoo.de> */
+ 
+ /* { dg-require-effective-target indirect_jumps } */
+ 
+ #include <setjmp.h>
+ #include <stdbool.h>
+ 
+ static jmp_buf buf;
+ static _Bool stop = false;
+ 
+ void call_func (void(*func)(void))
+ {
+   func ();
+ }
+ 
+ void func (void)
+ {
+   stop = true;
+   longjmp (buf, 1);
+ }
+ 
+ int main (void)
+ {
+   setjmp (buf);
+ 
+   while (!stop)
+     call_func (func);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/bitfld-10.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/bitfld-10.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/bitfld-10.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/bitfld-10.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ /* PR tree-optimization/102622 */
+ /* Wrong code introduced due to phi-opt
+    introducing undefined signed interger overflow
+    with one bit signed integer negation. */
+ 
+ struct f{signed t:1;};
+ int g(struct f *a, int t) __attribute__((noipa));
+ int g(struct f *a, int t)
+ {
+     if (t)
+       a->t = -1;
+     else
+       a->t = 0;
+     int t1 = a->t;
+     if (t1) return 1;
+     return t1;
+ }
+ 
+ int main(void)
+ {
+     struct f a;
+     if (!g(&a, 1))  __builtin_abort();
+     return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/pr103052.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/pr103052.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/pr103052.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/pr103052.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,35 ----
+ static void js_error(void);
+ static int top;
+ static void js_throw(void)
+ {
+ 	__builtin_exit(0);
+ }
+ 
+ // LOCATION A -- if js_pop is here, the bug is present
+ static void js_pop(void)
+ {
+ 	if (++top > 100)
+ 		js_error();
+ }
+ 
+ static void jsC_error(const char *v)
+ {
+ 	if (v[0] == 0)
+ 		js_error();
+ 	js_throw();
+ }
+ static void checkfutureword(const char *exp)
+ {
+ 	if (!__builtin_strcmp(exp, "const"))
+ 		jsC_error("boom");
+ }
+ static void js_error(void) {
+ 	checkfutureword("foo");
+ 	checkfutureword("bar");
+ 	js_pop();
+ }
+ int main(void)
+ {
+ 	checkfutureword("const");
+ 	__builtin_abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/pr104814.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/pr104814.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/pr104814.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/pr104814.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* PR rtl-optimization/104814 */
+ 
+ short a = 0;
+ static long b = 0;
+ int c = 7;
+ char d = 0;
+ short *e = &a;
+ long f = 0;
+ 
+ unsigned long
+ foo (unsigned long h, long j)
+ {
+   return j == 0 ? h : h / j;
+ }
+ 
+ int
+ main ()
+ {
+   long k = f;
+   for (; c; --c)
+     {
+       for (int i = 0; i < 7; ++i)
+ 	;
+       long m = foo (f, --b);
+       d = ((char) m | *e) <= 43165;
+     }
+   if (b != -7)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/pr98736.c gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/pr98736.c
*** gcc-10.3.0/gcc/testsuite/gcc.c-torture/execute/pr98736.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.c-torture/execute/pr98736.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ /* PR tree-optimization/98736 */
+ 
+ int a[6];
+ char b, c;
+ int main() {
+   int d[4] = {0, 0, 0, 0};
+   for (c = 0; c <= 5; c++) {
+     for (b = 2; b != 0; b++)
+       a[c] = 8;
+     a[c] = d[3];
+   }
+   if (a[0] != 0)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/Wstringop-overflow-67.c gcc-10.4.0/gcc/testsuite/gcc.dg/Wstringop-overflow-67.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/Wstringop-overflow-67.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/Wstringop-overflow-67.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,92 ----
+ /* PR middle-end/100571 - bogus -Wstringop-overflow with VLA of elements
+    larger than byte
+    { dg-do compile }
+    { dg-options "-O2 -Wall" } */
+ 
+ __attribute__ ((access (read_only, 1, 2))) void fro (int *, int);
+ __attribute__ ((access (write_only, 1, 2))) void fwo (int *, int);
+ __attribute__ ((access (read_write, 1, 2))) void frw (int *, int);
+ 
+ extern __SIZE_TYPE__ n;
+ 
+ void alloca_ro (void)
+ {
+   int *a = __builtin_alloca (n * sizeof *a);
+   a[0] = 0;
+   fro (a, n);
+ }
+ 
+ void alloca_wo (void)
+ {
+   int *a = __builtin_alloca (n * sizeof *a);
+   fwo (a, n);
+ }
+ 
+ void alloca_rw (void)
+ {
+   int *a = __builtin_alloca (n * sizeof *a);
+   a[0] = 0;
+   frw (a, n);
+ }
+ 
+ 
+ void calloc_ro (void)
+ {
+   int *a = __builtin_calloc (n, sizeof *a);
+   fro (a, n);
+ }
+ 
+ void calloc_wo (void)
+ {
+   int *a = __builtin_calloc (n, sizeof *a);
+   fwo (a, n);
+ }
+ 
+ void calloc_rw (void)
+ {
+   int *a = __builtin_calloc (n, sizeof *a);
+   a[0] = 0;
+   frw (a, n);
+ }
+ 
+ 
+ void malloc_ro (void)
+ {
+   int *a = __builtin_malloc (n * sizeof *a);
+   a[0] = 0;
+   fro (a, n);
+ }
+ 
+ void malloc_wo (void)
+ {
+   int *a = __builtin_malloc (n * sizeof *a);
+   fwo (a, n);
+ }
+ 
+ void malloc_rw (void)
+ {
+   int *a = __builtin_malloc (n * sizeof *a);
+   a[0] = 0;
+   frw (a, n);
+ }
+ 
+ 
+ void vla_ro (void)
+ {
+   int a[n];
+   a[0] = 0;
+   fro (a, n);
+ }
+ 
+ void vla_wo (void)
+ {
+   int a[n];
+   fwo (a, n);
+ }
+ 
+ void vla_rw (void)
+ {
+   int a[n];
+   a[0] = 0;
+   frw (a, n);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/asan/pr104449.c gcc-10.4.0/gcc/testsuite/gcc.dg/asan/pr104449.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/asan/pr104449.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/asan/pr104449.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ /* PR sanitizer/104449 */
+ /* { dg-do compile } */
+ /* { dg-options "-fexceptions -fsanitize=address -fstack-check=generic" } */
+ 
+ void bar (int *);
+ 
+ void
+ foo (void)
+ {
+   int a[16];
+   bar (a);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/asan/pr105214.c gcc-10.4.0/gcc/testsuite/gcc.dg/asan/pr105214.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/asan/pr105214.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/asan/pr105214.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/105214 */
+ /* { dg-do compile } */
+ /* { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } */
+ /* { dg-options "-Ofast -fnon-call-exceptions -fexceptions -fstack-check=generic -fsanitize=address -fno-finite-math-only -fsignaling-nans -fno-associative-math" } */
+ 
+ float f;
+ void bar (int *);
+ 
+ void
+ foo (void)
+ {
+   int a[1600], b[1];
+   f += __builtin_log1pf (f);
+   bar (a);
+   bar (b);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/asan/pr105396.c gcc-10.4.0/gcc/testsuite/gcc.dg/asan/pr105396.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/asan/pr105396.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/asan/pr105396.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* PR sanitizer/105396 */
+ /* { dg-do run } */
+ /* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */
+ /* { dg-shouldfail "asan" } */
+ 
+ int
+ main ()
+ {
+   int a;
+   int *b[1];
+   int c[10];
+   int d[1][1];
+   for (a = 0; a < 1; a++)
+     d[1][a] = 0;
+   return 0;
+ }
+ 
+ /* { dg-output "ERROR: AddressSanitizer: stack-buffer-overflow on address.*(\n|\r\n|\r)" } */
+ /* { dg-output "WRITE of size.*" } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c gcc-10.4.0/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c	Tue Jun 28 08:54:29 2022
*************** subvalues (struct entry *e, char *p, cha
*** 1280,1285 ****
--- 1280,1287 ----
        if (e[0].len != 0)
  	output_FNB ('B', e);
        return 1;
+     default:
+       return 0;
      }
  }
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c gcc-10.4.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/darwin-minversion-link.c	Tue Jun 28 08:54:29 2022
***************
*** 15,21 ****
  /* { dg-additional-options "-mmacosx-version-min=010.013.06 -DCHECK=101306" { target *-*-darwin17* } } */
  /* { dg-additional-options "-mmacosx-version-min=010.014.05 -DCHECK=101405" { target *-*-darwin18* } } */
  /* { dg-additional-options "-mmacosx-version-min=010.015.06 -DCHECK=101506" { target *-*-darwin19* } } */
! /* { dg-additional-options "-mmacosx-version-min=011.000.00 -DCHECK=110000" { target *-*-darwin20 } } */
  
  int
  main ()
--- 15,22 ----
  /* { dg-additional-options "-mmacosx-version-min=010.013.06 -DCHECK=101306" { target *-*-darwin17* } } */
  /* { dg-additional-options "-mmacosx-version-min=010.014.05 -DCHECK=101405" { target *-*-darwin18* } } */
  /* { dg-additional-options "-mmacosx-version-min=010.015.06 -DCHECK=101506" { target *-*-darwin19* } } */
! /* { dg-additional-options "-mmacosx-version-min=011.000.00 -DCHECK=110000" { target *-*-darwin20* } } */
! /* { dg-additional-options "-mmacosx-version-min=012.000.00 -DCHECK=120000" { target *-*-darwin21* } } */
  
  int
  main ()
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/debug/pr104337.c gcc-10.4.0/gcc/testsuite/gcc.dg/debug/pr104337.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/debug/pr104337.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/debug/pr104337.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ 
+ struct a {
+   unsigned b : 7;
+ };
+ inline __attribute__((optimize(3))) __attribute__((always_inline)) struct a
+ c() {
+   struct a d;
+   return d;
+ }
+ void e() {
+   for (;;)
+     c();
+ }
+ int main() {}
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/dfp/pr104510.c gcc-10.4.0/gcc/testsuite/gcc.dg/dfp/pr104510.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/dfp/pr104510.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/dfp/pr104510.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ /* PR c/104510 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ float f;
+ _Decimal64 d;
+ 
+ int
+ foo (void)
+ {
+   return d > (_Decimal32) (_Decimal64) f;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/dfp/pr104557.c gcc-10.4.0/gcc/testsuite/gcc.dg/dfp/pr104557.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/dfp/pr104557.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/dfp/pr104557.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /* PR debug/104557 */
+ /* { dg-do compile } */
+ /* { dg-options "-O -g -Wno-psabi" } */
+ 
+ typedef int __attribute__((__vector_size__ (32))) U;
+ typedef double __attribute__((__vector_size__ (32))) F;
+ typedef _Decimal64 __attribute__((__vector_size__ (32))) D;
+ 
+ F
+ bar (void)
+ {
+   F f = __builtin_convertvector ((D) (-10.d < (D) ((D) (U) { 0, 0, 0, 0, 0, 0, 0, -0xe0 }
+ 						   >= (D) { 80000000 })), F);
+   return f;
+ }
+ 
+ F
+ foo ()
+ {
+   F x = bar ();
+   return x;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/goacc/tile-1.c gcc-10.4.0/gcc/testsuite/gcc.dg/goacc/tile-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/goacc/tile-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/goacc/tile-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ 
+ /* PR c/97880 */
+ 
+ void f ()
+ {
+   #pragma acc parallel loop tile(2, 3)
+   for (int i = 0; i < 8; i++)
+     for (long j = 0; j < 8; j++);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/gomp/clause-1.c gcc-10.4.0/gcc/testsuite/gcc.dg/gomp/clause-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/gomp/clause-1.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/gomp/clause-1.c	Tue Jun 28 08:54:29 2022
*************** foo (int x)
*** 56,62 ****
      ;
  #pragma omp p reduction (|:d) /* { dg-error "has invalid type for" } */
      ;
! #pragma omp p reduction (&&:d) /* { dg-error "has invalid type for" } */
      ;
  #pragma omp p copyin (d) /* { dg-error "must be 'threadprivate'" } */
      ;
--- 56,62 ----
      ;
  #pragma omp p reduction (|:d) /* { dg-error "has invalid type for" } */
      ;
! #pragma omp p reduction (&:d) /* { dg-error "has invalid type for" } */
      ;
  #pragma omp p copyin (d) /* { dg-error "must be 'threadprivate'" } */
      ;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/gomp/pr100508.c gcc-10.4.0/gcc/testsuite/gcc.dg/gomp/pr100508.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/gomp/pr100508.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/gomp/pr100508.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ /* PR middle-end/100508 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -g -fopenmp-simd" } */
+ 
+ typedef int __attribute__((__vector_size__(32))) V;
+ V j;
+ 
+ #pragma omp declare simd
+ int
+ foo (void)
+ {
+   V m = j;
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/guality/pr101905.c gcc-10.4.0/gcc/testsuite/gcc.dg/guality/pr101905.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/guality/pr101905.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/guality/pr101905.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do run { target { { i?86-*-* x86_64-*-* } && lp64 } } } */
+ /* { dg-options "-g -ffixed-r15" } */
+ /* { dg-skip-if "" { *-*-* }  { "*" } { "-O0" } } */
+ 
+ register unsigned long long regVar asm ("r15");
+ 
+ int
+ main()
+ {
+   regVar = 0xdeadbeefcafebabeULL;
+   asm ("nop" : "+r" (regVar));
+   asm volatile ("nop");		/* { dg-final { gdb-test . "regVar" "0xdeadbeefcafebabeULL" } } */
+   asm volatile ("nop" : : "r" (regVar));
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/guality/pr49888.c gcc-10.4.0/gcc/testsuite/gcc.dg/guality/pr49888.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/guality/pr49888.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/guality/pr49888.c	Tue Jun 28 08:54:29 2022
***************
*** 4,10 ****
  
  static int v __attribute__((used));
  
! static void __attribute__((noinline, noclone))
  f (int *p)
  {
    int c = *p;
--- 4,10 ----
  
  static int v __attribute__((used));
  
! static void __attribute__((noipa))
  f (int *p)
  {
    int c = *p;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr101066.c gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr101066.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr101066.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr101066.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do run } */
+ /* { dg-options "-Os -fno-ipa-cp -fno-inline" } */
+ 
+ int a = 1, c, d, e;
+ int *b = &a;
+ static int g(int *h) {
+   c = *h;
+   return d;
+ }
+ static void f(int *h) {
+   e = *h;
+   *b = 0;
+   g(h);
+ }
+ int main() {
+   f(b);
+   if (c)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr102714.c gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr102714.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr102714.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr102714.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,117 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-strict-aliasing -fdump-ipa-sra-details -fdump-tree-optimized" } */
+ 
+ typedef _Bool bool;
+ 
+ enum {
+  false = 0,
+  true = 1
+ };
+ 
+ struct xarray {
+  unsigned int xa_lock;
+  unsigned int xa_flags;
+  void * xa_head;
+ 
+ };
+ 
+ struct list_head {
+  struct list_head *next, *prev;
+ };
+ 
+ struct callback_head {
+  struct callback_head *next;
+  void (*func)(struct callback_head *head);
+ } __attribute__((aligned(sizeof(void *))));
+ 
+ struct xa_node {
+  unsigned char shift;
+  unsigned char offset;
+  unsigned char count;
+  unsigned char nr_values;
+  struct xa_node *parent;
+  struct xarray *array;
+  union {
+   struct list_head private_list;
+   struct callback_head callback_head;
+  };
+  void *slots[(1UL << (0 ? 4 : 6))];
+  union {
+   unsigned long tags[3][((((1UL << (0 ? 4 : 6))) + (64) - 1) / (64))];
+   unsigned long marks[3][((((1UL << (0 ? 4 : 6))) + (64) - 1) / (64))];
+  };
+ };
+ 
+ static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long shift_maxindex(unsigned int shift)
+ {
+  return ((1UL << (0 ? 4 : 6)) << shift) - 1;
+ }
+ 
+ static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) unsigned long node_maxindex(const struct xa_node *node)
+ {
+  return shift_maxindex(node->shift);
+ }
+ 
+ static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) struct xa_node *entry_to_node(void *ptr)
+ {
+  return (void *)((unsigned long)ptr & ~2UL);
+ }
+ 
+ static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) bool radix_tree_is_internal_node(void *ptr)
+ {
+  return ((unsigned long)ptr & 3UL) ==
+     2UL;
+ }
+ 
+ static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((no_instrument_function)) void *xa_mk_internal(unsigned long v)
+ {
+  return (void *)((v << 2) | 2);
+ }
+ 
+ static unsigned radix_tree_load_root(const struct xarray *root,
+   struct xa_node **nodep, unsigned long *maxindex)
+ {
+  struct xa_node *node =
+  ({
+     typeof(root->xa_head) ________p1 = ({(*(const volatile typeof(root->xa_head) *)&(root->xa_head)); });
+     ((typeof(*root->xa_head) *)(________p1));
+  });
+ 
+  *nodep = node;
+ 
+  if (__builtin_expect(!!(radix_tree_is_internal_node(node)), 1)) {
+   node = entry_to_node(node);
+   *maxindex = node_maxindex(node);
+   return node->shift + (0 ? 4 : 6);
+  }
+ 
+  *maxindex = 0;
+  return 0;
+ }
+ 
+ void *__radix_tree_lookup(const struct xarray *root,
+      unsigned long index, struct xa_node **nodep,
+      void ***slotp)
+ {
+  struct xa_node *node, *parent;
+  unsigned long maxindex;
+ 
+  restart:
+  parent = ((void *)0);
+  radix_tree_load_root(root, &node, &maxindex);
+  while (radix_tree_is_internal_node(node)) {
+ 
+   parent = entry_to_node(node);
+   if (node == xa_mk_internal(256))
+    goto restart;
+   if (parent->shift == 0)
+    break;
+  }
+  if (nodep)
+   *nodep = parent;
+ 
+  return node;
+ }
+ 
+ /* { dg-final { scan-ipa-dump-not "IPA_PARAM_OP_SPLIT" "sra" } } */
+ /* { dg-final { scan-tree-dump " ={v} " "optimized" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr103083-1.c gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr103083-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr103083-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr103083-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -Wno-pointer-to-int-cast" } */
+ 
+ struct b {int b;};
+ struct a {int a; struct b b;};
+ 
+ long i;
+ 
+ __attribute__ ((noinline))
+ static void test2 (struct b *b)
+ {
+   if (((int)b)&4)
+     __builtin_abort ();
+ }
+ 
+ __attribute__ ((noinline))
+ static void
+ test (struct a *a)
+ {
+   test2(a? &a->b : 0);
+ }
+ 
+ int
+ main()
+ {
+   test(0);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr103083-2.c gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr103083-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr103083-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr103083-2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-ipa-bit-cp -fdump-tree-optimized" } */
+ 
+ struct b {int b;};
+ struct a {int a; struct b b;};
+ 
+ void remove_any_mention (void);
+ 
+ __attribute__ ((noinline))
+ static void test2 (struct b *b)
+ {
+   if (b)
+     remove_any_mention ();
+ }
+ 
+ __attribute__ ((noinline))
+ static void
+ test (struct a *a)
+ {
+   test2(a? &a->b : 0);
+ }
+ 
+ int
+ foo()
+ {
+   test(0);
+   return 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "remove_any_mention" "optimized" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr105739.c gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr105739.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/ipa/pr105739.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/ipa/pr105739.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ 
+ __attribute__((noinline))
+ static int
+ test2(int a)
+ {
+         if (__builtin_constant_p (a))
+                 __builtin_abort ();
+         return a;
+ }
+ static int
+ test(int *a)
+ {
+         int val = *(volatile int *)a;
+         if (__builtin_constant_p (val))
+                 __builtin_abort ();
+         if (val)
+           return test2(val);
+         return 0;
+ }
+ int a;
+ int
+ main()
+ {
+         a = 0;
+         return test (&a);
+ }
+ /* { dg-final { scan-tree-dump "test2" "optimized" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_0.c gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_0.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_0.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_0.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,33 ----
+ /* { dg-lto-do run } */
+ /* { dg-lto-options { "-O2 -fno-strict-aliasing -flto" } } */
+ 
+ typedef unsigned long VALUE;
+ 
+ __attribute__ ((cold))
+ void rb_check_type(VALUE, int);
+ 
+ static VALUE
+ repro(VALUE dummy, VALUE hash)
+ {
+     if (hash == 0) {
+         rb_check_type(hash, 1);
+     }
+     else if (*(long *)hash) {
+         rb_check_type(hash, 1);
+     }
+ 
+ 
+     return *(long *)hash;
+ }
+ 
+ static VALUE (*that)(VALUE dummy, VALUE hash) = repro;
+ 
+ int
+ main(int argc, char **argv)
+ {
+         argc--;
+         that(0, argc);
+ 
+         rb_check_type(argc, argc);
+ 
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_1.c gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_1.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ typedef unsigned long VALUE;
+ 
+ 
+ __attribute__ ((noreturn)) void rexc_raise(VALUE mesg);
+ 
+ VALUE rb_donothing(VALUE klass);
+ 
+ static void
+ funexpected_type(VALUE x, int xt, int t)
+ {
+     rexc_raise(rb_donothing(0));
+ }
+ 
+ __attribute__ ((cold))
+ void
+ rb_check_type(VALUE x, int t)
+ {
+     int xt;
+ 
+     if (x == 0) {
+         funexpected_type(x, xt, t);
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_2.c gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_2.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ typedef unsigned long VALUE;
+ 
+ static void thing(void) {}
+ static void (*ptr)(void) = &thing;
+ 
+ VALUE
+ rb_donothing(VALUE klass)
+ {
+         ptr();
+         return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_3.c gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_3.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr101868_3.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr101868_3.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ typedef unsigned long VALUE;
+ 
+ __attribute__((noreturn))
+ void
+ rexc_raise(VALUE mesg)
+ {
+         __builtin_exit(0);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr99849_0.c gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr99849_0.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/lto/pr99849_0.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/lto/pr99849_0.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ /* PR lto/99849 */
+ /* { dg-lto-do link } */
+ /* { dg-require-effective-target fpic } */
+ /* { dg-require-effective-target shared } */
+ /* { dg-extra-ld-options { -shared } } */
+ /* { dg-lto-options { { -flto -flto-partition=1to1 -O2 -Wno-incompatible-pointer-types -Wno-discarded-qualifiers -fPIC } } } */
+ 
+ struct { struct A *a; } *b;
+ struct B { int *b; };
+ struct C { int *c; };
+ const struct D { struct C d; } d;
+ struct A { struct { struct C e; }; };
+ struct E { void *e; } e = { &( &(const struct D) { (void *) &d })->d };
+ struct C f = { &( &(const struct D) { (void *) &d })->d };
+ struct A g[] = { &e, &f };
+ void foo () { b->a = g; }
+ struct E h = { foo };
+ void bar ();
+ int baz () { bar (h); }
+ struct B i = { (int *) baz };
+ void qux ();
+ void corge () { qux (i); }
+ void *j __attribute__((__used__)) = corge;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr100225.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr100225.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr100225.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr100225.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,15 ----
+ /* PR rtl-optimization/100225 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fmodulo-sched" } */
+ 
+ void
+ vorbis_synthesis_lapout (void);
+ 
+ void
+ ov_info (int **lappcm, int ov_info_i)
+ {
+   while (ov_info_i < 1)
+     lappcm[ov_info_i++] = __builtin_alloca (1);
+ 
+   vorbis_synthesis_lapout ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr100509.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr100509.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr100509.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr100509.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O" } */
+ 
+ struct X {
+   int a;
+ };
+ const int a = 0;
+ static struct X A __attribute__((alias("a")));
+ void foo() { struct X b = A; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr100563.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr100563.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr100563.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr100563.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Og -Wno-pointer-to-int-cast" } */
+ unsigned long long e(void);
+ void f(int);
+ void a() {
+   short b = -1, c = (int)&b;
+   unsigned long long d = e();
+   f(b >= d);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr100788.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr100788.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr100788.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr100788.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile } */
+ /* { dg-options "--coverage" } */
+ 
+ void
+ foo()
+ {
+ #line 1
+ }
+ 
+ int main()
+ {
+   foo ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr100791.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr100791.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr100791.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr100791.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ static inline int __attribute__((__always_inline__))
+ foo ()
+ {
+   return log_bad_request(0, __builtin_va_arg_pack()); /* { dg-warning "implicit" } */
+ }
+ void log_bad_request() { foo (0); } /* { dg-warning "conflicting types" } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr101062.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr101062.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr101062.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr101062.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* PR middle-end/101062 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-toplevel-reorder -frename-registers" } */
+ 
+ union U { signed b : 5; };
+ int c;
+ volatile union U d[7] = { { 8 } };
+ short e = 1;
+ 
+ __attribute__((noipa)) void
+ foo ()
+ {
+   d[6].b = 0;
+   d[6].b = 0;
+   d[6].b = 0;
+   d[6].b = 0;
+   d[6].b = 0;
+   e = 0;
+   c = 0;
+ }
+ 
+ int
+ main ()
+ {
+   foo ();
+   if (e != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr101171.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr101171.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr101171.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr101171.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ /* PR c/101171 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ extern void foo (void);
+ int x = 0x1234;
+ 
+ void
+ bar (void)
+ {
+   if (x != (sizeof ((enum T) 0x1234)))	/* { dg-error "conversion to incomplete type" } */
+     foo ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr101266.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr101266.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr101266.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr101266.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ /* PR debug/101266 */
+ /* { dg-do compile } */
+ /* { dg-options "-g -O2" } */
+ 
+ void
+ foo (int (*p)[(int){1}])
+ {
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr101384.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr101384.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr101384.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr101384.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,39 ----
+ /* PR target/101384 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -Wno-psabi -w" } */
+ 
+ typedef unsigned char __attribute__((__vector_size__ (16))) U;
+ typedef unsigned short __attribute__((__vector_size__ (8 * sizeof (short)))) V;
+ 
+ U u;
+ V v;
+ 
+ __attribute__((noipa)) U
+ foo (void)
+ {
+   U y = (U) { 0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff,
+               0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff } + u;
+   return y;
+ }
+ 
+ __attribute__((noipa)) V
+ bar (void)
+ {
+   V y = (V) { 0x8000, 0xffff, 0x8000, 0xffff,
+               0x8000, 0xffff, 0x8000, 0xffff } + v;
+   return y;
+ }
+ 
+ int
+ main ()
+ {
+   U x = foo ();
+   for (unsigned i = 0; i < 16; i++)
+     if (x[i] != ((i & 3) ? 0xff : 0x80))
+       __builtin_abort ();
+   V y = bar ();
+   for (unsigned i = 0; i < 8; i++)
+     if (y[i] != ((i & 1) ? 0xffff : 0x8000))
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr102140.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr102140.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr102140.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr102140.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ /* PR target/102140 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-Og -fipa-cp -fno-tree-ccp -fno-tree-ter -Wno-psabi" } */
+ 
+ typedef int __attribute__((__vector_size__ (64))) U;
+ typedef __int128 __attribute__((__vector_size__ (64))) V;
+ 
+ int a, b;
+ 
+ static void
+ bar (char c, V v)
+ {
+   v *= c;
+   U u = a + (U) v;
+   (union { U b; }) { u };
+   b = 0;
+ }
+ 
+ void
+ foo (void)
+ {
+   bar (1, (V){((__int128) 9223372036854775808ULL) << 64});
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr102224.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr102224.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr102224.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr102224.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,49 ----
+ /* PR target/102224 */
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ __attribute__((noipa)) float
+ foo (float x)
+ {
+   return x * __builtin_copysignf (1.0f, x);
+ }
+ 
+ __attribute__((noipa)) float
+ bar (float x, float y)
+ {
+   return x * __builtin_copysignf (1.0f, y);
+ }
+ 
+ __attribute__((noipa)) float
+ baz (float z, float x)
+ {
+   return x * __builtin_copysignf (1.0f, x);
+ }
+ 
+ __attribute__((noipa)) float
+ qux (float z, float x, float y)
+ {
+   return x * __builtin_copysignf (1.0f, y);
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (1.0f) != 1.0f
+       || foo (-4.0f) != 4.0f)
+     __builtin_abort ();
+   if (bar (1.25f, 7.25f) != 1.25f
+       || bar (1.75f, -3.25f) != -1.75f
+       || bar (-2.25f, 7.5f) != -2.25f
+       || bar (-3.0f, -4.0f) != 3.0f)
+     __builtin_abort ();
+   if (baz (5.5f, 1.0f) != 1.0f
+       || baz (4.25f, -4.0f) != 4.0f)
+     __builtin_abort ();
+   if (qux (1.0f, 1.25f, 7.25f) != 1.25f
+       || qux (2.0f, 1.75f, -3.25f) != -1.75f
+       || qux (3.0f, -2.25f, 7.5f) != -2.25f
+       || qux (4.0f, -3.0f, -4.0f) != 3.0f)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr102478.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr102478.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr102478.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr102478.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* PR rtl-optimization/102478 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-if-conversion -Wno-div-by-zero" } */
+ 
+ unsigned a, b, c;
+ 
+ void
+ foo (void)
+ {
+   c |= __builtin_expect (65535 / a, 0) && 0 / 0;
+   b = 0;
+ }
+ 
+ void
+ bar (void)
+ {
+   if (a <= 65535)
+     __builtin_trap ();
+   b = 0;
+ }
+ 
+ void
+ baz (void)
+ {
+   if (a > 65535)
+     b = 0;
+   else
+     __builtin_trap ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr102798.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr102798.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr102798.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr102798.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,41 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3 -fno-tree-pta" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ 
+ __attribute__((__noipa__))
+ void BUF_reverse (unsigned char *out, const unsigned char *in, size_t size)
+ {
+   size_t i;
+   if (in)
+     {
+       out += size - 1;
+       for (i = 0; i < size; i++)
+         *out++ = *in++;
+     }
+   else
+     {
+       unsigned char *q;
+       char c;
+       q = out + size - 1;
+       for (i = 0; i < size ; i++)
+             {
+               *out++ = 1;
+             }
+     }
+ }
+ 
+ int
+ main (void)
+ {
+   unsigned char buf[40];
+   unsigned char buf1[40];
+   for (unsigned i = 0; i < sizeof (buf); i++)
+     buf[i] = i;
+   BUF_reverse (buf, 0, sizeof (buf));
+   for (unsigned i = 0; i < sizeof (buf); i++)
+     if (buf[i] != 1)
+       __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr103248.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr103248.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr103248.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr103248.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target fixed_point } */
+ /* { dg-options "-fnon-call-exceptions" } */
+ 
+ _Accum sa;
+ int c;
+ 
+ void div_csa() { c /= sa; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr103587.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr103587.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr103587.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr103587.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,7 ----
+ /* PR c/103587 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ [[foo::bar(
+ #pragma GCC ivdep
+ )]];	/* { dg-warning "attribute ignored" } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr103837.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr103837.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr103837.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr103837.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* PR rtl-optimization/103837 */
+ /* { dg-do compile } */
+ /* { dg-options "-Og -fcompare-debug -fmove-loop-invariants -fnon-call-exceptions -fexceptions -fdelete-dead-exceptions -fno-tree-dce -w" } */
+ 
+ unsigned long int
+ foo (int x)
+ {
+   double a;
+   int b;
+   unsigned long int ret = a;
+ 
+   for (;;)
+     {
+       b = !!((int) a);
+       a = x;
+     }
+ 
+   return ret;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr103860.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr103860.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr103860.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr103860.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,31 ----
+ /* PR rtl-optimization/103860 */
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ /* { dg-additional-options "-fPIC" { target fpic } } */
+ 
+ static int d, *e;
+ int f;
+ 
+ __attribute__((noinline)) signed char
+ foo (signed char b, signed char c)
+ {
+   return b + c;
+ }
+ 
+ int
+ main ()
+ {
+   signed char l;
+   for (l = -1; l; l = foo (l, 1))
+     {
+       while (d < 0)
+ 	;
+       if (d > 0)
+ 	{
+ 	  f = 0;
+ 	  *e = 0;
+ 	}
+     }
+   d = 0;
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104263.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104263.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104263.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104263.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ /* PR tree-optimization/104263 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fcompare-debug -fnon-call-exceptions -fno-inline-small-functions" } */
+ 
+ int n;
+ 
+ int
+ bar (void)
+ {
+   int a;
+ 
+   n = 0;
+   a = 0;
+ 
+   return n;
+ }
+ 
+ __attribute__ ((pure, returns_twice)) int
+ foo (void)
+ {
+   n = bar () + 1;
+   foo ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104511.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104511.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104511.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104511.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile { target dfp } } */
+ /* { dg-options "-O -Wno-psabi" } */
+ 
+ typedef _Float64 __attribute__((__vector_size__ (32))) F;
+ typedef _Decimal32 __attribute__((__vector_size__ (16))) D;
+ 
+ extern void bar (void);
+ 
+ D g;
+ void
+ foo (F f)
+ {
+   D d = __builtin_convertvector (f, D);
+   bar ();
+   g = d;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104544.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104544.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104544.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104544.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* PR rtl-optimization/104544 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O2 -fcompare-debug" } */
+ 
+ int m, n;
+ __int128 q;
+ 
+ void
+ bar (unsigned __int128 x, int y)
+ {
+   if (x)
+     q += y;
+ }
+ 
+ void
+ foo (void)
+ {
+   bar (!!q - 1, (m += m ? m : 1) < n);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104675-1.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104675-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104675-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104675-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* PR tree-optimization/104675 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ _Complex int
+ foo (_Complex int a)
+ {
+   return (-1 + -1i) - a;
+ }
+ 
+ _Complex int
+ bar (_Complex int a)
+ {
+   return -a - (1 + 1i);
+ }
+ 
+ _Complex int
+ baz (_Complex int a)
+ {
+   _Complex int b = -1 + -1i;
+   return b - a;
+ }
+ 
+ _Complex int
+ qux (_Complex int a)
+ {
+   _Complex int b = 1 + 1i;
+   return -a - b;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104675-2.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104675-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104675-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104675-2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* PR tree-optimization/104675 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void baz (int i);
+ 
+ void
+ bar (_Complex int c, short s)
+ {
+   c -= s;
+   baz (__real__ c + __imag__ c);
+ }
+ 
+ void
+ foo (void)
+ {
+   bar (-1 - 1i, 0);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104675-3.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104675-3.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104675-3.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104675-3.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* PR tree-optimization/104675 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ _Complex unsigned int
+ foo (_Complex unsigned int x)
+ {
+   return (x / 2) * 2;
+ }
+ 
+ _Complex unsigned int
+ bar (_Complex unsigned int x)
+ {
+   return (x * 2) / 2;
+ }
+ 
+ _Complex unsigned int
+ baz (_Complex unsigned int x)
+ {
+   _Complex unsigned int y = x / 2;
+   return y * 2;
+ }
+ 
+ _Complex unsigned int
+ qux (_Complex unsigned int x)
+ {
+   _Complex unsigned int y = x * 2;
+   return y / 2;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104786.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104786.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104786.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104786.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=gnu90" } */
+ 
+ void h(void *di, int num)
+ {
+   char (*t)[num] = di;
+   __asm__ ("" : "=X"( *t));
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr104910.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr104910.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr104910.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr104910.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/104910 */
+ /* { dg-do compile } */
+ /* { dg-options "-Os -fno-forward-propagate" } */
+ /* { dg-additional-options "-fstack-protector-all" { target fstack_protector } } */
+ 
+ void
+ bar (void);
+ 
+ void
+ foo (int x)
+ {
+   if (x)
+     bar ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105094.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105094.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105094.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105094.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ /* PR tree-optimization/105094 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ struct S { short a; char b[~(__SIZE_TYPE__)0 / __CHAR_BIT__ - 1]; };
+ void bar (struct S *);
+ 
+ void
+ foo (void)
+ {
+   struct S s = { 5 };
+   bar (&s);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105140.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105140.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105140.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105140.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Os -w -Wno-psabi" } */
+ /* { dg-skip-if "PR105147" { powerpc*-*-* s390*-*-* } } */
+ 
+ typedef char __attribute__((__vector_size__ (16 * sizeof (char)))) U;
+ typedef int __attribute__((__vector_size__ (16 * sizeof (int)))) V;
+ 
+ void bar ();
+ 
+ bar (int i, int j, int k, V v)
+ {
+ }
+ 
+ void
+ foo (void)
+ {
+   bar ((V){}, (V){}, (V){}, (U){});
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105173.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105173.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105173.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105173.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile { target dfp } } */
+ /* { dg-options "-Ofast" } */
+ 
+ int i;
+ 
+ int
+ foo(char c, _Decimal32 d)
+ {
+   d *= i;
+   d *= -(_Decimal64)c;
+   return d;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105211.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105211.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105211.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105211.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ /* PR rtl-optimization/105211 */
+ /* { dg-do compile } */
+ /* { dg-options "-Os -ffast-math" } */
+ /* { dg-add-options float32 } */
+ /* { dg-require-effective-target float32 } */
+ 
+ short
+ foo (_Float32 f)
+ {
+   return __builtin_roundf (f);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105226.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105226.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105226.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105226.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast" } */
+ /* { dg-require-effective-target indirect_jumps } */
+ 
+ #include <setjmp.h>
+ struct longjmp_buf {
+   jmp_buf buf;
+ };
+ void g ();
+ void f ()
+ {
+   int i, n;
+   long *a;
+   long *args;
+   struct longjmp_buf b;
+   setjmp (b.buf);
+   for (;;)
+     {
+       for (i = 0; i < n; i++)
+         a[i] = args[i];
+       g ();
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105250.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105250.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105250.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105250.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-w -Wno-psabi -O2" } */
+ /* { dg-skip-if "PR105266" { powerpc*-*-* s390*-*-* } } */
+ 
+ typedef int __attribute__((__vector_size__(4))) T;
+ typedef int __attribute__((__vector_size__(8))) U;
+ typedef int __attribute__((__vector_size__(16))) V;
+ typedef int __attribute__((__vector_size__(32))) W;
+ typedef _Float32 __attribute__((__vector_size__(16))) F;
+ typedef _Float64 __attribute__((__vector_size__(32))) G;
+ void foo();
+ 
+ foo(int p1, int p2, int p3, int p4, U p5, U p6, V p7, V p8, W p9, W p10, int p11,
+      T p12, int p13, U p14, U p15, V p16, V p17, W p18, W p19, T p20,
+      T p21, int p22, U p23, U p24, V p25, V p26, W p27, W p28, T p29,
+      T p30, int p31, W p32, W p33, T p34, T p35, int p36, int p37, int p38,
+      int p39, int p40, int p41, W p42, int p43, int p44, int p45, int p46, int p47, int p48,
+      V p49, W p50, T p51, int p52, int p53, U p54, F p55, int p56, int p57, int p58,
+      int p59, int p60, int p61, G p62)
+ {
+   foo(0, 0, 0, 0, (U){}, (U){}, (V){}, (V){}, (W){},
+        (W){}, 2, (T){}, 0, 0, 0, 0, (U){}, (U){},
+        (V){}, (V){}, (W){}, (W){}, (T){},
+        (T){}, 0, 0, 0, 0, (U){}, (U){}, (V){},
+        (V){}, (W){}, (W){}, (T){}, (T){}, 0, 0, 0,
+        0, 0, 0, (T){},
+        (T){}, (W){},
+        (W){}, (T){}, (T){}, 0, 0, 0, 0, 0, 0, (W){},
+        (V){}, (W){}, (T){}, 0, 0, (U){}, (F){});
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105257.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105257.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105257.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105257.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/105257 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-additional-options "-fpic" { target fpic } } */
+ 
+ extern int sigsetjmp (void **, int);
+ void *buf[32];
+ void (*fn) (void);
+ 
+ const char *
+ bar (void)
+ {
+   sigsetjmp (buf, 0);
+   fn ();
+   return "";
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr105333.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr105333.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr105333.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr105333.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ /* PR rtl-optimization/105333 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-Og -fno-tree-coalesce-vars -fno-tree-fre" } */
+ 
+ int g;
+ short s;
+ 
+ static inline unsigned short
+ bar (short a, __int128 b)
+ {
+   b ^= (unsigned long) -a;
+   __builtin_strncpy ((void *) &s, (void *) &a, 1);
+   b *= 14;
+   return b;
+ }
+ 
+ void
+ foo (void)
+ {
+   g *= (__int128) bar (1, 1);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr78213.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr78213.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr78213.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr78213.c	Tue Jun 28 08:54:29 2022
***************
*** 1,12 ****
  /* { dg-do compile } */
! /* { dg-options "-fself-test" } */
! 
! /* When this test was written -fself-test took no argument, but it
!    has subsequently gained a mandatory argument, giving the path
!    to selftest support files (within the srcdir).
!    It's not clear how to provide this path sanely from
!    within DejaGnu, so for now, this test is disabled.  */
! /* { dg-skip-if "" { *-*-* } } */
  
  /* Verify that -fself-test does not fail on a non empty source.  */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-fself-test=$srcdir/selftests" } */
  
  /* Verify that -fself-test does not fail on a non empty source.  */
  
*************** int i;
*** 15,18 ****
    while (i--)
      bar();
  }
! /* { dg-message "fself\-test: " "-fself-test" { target *-*-* } 0 } */
--- 8,12 ----
    while (i--)
      bar();
  }
! 
! /* { dg-regexp {^-fself-test: [0-9]+ pass\(es\) in [.0-9]+ seconds$|.*: note: self-tests are not enabled in this build$} } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr91441.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr91441.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr91441.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr91441.c	Tue Jun 28 08:54:29 2022
***************
*** 1,11 ****
  /* PR target/91441 */
  /* { dg-do compile  } */
- /* { dg-require-effective-target no_fsanitize_address }*/
  /* { dg-options "--param asan-stack=1 -fsanitize=kernel-address" } */
  
  int *bar(int *);
  int *f( int a)
  {
    return bar(&a);
  }
! /* { dg-warning ".'-fsanitize=kernel-address' with stack protection is not supported without '-fasan-shadow-offset=' for this target" "" { target *-*-* } 0 } */
--- 1,11 ----
  /* PR target/91441 */
  /* { dg-do compile  } */
  /* { dg-options "--param asan-stack=1 -fsanitize=kernel-address" } */
+ /* { dg-skip-if "no address sanitizer" { no_fsanitize_address } } */
  
  int *bar(int *);
  int *f( int a)
  {
    return bar(&a);
  }
! /* { dg-warning ".'-fsanitize=kernel-address' with stack protection is not supported without '-fasan-shadow-offset=' for this target" "" { target riscv*-*-* } 0 } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr95115.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr95115.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr95115.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr95115.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -ftrapping-math" } */
+ /* { dg-add-options ieee } */
+ /* { dg-require-effective-target fenv_exceptions } */
+ 
+ #include <fenv.h>
+ #include <stdlib.h>
+ 
+ double
+ x (void)
+ {
+   double d = __builtin_inf ();
+   return d / d;
+ }
+ 
+ int
+ main (void)
+ {
+   double r = x ();
+   if (!__builtin_isnan (r))
+ 	abort ();
+   if (!fetestexcept (FE_INVALID))
+ 	abort ();
+   exit (0);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr96260.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr96260.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr96260.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr96260.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* PR target/96260 */
  /* { dg-do compile } */
- /* { dg-require-effective-target no_fsanitize_address }*/
  /* { dg-options "--param asan-stack=1 -fsanitize=kernel-address -fasan-shadow-offset=0x100000" } */
  
  int *bar(int *);
  int *f( int a)
--- 1,7 ----
  /* PR target/96260 */
  /* { dg-do compile } */
  /* { dg-options "--param asan-stack=1 -fsanitize=kernel-address -fasan-shadow-offset=0x100000" } */
+ /* { dg-skip-if "no address sanitizer" { no_fsanitize_address } } */
  
  int *bar(int *);
  int *f( int a)
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr96307.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr96307.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr96307.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr96307.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* PR target/96307 */
  /* { dg-do compile } */
- /* { dg-require-effective-target no_fsanitize_address }*/
  /* { dg-additional-options "-fsanitize=kernel-address --param=asan-instrumentation-with-call-threshold=8" } */
  
  #include <limits.h>
  enum a {test1, test2, test3=INT_MAX};
--- 1,7 ----
  /* PR target/96307 */
  /* { dg-do compile } */
  /* { dg-additional-options "-fsanitize=kernel-address --param=asan-instrumentation-with-call-threshold=8" } */
+ /* { dg-skip-if "no address sanitizer" { no_fsanitize_address } } */
  
  #include <limits.h>
  enum a {test1, test2, test3=INT_MAX};
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr97953.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr97953.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr97953.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr97953.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -fno-tree-fre" } */
+ 
+ int __attribute__((noipa))
+ foo (int flag, int *p)
+ {
+   int val = *p;
+   if (flag)
+     {
+       if (val != 1)
+         __builtin_unreachable ();
+       return 0;
+     }
+   int val2 = *p;
+   return val2 == 2;
+ }
+ 
+ int main()
+ {
+   int i = 2;
+   if (foo (0, &i) != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr99830.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr99830.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr99830.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr99830.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* PR debug/99830 */
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-O2 -fno-expensive-optimizations -fno-split-wide-types -g" } */
+ 
+ int foo (long a, __int128 b, short c, int d, unsigned e, __int128 f)
+ {
+   __builtin_memmove (2 + (char *) &f, foo, 1);
+   c >>= (char) f;
+   return c;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/pr99990.c gcc-10.4.0/gcc/testsuite/gcc.dg/pr99990.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/pr99990.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/pr99990.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ /* PR c/99990 */
+ /* { dg-do compile } */
+ /* { dg-options "" } */
+ 
+ #include <stdarg.h>
+ 
+ void
+ foo ()
+ {
+   va_arg (0, long);	/* { dg-error "first argument to 'va_arg' not of type 'va_list'" } */
+   void *b[] = 0;	/* { dg-error "invalid initializer" } */
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/sso-16.c gcc-10.4.0/gcc/testsuite/gcc.dg/sso-16.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/sso-16.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/sso-16.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,100 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target int32plus } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __INT32_TYPE__ int32_t;
+ 
+ #define BIG_ENDIAN   __attribute__((scalar_storage_order("big-endian")))
+ 
+ /* host order version (little endian)*/
+ struct _ip6_addr {
+     union {
+         char addr8[16];
+         int32_t  addr32[4];
+     } u;
+ };
+ 
+ typedef struct _ip6_addr t_ip6_addr;
+ 
+ struct _net_addr {
+     char is_v4;
+     union {
+         int32_t        addr;
+         t_ip6_addr addr6;
+     } u;
+ };
+ 
+ typedef struct _net_addr t_net_addr;
+ 
+ /* big endian version */
+ struct _be_ip6_addr {
+     union {
+         char addr8[16];
+     } BIG_ENDIAN u;
+ } BIG_ENDIAN;
+ 
+ typedef struct _be_ip6_addr t_be_ip6_addr;
+ 
+ struct _be_net_addr {
+     char is_v4;
+     union {
+         t_be_ip6_addr addr6;
+         int32_t           addr;
+     } BIG_ENDIAN u;
+ } BIG_ENDIAN;
+ 
+ typedef struct _be_net_addr t_be_net_addr;
+ 
+ /* convert */
+ t_be_ip6_addr be_ip6_addr(const t_ip6_addr ip6)
+ {
+     t_be_ip6_addr rc = {
+         .u.addr8[0] = ip6.u.addr8[0],
+         .u.addr8[1] = ip6.u.addr8[1],
+         .u.addr8[2] = ip6.u.addr8[2],
+         .u.addr8[3] = ip6.u.addr8[3],
+         .u.addr8[4] = ip6.u.addr8[4],
+         .u.addr8[5] = ip6.u.addr8[5],
+         .u.addr8[6] = ip6.u.addr8[6],
+         .u.addr8[7] = ip6.u.addr8[7],
+         .u.addr8[8] = ip6.u.addr8[8],
+         .u.addr8[9] = ip6.u.addr8[9],
+         .u.addr8[10] = ip6.u.addr8[10],
+         .u.addr8[11] = ip6.u.addr8[11],
+         .u.addr8[12] = ip6.u.addr8[12],
+         .u.addr8[13] = ip6.u.addr8[13],
+         .u.addr8[14] = ip6.u.addr8[14],
+         .u.addr8[15] = ip6.u.addr8[15],
+     };
+     return rc;
+ }
+ 
+ t_be_net_addr __attribute__((noipa)) be_net_addr(const t_net_addr ip)
+ {
+     t_be_net_addr rc = {.is_v4 = ip.is_v4 };
+     if (ip.is_v4) {
+         rc.u.addr = ip.u.addr;
+     } else {
+         rc.u.addr6 = be_ip6_addr(ip.u.addr6);
+     }
+     return rc;
+ }
+ 
+ int main(void)
+ {
+     t_be_net_addr out = { };
+ 
+     t_net_addr in = {
+         .is_v4 = 0,
+         .u.addr6.u.addr8 =
+             { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
+     };
+ 
+     out = be_net_addr(in);
+ 
+     // actually first 4 bytes are swapped
+     if (in.u.addr6.u.addr8[0] != out.u.addr6.u.addr8[0])
+         __builtin_abort();
+ 
+     return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/20200727-0.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/20200727-0.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/20200727-0.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/20200727-0.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,82 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-g" } */
+ 
+ typedef long unsigned int size_t;
+ typedef signed int __int32_t;
+ typedef __int32_t int32_t;
+ typedef long int ptrdiff_t;
+ typedef enum {
+   BT_UNKNOWN = 0, BT_INTEGER, BT_LOGICAL, BT_REAL, BT_COMPLEX,   BT_DERIVED, BT_CHARACTER, BT_CLASS, BT_PROCEDURE, BT_HOLLERITH, BT_VOID,   BT_ASSUMED, BT_UNION, BT_BOZ } bt;
+ typedef int32_t GFC_INTEGER_4;
+ typedef ptrdiff_t index_type;
+ typedef size_t gfc_charlen_type;
+ typedef struct descriptor_dimension {
+     index_type _stride;
+     index_type lower_bound;
+   } descriptor_dimension;
+ typedef struct {
+   descriptor_dimension dim[15];
+  } gfc_full_array_i4;
+ typedef void (*formatted_dtio)(void *, GFC_INTEGER_4 *, char *,           gfc_full_array_i4 *,           GFC_INTEGER_4 *, char *,           gfc_charlen_type, gfc_charlen_type);
+ typedef enum { DECIMAL_POINT, DECIMAL_COMMA, DECIMAL_UNSPECIFIED } unit_decimal;
+ typedef struct st_parameter_dt {
+       union     {
+ 	  struct  {
+ 	      struct gfc_unit *current_unit;
+ 	      unsigned namelist_mode : 1;
+ 	      unsigned unit_is_internal : 1;
+ 	      formatted_dtio fdtio_ptr;
+ 	  } p;
+       } u;
+   } st_parameter_dt;
+ typedef struct gfc_unit {
+     int unit_number;
+     unit_decimal decimal_status;
+     int (*next_char_fn_ptr) (st_parameter_dt *);
+     void (*push_char_fn_ptr) (st_parameter_dt *, int);
+   } gfc_unit;
+ void read_real (st_parameter_dt *dtp)
+ {
+   int c;
+   int seen_dp;
+   seen_dp = 0;
+   for (;;)
+     {
+       c = ((dtp)->u.p.current_unit->next_char_fn_ptr (dtp));
+       if (c == ',' && dtp->u.p.current_unit->decimal_status == DECIMAL_COMMA)
+ 	c = '.';
+       switch (c)  {
+ 	case '.':
+ 	  if (seen_dp)      goto bad_real;
+ 	  seen_dp = 1;
+ 	  ((dtp)->u.p.current_unit->push_char_fn_ptr (dtp, c));
+ 	  goto real_loop;
+ 	case 'E':
+ 	case 'e':
+ 	case 'D':
+ 	case 'd':
+ 	case 'Q':
+ 	case 'q':
+ 	     goto exp1;
+ 	case '+':
+ 	case '-':
+ 	     ((dtp)->u.p.current_unit->push_char_fn_ptr (dtp, 'e'));
+ 	     goto got_repeat;
+       }
+     }
+ got_repeat:
+ real_loop:
+   for (;;)
+     {
+       c = ((dtp)->u.p.current_unit->next_char_fn_ptr (dtp));
+       switch (c)  {
+ 	case '.':
+ 	  if (seen_dp)      goto bad_real;
+ 	  seen_dp = 1;
+ 	  ((dtp)->u.p.current_unit->push_char_fn_ptr (dtp, c));
+       }
+     }
+ exp1:
+ bad_real:
+   return;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c	Tue Jun 28 08:54:29 2022
***************
*** 4,10 ****
  /* { dg-require-effective-target int128 } */
  /* { dg-require-effective-target fenv } */
  /* { dg-options "-frounding-math" } */
- /* { dg-xfail-run-if "see PR80556 c63" { x86_64-*-darwin* i68?-*-darwin* } { "*" } { "" } } */
  
  #include <fenv.h>
  #include <stdlib.h>
--- 4,9 ----
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c	Tue Jun 28 08:54:29 2022
***************
*** 4,10 ****
  /* { dg-require-effective-target int128 } */
  /* { dg-require-effective-target fenv } */
  /* { dg-options "-frounding-math" } */
- /* { dg-xfail-run-if "see PR80556 c63" { x86_64-*-darwin* i68?-*-darwin* } { "*" } { "" } } */
  
  #include <fenv.h>
  #include <stdlib.h>
--- 4,9 ----
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100053.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100053.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100053.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100053.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do run } */
+ 
+ int __attribute__((returns_twice,noipa)) x() { return 0; }
+ void __attribute__((noipa)) ar() {}
+ void __attribute__((noipa)) as() { __builtin_abort (); }
+ int a1, a2, a3;
+ void __attribute__((noipa)) v(int init)
+ {
+   if (!init) {
+     as();
+     if (a1)
+       goto aq;
+     x ();
+   }
+   ar();
+ aq:
+   if (!init)
+     as();
+ }
+ 
+ int main()
+ {
+   v(1);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100492.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100492.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100492.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100492.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-ftree-loop-distribution" } */
+ 
+ extern void abort (void);
+ 
+ signed char a, c;
+ int b, d, *e = &d, g;
+ signed static char f;
+ int main() {
+   int h = 0;
+   int a_ = a;
+   for (; a_ < 1; a = ++a_) {
+     int *i[5], **j = &i[4], ***k[3][2] = {{&j}}, ****l = &k[2][1], *****m = &l;
+     char *n = &c;
+     f = *e = g = 0;
+     for (; g < 2; g++) {
+       for (b = 0; b < 3; b++)
+         h = (h && (*n = 0)) == 0;
+       if (g)
+         break;
+     }
+   }
+   if (f != 0)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100566.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100566.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100566.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100566.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do run } */
+ 
+ volatile int s, c;
+ 
+ __attribute__((noipa)) void
+ foo (void)
+ {
+   if (c++ > 1)
+     __builtin_abort ();
+ }
+ 
+ __attribute__((noipa)) int
+ bar (void)
+ {
+   int i = 0, j = s;
+   if (j == 0)
+     goto lab;
+   for (i = 0; i < j; i++)
+     {
+     lab:
+       foo ();
+       if (!j)
+         goto lab;
+     }
+   return 0;
+ }
+ 
+ int
+ main ()
+ {
+   s = 1;
+   bar ();
+   if (c != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100672.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100672.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100672.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100672.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-w -Wno-psabi" } */
+ 
+ typedef long long __attribute__((__vector_size__ (4 * sizeof (long long)))) V;
+ 
+ V
+ foo (V v)
+ {
+   return -(v >> 1);
+ }
+ 
+ int
+ main (void)
+ {
+   V v = foo ((V) { -2, -4, -6, -8 });
+   if (v[0] != 1 || v[1] != 2 || v[2] != 3 || v[3] != 4)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100786.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100786.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100786.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100786.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-require-alias "" } */
+ 
+ const double a = 0;
+ extern int b __attribute__((alias("a")));
+ void inc() { b++; }
+ 
+ const int a2 = 0;
+ extern double b2 __attribute__((alias("a2")));
+ void inc2() { b2+=1; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100923.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100923.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100923.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100923.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do run } */
+ 
+ int a = 1, b, c, *d = &a, *e = &a, f;
+ void g(int h) {}
+ void k(int *l)
+ {
+   int ***j;
+   if (c)
+     {
+       *j = &l;
+       ***j;
+     }
+   g(*l);
+   *e = f;
+   if (*l)
+     {
+       int i = b / a;
+       a = i;
+     }
+ }
+ int main()
+ {
+   k(d);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100934.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100934.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr100934.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr100934.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do run } */
+ 
+ int a, b, c, d, e;
+ int main()
+ {
+   int f = 0, g = 0;
+   for (; f < 2; f++)
+     {
+       int h, i;
+       for (h = 0; h < 2; h++)
+ 	{
+ 	  b = e = g ? a % g : 0;
+ 	  c = d;
+ 	  for (i = 0; i < 1; i++)
+ 	    g = 0;
+ 	  for (; g < 2; g++)
+ 	    ;
+ 	}
+     }
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101009.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101009.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101009.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101009.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fno-tree-sra -fno-tree-pre -ftree-loop-distribution" } */
+ 
+ struct a {
+   unsigned b;
+   unsigned c;
+ } e, *f = &e;
+ int d = 1;
+ int main() {
+   for (; d; d--) {
+     struct a g[] = {{2, 1}, {2, 1}};
+     *f = g[1];
+   }
+   if (e.c != 1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101105.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101105.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101105.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101105.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run } */
+ 
+ short a;
+ int b[5][4] = {2, 2};
+ int d;
+ short e(int f) { return f == 0 || a && f == 1 ? 0 : a; }
+ int main() {
+   int g, h;
+   g = 3;
+   for (; g >= 0; g--) {
+     h = 3;
+     for (; h >= 0; h--)
+       b[g][h] = b[0][1] && e(1);
+   }
+   d = b[0][1];
+   if (d != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101173.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101173.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101173.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101173.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-floop-interchange" } */
+ 
+ int a[6][9];
+ int main()
+ {
+   a[1][3] = 8;
+   for (int b = 1; b <= 5; b++)
+     for (int d = 0; d <= 5; d++)
+ #pragma GCC unroll 0
+       for (int c = 0; c <= 5; c++)
+         a[b][c] = a[b][c + 2] & 216;
+   for (int e = 0; e < 6; e++)
+     for (int f = 0; f < 9; f++)
+       if (a[e][f] != 0)
+         __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101394.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101394.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr101394.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr101394.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ 
+ int a, b, c, d;
+ void h();
+ int e() __attribute__((returns_twice));
+ void f() {
+   int *g = (int *)(__INTPTR_TYPE__)c;
+   if (b) {
+     h();
+     g--;
+     if (a)
+       if (d)
+         h();
+   }
+   if (g++)
+     e();
+   c = (__INTPTR_TYPE__)g;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr102762.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr102762.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr102762.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr102762.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* We fail to diagnose the invalid __builtin_va_arg_pack use with -flto.  */
+ /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
+ 
+ void log_bad_request();
+ void foo(a, b)
+      int a, b;
+ {
+   log_bad_request(0, __builtin_va_arg_pack());  /* { dg-error "invalid use" } */
+   foo(0);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr103181.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr103181.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr103181.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr103181.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ 
+ typedef unsigned char __attribute__((__vector_size__ (2))) U;
+ typedef unsigned short S;
+ typedef unsigned int __attribute__((__vector_size__ (64))) V;
+ 
+ V v;
+ U a, b, c;
+ 
+ U
+ foo (S s)
+ {
+   v += __builtin_bswap16 (s) || (S) (a / ((U){3, 0}));
+   return b + c;
+ }
+ 
+ int
+ main (void)
+ {
+   U x = foo (4);
+   if (x[0] || x[1])
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr103237.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr103237.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr103237.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr103237.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-ftree-vectorize" } */
+ 
+ int g1;
+ unsigned int g2 = -1U;
+ static void __attribute__((noipa))
+ func_1()
+ {
+   int *l_1 = &g1;
+   for (int g3a = 0; g3a != 4; g3a++)
+     for (int l_2 = 0; l_2 <= 3; l_2++)
+       {
+         unsigned int *l_3 = &g2;
+         *l_1 = *l_3 ^= 1;
+       }
+ }
+ int
+ main()
+ {
+   func_1();
+   if (g1 != -1)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr103596.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr103596.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr103596.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr103596.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "--param case-values-threshold=1" } */
+ 
+ int n;
+ 
+ void
+ qux (int a)
+ {
+ }
+ 
+ int
+ baz (void)
+ {
+   return -1;
+ }
+ 
+ __attribute__ ((returns_twice)) int
+ bar (int b)
+ {
+   if (n != 0)
+     {
+       if (b != 2)
+         if (b != 0)
+           return n + b;
+ 
+       if (n == 2)
+         return 0;
+     }
+ }
+ 
+ void
+ foo (void)
+ {
+   qux (n);
+   bar (baz ());
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr104402.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr104402.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr104402.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr104402.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ 
+ _Complex int a;
+ char b;
+ void c() {
+   if (b != 2 + (long)(a != 0 ^ 0))
+     __builtin_abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr105163.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr105163.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr105163.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr105163.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target nonlocal_goto } */
+ 
+ #include <setjmp.h>
+ 
+ extern int bar (unsigned int *);
+ extern jmp_buf *baz (void);
+ struct C { int c1; };
+ void foo (struct C *x, int *z, int e)
+ {
+   unsigned int d = 0;
+   long f;
+   setjmp (*baz());
+   f = 1 + ~d;
+   d = 8;
+   if ((!0) && !e && bar(z)) *z = 1 + f;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr105198.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr105198.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr105198.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr105198.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fno-tree-pre -fpredictive-commoning" } */
+ 
+ static  __attribute__ ((noipa)) void
+ next_set(int *x, int n, int k)
+ {
+   int j = k - 1;
+   int tmp = x[j]++;
+   while (j > 0)
+     {
+       if (x[j] < n - (k - 1 -j))
+         break;
+       j--;
+       x[j]++;
+       tmp = x[j];
+     }
+   if (tmp != 2 || j != 1 || x[0] != 0 || x[1] != 2 || x[2] != 5)
+     __builtin_abort ();
+ }
+ 
+ int main()
+ {
+   int x[3] = {0, 1, 4};
+   next_set(x, 5, 3);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr96513.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr96513.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr96513.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr96513.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ 
+ typedef struct {
+   short a;
+   short b;
+ } c;
+ c *d;
+ int e, f, i, j, k, l, m, n, o, p;
+ c g, h;
+ void q() {
+   do {
+     if (o) {
+       (*d).a = (*d).b = d[e].a = d[e].a * 3 + 1 >> 15;
+       d[e].b = d[e].b * 3 + 1 >> 15;
+     }
+     n = -(d[e].b * g.b) >> 5;
+     m = d[e].b * g.a + 1 >> 5;
+     l = d[f].a * -d[f].b * h.b + 1 >> 5;
+     k = d[f].a * h.b + d[f].b * h.a + 1 >> 5;
+     j = n + l;
+     i = m - k;
+     (*d).a += j;
+     d[e].a -= i;
+     ++d;
+   } while (--p);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr98601.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr98601.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr98601.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr98601.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ /* PR rtl-optimization/98601 */
+ /* { dg-do compile } */
+ 
+ void
+ foo (void *p)
+ {
+   asm ("" : "=m" (*p));			/* { dg-warning "dereferencing 'void \\*' pointer" } */
+ }
+ 
+ void
+ bar (void *p)
+ {
+   asm volatile ("" : : "m" (*p));	/* { dg-warning "dereferencing 'void \\*' pointer" } */
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr98786.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr98786.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr98786.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr98786.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fno-tree-dce" } */
+ 
+ void
+ func_30 (void);
+ 
+ int __attribute__ ((pure, returns_twice))
+ func_38 (int g_15, int p_39)
+ {
+   return !!g_15 ? p_39 : 0;
+ }
+ 
+ void
+ func_26 (int func_26___trans_tmp_1)
+ {
+   long int l_37 = 0;
+   int __trans_tmp_1;
+ 
+   func_26___trans_tmp_1 = func_38 (func_26___trans_tmp_1, 1);
+   __trans_tmp_1 = func_38 (func_26___trans_tmp_1, l_37);
+   l_37 = 1;
+   func_30 ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr99880.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr99880.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr99880.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr99880.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-ftree-vectorize" } */
+ 
+ unsigned a;
+ int b, c, d, e;
+ void f() {
+   b = 5;
+   for (; b <= 51; b++)
+     ;
+   unsigned int g = -8;
+   while (g) {
+     g += 5;
+     int h = 10;
+     do {
+       h -= a = 1;
+       for (; a; a++)
+         ;
+       c *= c >= d >= b;
+     } while (h);
+     c -= e;
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr99954.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr99954.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/pr99954.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/pr99954.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do run } */
+ 
+ #include <assert.h>
+ 
+ #define CONTAINER_KIND union
+ 
+ typedef CONTAINER_KIND container { int value; } container;
+ 
+ void move(container* end, container* start) {
+     container* p;
+     for (p = end; p > start; p--) {
+ 	(p)->value = (p-1)->value;
+     }
+ }
+ 
+ #define N 100
+ 
+ int main(int argc, char* argv[]) {
+     container vals[N];
+     int i;
+     for (i=0; i<N; i++) {
+         vals[i].value = argc + i;
+     }
+     move(&vals[N-1], &vals[0]);
+     assert(vals[0].value == argc + 0);
+     for (i=1; i<N; i++) {
+         assert(vals[i].value == argc + i - 1);
+     }
+     return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/torture/tls/pr104777.c gcc-10.4.0/gcc/testsuite/gcc.dg/torture/tls/pr104777.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/torture/tls/pr104777.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/torture/tls/pr104777.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* PR rtl-optimization/104777 */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target tls } */
+  
+ int savestate_r;
+ int savestate_ssb;
+ extern void abort();
+ __thread int  loop;
+ void f (void)
+ {
+   int savestate_r0_5;
+   int savestate_r1_6;
+ 
+   __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r));
+   savestate_r0_5 = savestate_r;
+   if (savestate_r0_5 == 0)
+   {
+     __asm__ __volatile__("" :  : "m" (loop));
+     abort ();
+   }
+ 
+   __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r));
+   savestate_r1_6 = savestate_r;
+   if (savestate_r1_6 != 0)
+     return;
+ 
+   __asm__ __volatile__("" :  : "m" (loop));
+   abort ();
+ 
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-16.c gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-16.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-16.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-16.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /* PR/101280 */
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-linterchange-details" } */
+ 
+ void dummy (double *, double *);
+ #define LEN_2D 32
+ double aa[LEN_2D][LEN_2D], bb[LEN_2D][LEN_2D];
+ double s231(int iterations)
+ {
+ //    loop interchange
+ //    loop with data dependency
+     for (int nl = 0; nl < 100*(iterations/LEN_2D); nl++) {
+         for (int i = 0; i < LEN_2D; ++i) {
+             for (int j = 1; j < LEN_2D; j++) {
+                 aa[j][i] = aa[j - 1][i] + bb[j][i];
+             }
+         }
+         dummy(aa[0],bb[0]);
+     }
+ }
+ 
+ /* { dg-final { scan-tree-dump "loops interchanged" "linterchange" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr100278.c gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr100278.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr100278.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr100278.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void a()
+ {
+ #if defined __s390__
+   register int b asm("r5");
+ #elif defined __x86_64__
+   register int b asm("eax");
+ #else
+   volatile int b;
+ #endif
+   if (b)
+     b = 1;
+   for (; b;)
+     ;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr101824.c gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr101824.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/pr101824.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/pr101824.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-pcom-details -fdump-tree-optimized" } */
+ 
+ int main()
+ {
+   volatile int y;
+   void bar()
+     {
+       __builtin_printf ("%d", y);
+     }
+   while (y)
+     ;
+   return 0;
+ }
+ 
+ /* Make sure the load from y is correctly interpreted as volatile, even
+    when going through FRAME.  */
+ /* { dg-final { scan-tree-dump-not "Executing predictive commoning" "pcom" } } */
+ /* { dg-final { scan-tree-dump " ={v} FRAME" "optimized" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-93.c gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-93.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-93.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-93.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-fre1" } */
+ 
+ void bar ();
+ void foo (int pred, int *other)
+ {
+   *other = 0;
+   if (*other)
+     goto cnt;
+   if (pred)
+     {
+       *other = 1;
+ cnt:
+       if (!pred)
+         bar ();
+     }
+ }
+ 
+ /* The first VN pass should figure that if (!pred) is false because
+    if (*other) is and thus the predicate test is redundant.  */
+ /* { dg-final { scan-tree-dump-not "bar" "fre1" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.dg/vect/pr102046.c gcc-10.4.0/gcc/testsuite/gcc.dg/vect/pr102046.c
*** gcc-10.3.0/gcc/testsuite/gcc.dg/vect/pr102046.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.dg/vect/pr102046.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-O3 -fvect-cost-model=dynamic" } */
+ /* { dg-additional-options "-march=btver2" { target x86_64-*-* i?86-*-* } } */
+ 
+ struct S
+ {
+   unsigned a, b;
+ };
+ 
+ struct S g;
+ 
+ void
+ foo (struct S *o)
+ {
+   struct S s = g;
+   s.b *= 3;
+   s.a -= s.a / 2;
+   *o = s;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/pr99767.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/pr99767.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/pr99767.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/pr99767.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/99767 */
+ /* { dg-do compile } */
+ /* { dg-options " -O1 -fopenmp-simd -fno-tree-dce -march=armv8-a+sve" } */
+ 
+ int a[1024], b[1024];
+ 
+ void
+ foo (void)
+ {
+   #pragma omp simd
+   for (int i = 0; i < 1024; i++)
+     if (b[i] > 23) {
+       a[i] = b[i] + 1;
+       int v = 1 / 0;	/* { dg-warning "division by zero" } */
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/pr99988.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/pr99988.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/pr99988.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/pr99988.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile { target lp64 } } */
+ /* { dg-options "-O2 -mbranch-protection=standard" } */
+ /* { dg-final { scan-assembler-times {bti j} 13 } } */
+ int a;
+ int c();
+ int d();
+ int e();
+ int f();
+ int g();
+ void h() {
+   switch (a) {
+   case 0:
+   case 56:
+   case 57:
+     break;
+   case 58:
+   case 59:
+   case 61:
+   case 62:
+     c();
+   case 64:
+   case 63:
+     d();
+   case 66:
+   case 65:
+     d();
+   case 68:
+   case 67:
+     d();
+   case 69:
+   case 70:
+     d();
+   case 71:
+   case 72:
+   case 88:
+   case 87:
+     d();
+   case 90:
+   case 89:
+     d();
+   case 92:
+   case 1:
+     d();
+   case 93:
+   case 73:
+   case 4:
+     e();
+   case 76:
+   case 5:
+     f();
+   case 7:
+   case 8:
+   case 84:
+   case 85:
+     break;
+   case 6:
+   case 299:
+   case 9:
+   case 80:
+   case 2:
+   case 3:
+     e();
+   default:
+     g();
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr99246.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr99246.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr99246.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr99246.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-options "-Os" } */
+ 
+ #include <arm_sve.h>
+ extern char b[];
+ int x;
+ void f() {
+   while (x) {
+     x = svaddv(
+         svnot_z(svnot_z(svptrue_pat_b8(SV_VL6),
+                         svmov_z(svptrue_pat_b8(SV_VL1),
+                                 svptrue_pat_b16(SV_VL3))),
+                 svptrue_pat_b64(SV_VL2)),
+         svdup_s32(8193));
+     for (int j = x; j; j++)
+       b[j] = 0;
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr100048.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr100048.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr100048.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr100048.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-additional-options "-O2 -fno-schedule-insns" } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "arm_sve.h"
+ 
+ /*
+ ** foo:
+ **        ptrue   (p[0-7])\.d, all
+ **        pfalse  (p[0-7])\.b
+ **        ptrue   (p[0-7])\.s, all
+ **        trn1    (p[0-7])\.d, \2\.d, \3\.d
+ **        trn1    \2\.d, \1\.d, \3\.d
+ **        faddv   (h[0-31]), \4\, (z[0-31]).h
+ **        faddv   (h[0-31]), \2\, \6\.h
+ **        str     \5, [x0]
+ **        str     \7, [x0, 2]
+ **        ret
+ */
+ void foo(svfloat16_t in, float16_t *dst) {
+   const svbool_t pg_q0 = svdupq_n_b16(1, 0, 1, 0, 0, 0, 0, 0);
+   const svbool_t pg_f0 = svdupq_n_b16(1, 0, 0, 0, 0, 0, 0, 0);
+   dst[0] = svaddv_f16(pg_f0, in);
+   dst[1] = svaddv_f16(pg_q0, in);
+ }
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr97141.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr97141.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr97141.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr97141.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-options "-O3" } */
+ 
+ int a;
+ short b, c;
+ short d(short e, short f) { return e + f; }
+ void g(void) {
+   a = -9;
+   for (; a != 51; a = d(a, 5))
+     b |= c;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98119.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98119.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98119.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98119.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-options "-O3 -msve-vector-bits=512 -mtune=thunderx" } */
+ 
+ void
+ f (unsigned short *x)
+ {
+   for (int i = 0; i < 1000; ++i)
+     x[i] += x[i - 16];
+ }
+ 
+ /* { dg-final { scan-assembler-not {\tubfx\t[wx][0-9]+, [wx][0-9]+, #?1, #?5\n} } } */
+ /* { dg-final { scan-assembler-not {\tand\tx[0-9]+, x[0-9]+, #?-63\n} } } */
+ /* { dg-final { scan-assembler {\tubfx\t[wx][0-9]+, [wx][0-9]+, #?1, #?4\n} } } */
+ /* { dg-final { scan-assembler {\tand\tx[0-9]+, x[0-9]+, #?-31\n} } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do link } */
+ /* { dg-options "-flto -O -ftree-vectorize --param=aarch64-autovec-preference=3" } */
+ /* { dg-additional-sources "pr98268-2.c" } */
+ 
+ short d, e;
+ void f(char, long*);
+ int main() {
+   long x;
+   f(-114, &x);
+   return d == e;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98268-2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -ftree-vectorize --param=aarch64-autovec-preference=3" } */
+ 
+ extern short d[], e[];
+ void f(char a, long *b) {
+   for (int c = 0; c < a - 12; c++) {
+     d[c] = b[c];
+     e[c] = 0;
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98726.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98726.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr98726.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr98726.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-options "-O3" } */
+ 
+ int a, c;
+ char b;
+ int d() {
+   a = 0;
+   for (; a <= 21; a = (short)a + 1)
+     b &= c;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_1.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ #include <arm_sve.h>
+ 
+ static void e(short *g, short p2) { *g ^= p2; }
+ static short m[23];
+ int main() {
+   for (unsigned i = 0; i < 23; ++i)
+     m[i] = 4;
+   if (svaddv(svptrue_pat_b32(SV_VL1), svdup_u32(1)) != 1)
+     __builtin_abort();
+   for (unsigned i = 0; i < 3; ++i)
+     e(m, m[i]);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_2.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sve/pr99929_2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-options "-O2 -ftree-vectorize" } */
+ 
+ #include "pr99929_1.c"
+ 
+ /* { dg-final { scan-assembler {\tptrue\tp[0-7].[bhsd], vl1\n} } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf -moutline-atomics" } */
+ 
+ #include "sync-comp-swap.x"
+ 
+ /* { dg-final { scan-assembler-times "bl.*__aarch64_cas4_sync" 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sync-op-acquire-ool.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sync-op-acquire-ool.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sync-op-acquire-ool.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sync-op-acquire-ool.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,6 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8-a+nolse -O2 -moutline-atomics" } */
+ 
+ #include "sync-op-acquire.x"
+ 
+ /* { dg-final { scan-assembler-times "bl.*__aarch64_swp4_sync" 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sync-op-full-ool.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sync-op-full-ool.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/sync-op-full-ool.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/sync-op-full-ool.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv8-a+nolse -O2 -moutline-atomics" } */
+ 
+ #include "sync-op-full.x"
+ 
+ /* { dg-final { scan-assembler-times "bl.*__aarch64_ldadd4_sync" 1 } } */
+ /* { dg-final { scan-assembler-times "bl.*__aarch64_ldclr4_sync" 1 } } */
+ /* { dg-final { scan-assembler-times "bl.*__aarch64_ldeor4_sync" 1 } } */
+ /* { dg-final { scan-assembler-times "bl.*__aarch64_ldset4_sync" 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/target_attr_20.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/target_attr_20.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/target_attr_20.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/target_attr_20.c	Tue Jun 28 08:54:29 2022
*************** bar (void)
*** 24,27 ****
      }
  }
  
! /* { dg-final { scan-assembler-not "bl.*__aarch64_cas2_acq_rel" } } */
--- 24,27 ----
      }
  }
  
! /* { dg-final { scan-assembler-not "bl.*__aarch64_cas2_sync" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/target_attr_21.c gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/target_attr_21.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/aarch64/target_attr_21.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/aarch64/target_attr_21.c	Tue Jun 28 08:54:29 2022
*************** bar (void)
*** 24,27 ****
      }
  }
  
! /* { dg-final { scan-assembler-times "bl.*__aarch64_cas2_acq_rel" 1 } } */
--- 24,27 ----
      }
  }
  
! /* { dg-final { scan-assembler-times "bl.*__aarch64_cas2_sync" 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/alpha/pr105209.c gcc-10.4.0/gcc/testsuite/gcc.target/alpha/pr105209.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/alpha/pr105209.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/alpha/pr105209.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -ftrapv -mcpu=ev4" } */
+ 
+ typedef struct tnode_t {
+         struct tnode_t *tn_left, *tn_right;
+         int v_quad;
+ } tnode_t;
+ 
+ int constant_addr(const tnode_t *, long *);
+ int constant_addr(const tnode_t *tn, long *offsp)
+ {
+         long offs1 = 0, offs2 = 0;
+ 
+         if (tn->v_quad > 0) {
+                 offs1 = tn->v_quad;
+                 return 0;
+         } else if (tn->v_quad > -1) {
+                 offs2 = tn->tn_right->v_quad;
+                 if (!constant_addr(tn->tn_left, &offs1))
+                         return 0;
+         } else {
+                 return 0;
+         }
+         *offsp = offs1 + offs2;
+         return 1;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/acle/pr100856.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/acle/pr100856.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/acle/pr100856.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/acle/pr100856.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target arm_v8_1m_main_cde_mve_ok } */
+ /* { dg-add-options arm_v8_1m_main_cde_mve } */
+ 
+ #include "arm_cde.h"
+ 
+ int main()
+ {
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/attr-neon.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/attr-neon.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/attr-neon.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/attr-neon.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_neon_ok } */
  /* { dg-options "-O2 -ftree-vectorize" } */
! /* { dg-add-options arm_neon arm_v8_vfp } */ /* The arm_v8_vfp adds -mfpu=fp-armv8 to the command line, overriding any -mfpu= option set by arm_neon, thus ensuring that the attributes below really are checked for correct fpu selection.  */
  
  /* Verify that neon instructions are emitted once.  */
  void __attribute__ ((target("fpu=neon")))
--- 1,10 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_neon_ok } */
  /* { dg-options "-O2 -ftree-vectorize" } */
! /* { dg-add-options arm_neon arm_v8_vfp } */
! /* The arm_v8_vfp adds -mfpu=fp-armv8 to the command line, overriding any
!    -mfpu= option set by arm_neon, thus ensuring that the attributes below
!    really are checked for correct fpu selection.  */
  
  /* Verify that neon instructions are emitted once.  */
  void __attribute__ ((target("fpu=neon")))
*************** f3(int n, int x[], int y[]) {
*** 18,23 ****
      y[i] = x[i] << 3;
  }
  
! /* { dg-final { scan-assembler-times "\.fpu vfp" 1 } } */
! /* { dg-final { scan-assembler-times "\.fpu neon" 1 } } */
  /* { dg-final { scan-assembler-times "vshl" 1 } } */
--- 21,26 ----
      y[i] = x[i] << 3;
  }
  
! /* { dg-final { scan-assembler-times "\.fpu\\s+vfp\n" 1 } } */
! /* { dg-final { scan-assembler-times "\.fpu\\s+neon\n" 1 } } */
  /* { dg-final { scan-assembler-times "vshl" 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/attr-neon2.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/attr-neon2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/attr-neon2.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/attr-neon2.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_neon_ok } */
  /* { dg-require-effective-target arm_fp_ok } */
! /* { dg-options "-O2" } */
  /* { dg-add-options arm_fp } */
  
  /* Reset fpu to a value compatible with the next pragmas.  */
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_neon_ok } */
  /* { dg-require-effective-target arm_fp_ok } */
! /* { dg-options "-Ofast" } */
  /* { dg-add-options arm_fp } */
  
  /* Reset fpu to a value compatible with the next pragmas.  */
***************
*** 12,34 ****
  #include <arm_neon.h>
  
  /* Check that pragma target is used.  */
! int8x8_t 
! my (int8x8_t __a, int8x8_t __b)
  {
    return __a + __b;
  }
  
  #pragma GCC pop_options
  
! /* Check that command line option is restored.  */
! int8x8_t 
! my1 (int8x8_t __a, int8x8_t __b)
  {
    return __a + __b;
  }
  
! /* { dg-final { scan-assembler-times "\.fpu vfp" 1 } } */
! /* { dg-final { scan-assembler-times "\.fpu neon" 1 } } */
! /* { dg-final { scan-assembler "vadd" } } */
! 
! 
--- 12,47 ----
  #include <arm_neon.h>
  
  /* Check that pragma target is used.  */
! /*
! **my:
! **	...
! **	vadd.f32	d[0-9]+, d[0-9]+, d[0-9]+
! **	...
! **	bx	lr
! */
! float32x2_t
! my (float32x2_t __a, float32x2_t __b)
  {
    return __a + __b;
  }
  
  #pragma GCC pop_options
  
! /* Check that fpu=vfp is restored.  */
! /*
! **my1:
! **	...
! **	vadd.f32	s[0-9]+, s[0-9]+, s[0-9]+
! **	vadd.f32	s[0-9]+, s[0-9]+, s[0-9]+
! **	...
! **	bx	lr
! */
! float32x2_t
! my1 (float32x2_t __a, float32x2_t __b)
  {
    return __a + __b;
  }
  
! /* { dg-final { scan-assembler "\.fpu\\s+vfp\n" } } */
! /* { dg-final { scan-assembler "\.fpu\\s+neon\n" } } */
! /* { dg-final { check-function-bodies "**" "" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/attr-neon3.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/attr-neon3.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/attr-neon3.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/attr-neon3.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_crypto_ok } */
  /* { dg-require-effective-target arm_fp_ok } */
! /* { dg-options "-O2" } */
  /* { dg-add-options arm_fp } */
  
  /* Reset fpu to a value compatible with the next pragmas.  */
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target arm_crypto_ok } */
  /* { dg-require-effective-target arm_fp_ok } */
! /* { dg-options "-Ofast" } */
  /* { dg-add-options arm_fp } */
  
  /* Reset fpu to a value compatible with the next pragmas.  */
***************
*** 11,38 ****
  #include <arm_neon.h>
  
  /* Check that neon is used.  */
! int8x8_t __attribute__ ((target("fpu=neon")))
! my (int8x8_t __a, int8x8_t __b)
  {
    return __a + __b;
  }
  
  /* Check that crypto builtins are recognized.  */
  poly128_t __attribute__ ((target("fpu=crypto-neon-fp-armv8")))
  foo (poly128_t* ptr)
  {
    return vldrq_p128 (ptr);
  }
  
! /* Check that default mode is restored.  */
! int8x8_t
! my1 (int8x8_t __a, int8x8_t __b)
  {
    return __a + __b;
  }
  
! /* { dg-final { scan-assembler-times "\.fpu vfp" 1 } } */
! /* { dg-final { scan-assembler-times "\.fpu neon" 1 } } */
! /* { dg-final { scan-assembler-times "\.fpu crypto-neon-fp-armv8" 1 } } */
! /* { dg-final { scan-assembler-times "vld1" 1 } } */
! /* { dg-final { scan-assembler-times "vadd" 1} } */
--- 11,64 ----
  #include <arm_neon.h>
  
  /* Check that neon is used.  */
! /*
! **my:
! **	...
! **	vadd.f32	d[0-9]+, d[0-9]+, d[0-9]+
! **	...
! **	bx	lr
! */
! float32x2_t __attribute__ ((target("fpu=neon")))
! my (float32x2_t __a, float32x2_t __b)
  {
    return __a + __b;
  }
  
  /* Check that crypto builtins are recognized.  */
+ /*
+ **foo:
+ **	...
+ ** (
+ **	vld1.64	{d[0-9]+-d[0-9]+}, \[r[0-9]+:64\]
+ ** |
+ **	vld1.64	{d[0-9]+}, \[r[0-9]+:64\]!
+ **	vld1.64	{d[0-9]+}, \[r[0-9]+:64\]
+ ** )
+ **	...
+ **	bx	lr
+ */
+ 
  poly128_t __attribute__ ((target("fpu=crypto-neon-fp-armv8")))
  foo (poly128_t* ptr)
  {
    return vldrq_p128 (ptr);
  }
  
! /* Check that fpu=vfp is restored.  */
! /*
! **my1:
! **	...
! **	vadd.f32	s[0-9]+, s[0-9]+, s[0-9]+
! **	vadd.f32	s[0-9]+, s[0-9]+, s[0-9]+
! **	...
! **	bx	lr
! */float32x2_t
! my1 (float32x2_t __a, float32x2_t __b)
  {
    return __a + __b;
  }
  
! /* { dg-final { scan-assembler "\.fpu\\s+vfp\n" } } */
! /* { dg-final { scan-assembler "\.fpu\\s+neon\n" } } */
! /* { dg-final { scan-assembler "\.fpu\\s+crypto-neon-fp-armv8\n" } } */
! /* { dg-final { check-function-bodies "**" "" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c	Tue Jun 28 08:54:29 2022
*************** void bar(f func, int a)
*** 8,11 ****
    func(a);
  }
  
! /* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r4:SI\\\]\\\]" "final" } } */
--- 8,12 ----
    func(a);
  }
  
! /* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r4:SI\\\]\\\]" "final" { target { ! arm_v8_1m_mve_ok } } } } */
! /* { dg-final { scan-rtl-dump "call unspec\\\[\\\[r\[0-7\]:SI\\\]\\\]" "final" { target { arm_v8_1m_mve_ok } } } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/cmse-20.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,28 ----
+ /* This test is executed only if the execution engine supports CMSE instructions.  */
+ /* { dg-options "--save-temps -mcmse -Wl,--section-start,.gnu.sgstubs=0x00400000" } */
+ 
+ #include <arm_cmse.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ 
+ void __attribute__((cmse_nonsecure_entry))
+ secure_fun (int a, int *p)
+ {
+   void *b = cmse_check_address_range ((void *)p, a, 1);
+ 
+   if (b == NULL)
+    __builtin_abort ();
+   printf("%d", *((int *)b));
+ }
+ 
+ int
+ main (void)
+ {
+   int *ptr;
+   int size = 1;
+   ptr = (int *) calloc (1, sizeof(int *));
+   *ptr = 1315852292;
+   secure_fun (size, ptr);
+   free (ptr);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
+ 
+ #include "../../../cmse-13.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr2, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr3, r4" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r1, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[1,4-9\]|r10|fp|ip), ){9}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[1,4-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler-not "vmov" } } */
+ /* { dg-final { scan-assembler-not "vmsr" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
+ 
+ #include "../../../cmse-7.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler-not "vmov" } } */
+ /* { dg-final { scan-assembler-not "vmsr" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
+ 
+ #include "../../../cmse-8.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler-not "vmov" } } */
+ /* { dg-final { scan-assembler-not "vmsr" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+ /* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
+ 
+ #include "../../../cmse-13.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr2, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr3, r4" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r1, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[1,4-9\]|r10|fp|ip), ){9}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[1,4-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+ /* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
+ 
+ #include "../../../cmse-7.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+ /* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
+ 
+ #include "../../../cmse-8.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+ /* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
+ 
+ #include "../../../cmse-7.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -mfix-cmse-cve-2021-35465" }  */
+ /* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
+ /* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
+ 
+ #include "../../../cmse-8.x"
+ 
+ /* Checks for saving and clearing prior to function call.  */
+ /* Shift on the same register as blxns.  */
+ /* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
+ /* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
+ /* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
+ /* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ /* { dg-final { scan-assembler "vlstm\tsp" } } */
+ /* Check the right registers are cleared and none appears twice.  */
+ /* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
+ /* Check that the right number of registers is cleared and thus only one
+    register is missing.  */
+ /* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
+ /* Check that no cleared register is used for blxns.  */
+ /* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
+ /* Check for v8.1-m variant of erratum work-around.  */
+ /* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
+ /* { dg-final { scan-assembler "vlldm\tsp" } } */
+ /* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
+ 
+ /* Now we check that we use the correct intrinsic to call.  */
+ /* { dg-final { scan-assembler "blxns" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/pr100333.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/pr100333.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/pr100333.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/pr100333.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-mcmse" } */
+ typedef void __attribute__((cmse_nonsecure_call)) t(void);
+ t g;
+ void f() {
+   g();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/pr99725.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/pr99725.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cmse/pr99725.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cmse/pr99725.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,5 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-mcmse -g" } */
+ typedef int __attribute__((cmse_nonsecure_call)) (*t)();
+ t f;
+ void g() { f(); }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-hard.c	Tue Jun 28 08:54:29 2022
***************
*** 1,12 ****
  /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
! /* { dg-additional-options "-mcpu=cortex-m55+nofp -mfloat-abi=hard -mfpu=auto --save-temps" } */
  /* { dg-final { scan-assembler "\.arch_extension mve" } } */
  /* { dg-final { scan-assembler "\.arch_extension dsp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp.dp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve.fp" } } */
- /* { dg-final { scan-assembler-not "\.fpu" } } */
  
  int
  f ()
--- 1,12 ----
  /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
! /* { dg-additional-options "-mcpu=cortex-m55+nofp -mthumb -mfloat-abi=hard -mfpu=auto --save-temps" } */
! /* { dg-final { scan-assembler "\.fpu softvfp" } } */
  /* { dg-final { scan-assembler "\.arch_extension mve" } } */
  /* { dg-final { scan-assembler "\.arch_extension dsp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp.dp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve.fp" } } */
  
  int
  f ()
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-flag-softfp.c	Tue Jun 28 08:54:29 2022
***************
*** 1,12 ****
  /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
! /* { dg-additional-options "-mcpu=cortex-m55+nofp -mfloat-abi=softfp -mfpu=auto --save-temps" } */
  /* { dg-final { scan-assembler "\.arch_extension mve" } } */
  /* { dg-final { scan-assembler "\.arch_extension dsp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp.dp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve.fp" } } */
- /* { dg-final { scan-assembler-not "\.fpu" } } */
  
  int
  f ()
--- 1,12 ----
  /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
! /* { dg-additional-options "-mcpu=cortex-m55+nofp -mthumb -mfloat-abi=softfp -mfpu=auto --save-temps" } */
! /* { dg-final { scan-assembler "\.fpu softvfp" } } */
  /* { dg-final { scan-assembler "\.arch_extension mve" } } */
  /* { dg-final { scan-assembler "\.arch_extension dsp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp.dp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve.fp" } } */
  
  int
  f ()
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/cortex-m55-nofp-nomve-flag-softfp.c	Tue Jun 28 08:54:29 2022
***************
*** 1,12 ****
  /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
! /* { dg-additional-options "-mcpu=cortex-m55+nomve+nofp -mfloat-abi=softfp -mfpu=auto --save-temps" } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve.fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp.dp" } } */
  /* { dg-final { scan-assembler "\.arch_extension dsp" } } */
- /* { dg-final { scan-assembler-not "\.fpu" } } */
  
  int
  f ()
--- 1,12 ----
  /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
! /* { dg-additional-options "-mcpu=cortex-m55+nomve+nofp -mthumb -mfloat-abi=softfp -mfpu=auto --save-temps" } */
! /* { dg-final { scan-assembler "\.fpu softvfp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension mve.fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp" } } */
  /* { dg-final { scan-assembler-not "\.arch_extension fp.dp" } } */
  /* { dg-final { scan-assembler "\.arch_extension dsp" } } */
  
  int
  f ()
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/multilib.exp gcc-10.4.0/gcc/testsuite/gcc.target/arm/multilib.exp
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/multilib.exp	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/multilib.exp	Tue Jun 28 08:54:29 2022
*************** if {[multilib_config "rmprofile"] } {
*** 840,845 ****
--- 840,958 ----
  	{-mcpu=cortex-m55+nomve+nofp -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
  	{-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
  	{-mcpu=cortex-m55+nodsp+nofp -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=vfpv3xd-fp16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-sp-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp.dp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8-m.main+fp.dp+dsp+cdecp0 -mfpu=fpv5-d16 -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8.1-m.main+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+dsp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+dsp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8.1-m.main+dsp+fp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8.1-m.main+dsp+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8.1-m.main+mve+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8.1-m.main+mve/hard"
+ 	{-march=armv8.1-m.main+mve+fp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8.1-m.main+mve+fp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+fp/softfp"
+ 	{-march=armv8.1-m.main+mve.fp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+fp/hard"
+ 	{-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=soft} "thumb/v8-m.main/nofp"
+ 	{-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=softfp} "thumb/v8-m.main+dp/softfp"
+ 	{-march=armv8.1-m.main+mve+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
+ 	{-march=armv8.1-m.main+mve.fp+fp.dp+cdecp0 -mfpu=auto -mfloat-abi=hard} "thumb/v8-m.main+dp/hard"
      } {
  	check_multi_dir $opts $dir
      }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu1.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu1.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu1.c	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,4 ----
+ /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-require-effective-target arm_hard_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
***************
*** 8,15 ****
  int8x16_t
  foo1 (int8x16_t value)
  {
!   int8x16_t b = value;
    return b;
  }
- 
- /* { dg-final { scan-assembler-not "\.fpu softvfp" }  } */
--- 9,14 ----
  int8x16_t
  foo1 (int8x16_t value)
  {
!   int8x16_t b = -value;
    return b;
  }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,4 ----
+ /* { dg-do assemble } */
  /* { dg-require-effective-target arm_v8_1m_mve_ok } */
  /* { dg-require-effective-target arm_softfp_ok } */
  /* { dg-add-options arm_v8_1m_mve } */
***************
*** 8,15 ****
  int8x16_t
  foo1 (int8x16_t value)
  {
!   int8x16_t b = value;
    return b;
  }
- 
- /* { dg-final { scan-assembler-not "\.fpu softvfp" }  } */
--- 9,14 ----
  int8x16_t
  foo1 (int8x16_t value)
  {
!   int8x16_t b = -value;
    return b;
  }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/pr101016.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,136 ----
+ /* { dg-require-effective-target arm_v8_1m_mve_fp_ok } */
+ /* { dg-add-options arm_v8_1m_mve_fp } */
+ 
+ #include "arm_mve.h"
+ 
+ void
+ foo (void)
+ {
+   mve_pred16_t p;
+   int8x16_t a;
+   int8_t a1[10];
+   int16x8_t b;
+   int16_t b1[10];
+   int32x4_t c;
+   int32_t c1[10];
+   uint8x16_t ua;
+   uint8_t ua1[10];
+   uint16x8_t ub;
+   uint16_t ub1[10];
+   uint32x4_t uc;
+   uint32_t uc1[10];
+   float16x8_t fb;
+   float16_t fb1[10];
+   float32x4_t fc;
+   float32_t fc1[10];
+ 
+   fb = vld1q (fb1);
+   fc = vld1q (fc1);
+   b = vld1q (b1);
+   c = vld1q (c1);
+   a = vld1q (a1);
+   ub = vld1q (ub1);
+   uc = vld1q (uc1);
+   ua = vld1q (ua1);
+   fb = vld1q_z (fb1, p);
+   fc = vld1q_z (fc1, p);
+   b = vld1q_z (b1, p);
+   c = vld1q_z (c1, p);
+   a = vld1q_z (a1, p);
+   ub = vld1q_z (ub1, p);
+   uc = vld1q_z (uc1, p);
+   ua = vld1q_z (ua1, p);
+ }
+ 
+ void
+ foo1 (void)
+ {
+   mve_pred16_t p;
+   int8x16x2_t a;
+   int8_t a1[10];
+   int16x8x2_t b;
+   int16_t b1[10];
+   int32x4x2_t c;
+   int32_t c1[10];
+   uint8x16x2_t ua;
+   uint8_t ua1[10];
+   uint16x8x2_t ub;
+   uint16_t ub1[10];
+   uint32x4x2_t uc;
+   uint32_t uc1[10];
+   float16x8x2_t fb;
+   float16_t fb1[10];
+   float32x4x2_t fc;
+   float32_t fc1[10];
+ 
+   fb = vld2q (fb1);
+   fc = vld2q (fc1);
+   b = vld2q (b1);
+   c = vld2q (c1);
+   a = vld2q (a1);
+   ub = vld2q (ub1);
+   uc = vld2q (uc1);
+   ua = vld2q (ua1);
+ }
+ 
+ void
+ foo2 (void)
+ {
+   mve_pred16_t p;
+   int8x16x4_t a;
+   int8_t a1[10];
+   int16x8x4_t b;
+   int16_t b1[10];
+   int32x4x4_t c;
+   int32_t c1[10];
+   uint8x16x4_t ua;
+   uint8_t ua1[10];
+   uint16x8x4_t ub;
+   uint16_t ub1[10];
+   uint32x4x4_t uc;
+   uint32_t uc1[10];
+   float16x8x4_t fb;
+   float16_t fb1[10];
+   float32x4x4_t fc;
+   float32_t fc1[10];
+ 
+   fb = vld4q (fb1);
+   fc = vld4q (fc1);
+   b = vld4q (b1);
+   c = vld4q (c1);
+   a = vld4q (a1);
+   ub = vld4q (ub1);
+   uc = vld4q (uc1);
+   ua = vld4q (ua1);
+ }
+ 
+ void
+ foo3 (void)
+ {
+   mve_pred16_t p;
+   int16x8_t a;
+   uint16x8_t ua;
+   int8_t a1[10];
+   uint8_t ua1[10];
+   uint16x8_t offset_a;
+   int8x16_t b;
+   uint8x16_t ub;
+   uint8x16_t offset_b;
+   int32x4_t c;
+   uint32x4_t uc;
+   uint32x4_t offset_c;
+ 
+   a = vldrbq_gather_offset (a1, offset_a);
+   ua = vldrbq_gather_offset (ua1, offset_a);
+   b = vldrbq_gather_offset (a1, offset_b);
+   ub = vldrbq_gather_offset (ua1, offset_b);
+   c = vldrbq_gather_offset (a1, offset_c);
+   uc = vldrbq_gather_offset (ua1, offset_c);
+   a = vldrbq_gather_offset_z (a1, offset_a, p);
+   ua = vldrbq_gather_offset_z (ua1, offset_a, p);
+   b = vldrbq_gather_offset_z (a1, offset_b, p);
+   ub = vldrbq_gather_offset_z (ua1, offset_b, p);
+   c = vldrbq_gather_offset_z (a1, offset_c, p);
+   uc = vldrbq_gather_offset_z (ua1, offset_c, p);
+ }
+ /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c	Tue Jun 28 08:54:29 2022
*************** foo (uint64x2_t * addr)
*** 11,16 ****
  }
  
  /* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldr.64" 1 } } */
! /* { dg-final { scan-assembler-times "vstr.64" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- 11,16 ----
  }
  
  /* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c	Tue Jun 28 08:54:29 2022
*************** foo (uint64x2_t * addr)
*** 11,16 ****
  }
  
  /* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldr.64" 1 } } */
! /* { dg-final { scan-assembler-times "vstr.64" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- 11,16 ----
  }
  
  /* { dg-final { scan-assembler "vldrd.64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_s64.c	Tue Jun 28 08:54:29 2022
*************** int64x2_t foo (uint64x2_t * addr, mve_pr
*** 10,15 ****
  
  /* { dg-final { scan-assembler "vpst" } } */
  /* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldr.64" 1 } } */
! /* { dg-final { scan-assembler-times "vstr.64" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- 10,15 ----
  
  /* { dg-final { scan-assembler "vpst" } } */
  /* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_z_u64.c	Tue Jun 28 08:54:29 2022
*************** uint64x2_t foo (uint64x2_t * addr, mve_p
*** 10,15 ****
  
  /* { dg-final { scan-assembler "vpst" } } */
  /* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldr.64" 1 } } */
! /* { dg-final { scan-assembler-times "vstr.64" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- 10,15 ----
  
  /* { dg-final { scan-assembler "vpst" } } */
  /* { dg-final { scan-assembler "vldrdt.u64\tq\[0-9\]+, \\\[q\[0-9\]+, #\[0-9\]+\\\]!" } } */
! /* { dg-final { scan-assembler-times "vldrw.u32" 1 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 1 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c	Tue Jun 28 08:54:29 2022
*************** foo ()
*** 27,32 ****
  
  /* { dg-final { scan-assembler-times "vstrb.8" 2 } } */
  /* { dg-final { scan-assembler-times "vstrh.16" 2 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 2 } } */
! /* { dg-final { scan-assembler-times "vstr.64" 2 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- 27,31 ----
  
  /* { dg-final { scan-assembler-times "vstrb.8" 2 } } */
  /* { dg-final { scan-assembler-times "vstrh.16" 2 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 4 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c	Tue Jun 28 08:54:29 2022
*************** foo ()
*** 28,33 ****
  
  /* { dg-final { scan-assembler-times "vstrb.8" 2 } } */
  /* { dg-final { scan-assembler-times "vstrh.16" 2 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 2 } } */
! /* { dg-final { scan-assembler-times "vstr.64" 2 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
--- 28,32 ----
  
  /* { dg-final { scan-assembler-times "vstrb.8" 2 } } */
  /* { dg-final { scan-assembler-times "vstrh.16" 2 } } */
! /* { dg-final { scan-assembler-times "vstrw.32" 4 } } */
  /* { dg-final { scan-assembler-not "__ARM_undef" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr69245.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr69245.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr69245.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr69245.c	Tue Jun 28 08:54:29 2022
***************
*** 12,18 ****
  #pragma GCC target "fpu=neon-vfpv4"
  int a, c, d;
  float b;
! static int fn1 ()
  {
    return 0;
  }
--- 12,18 ----
  #pragma GCC target "fpu=neon-vfpv4"
  int a, c, d;
  float b;
!  int fn1 ()
  {
    return 0;
  }
*************** void fn2 ()
*** 23,26 ****
    d = b * c + a;
  }
  
! /* { dg-final { scan-assembler-times "\.fpu vfp" 1 } } */
--- 23,30 ----
    d = b * c + a;
  }
  
! /* Because we don't know the exact command-line options used to invoke the test
!    we cannot expect these tests to match exactly once.  But they must appear at
!    least once.  */
! /* { dg-final { scan-assembler "\.fpu\\s+vfp\n" } } */
! /* { dg-final { scan-assembler "\.fpu\\s+neon-vfpv4\n" } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr95646.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr95646.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr95646.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr95646.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,29 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_arch_v8m_base_ok } */
+ /* { dg-add-options arm_arch_v8m_base } */
+ /* { dg-additional-options "-mcmse -Os" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ int __attribute__ ((cmse_nonsecure_entry))
+ foo (void)
+ {
+   return 1;
+ }
+ /* { { dg-final { scan-assembler-not "mov\tr9, r0" } } */
+ 
+ /*
+ ** __acle_se_bar:
+ **	mov	(r[0-3]), r9
+ **	push	{\1}
+ ** ...
+ **	pop	{(r[0-3])}
+ **	mov	r9, \2
+ ** ...
+ **	bxns	lr
+ */
+ int __attribute__ ((cmse_nonsecure_entry))
+ bar (void)
+ {
+   __asm__ ("" : : : "r9");
+   return 1;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr97969.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr97969.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr97969.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr97969.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-std=c99 -fno-omit-frame-pointer -mthumb -w -Os" } */
+ 
+ typedef a[23];
+ enum { b };
+ typedef struct {
+   int c;
+   char *e;
+   char f
+ } d;
+ typedef enum { g = 1 } h;
+ typedef struct {
+   h i;
+   int j
+ } k;
+ typedef struct {
+   a l;
+   int a;
+   int m;
+   int n;
+   int o;
+   short p;
+   int q;
+   k r;
+   char e;
+   char *s;
+   d t;
+   d *u;
+   short v;
+   int w
+ } aa;
+ c(char x, int y, char z, int ab) {
+   aa ac;
+   ac.r.i = 0;
+   d ad;
+   ac.t = ad;
+   ac.u = 0;
+   ae(&ac.v, 0, 0);
+   ac.w = 0;
+   af(&ac, x + y, z, z + ab);
+   if (ag(0))
+     return 0;
+   if (x)
+     ac.s = z + ab;
+   else
+     ac.s = x + y;
+   ac.o |= g;
+   if (!setjmp()) {
+     ah(ac);
+     ai(b);
+     ac.e = z + ab;
+     aj(ac);
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr99977.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr99977.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/pr99977.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/pr99977.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_arch_v8m_base_ok } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options arm_arch_v8m_base } */
+ _Bool f1(int *p) { return __sync_bool_compare_and_swap (p, -1, 2); }
+ _Bool f2(int *p) { return __sync_bool_compare_and_swap (p, -8, 2); }
+ int g1(int *p) { return __sync_val_compare_and_swap (p, -1, 2); }
+ int g2(int *p) { return __sync_val_compare_and_swap (p, -8, 3); }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute.c	Tue Jun 28 08:54:29 2022
*************** uint32_t restored ()
*** 22,26 ****
    return bar();
  }
  
! /* { dg-final { scan-assembler-times {\.fpu\s+vfpv4} 1 } } */
! /* { dg-final { scan-assembler-times {\.fpu\s+vfpv3-d16} 1 } } */
--- 22,29 ----
    return bar();
  }
  
! /* We can't tell exactly how many times the following tests will match because
!    command-line options may cause additional instances to be generated, but
!    each must be present at least once.  */
! /* { dg-final { scan-assembler {\.fpu\s+vfpv4\n} } } */
! /* { dg-final { scan-assembler {\.fpu\s+vfpv3-d16\n} } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c gcc-10.4.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/arm/pragma_fpu_attribute_2.c	Tue Jun 28 08:54:29 2022
*************** uint32_t restored ()
*** 25,29 ****
    return bar();
  }
  
! /* { dg-final { scan-assembler-times {\.fpu\s+vfpv4} 1 } } */
! /* { dg-final { scan-assembler-times {\.fpu\s+vfpv3-d16} 1 } } */
--- 25,32 ----
    return bar();
  }
  
! /* We can't tell exactly how many times the following tests will match because
!    command-line options may cause additional instances to be generated, but
!    each must be present at least once.  */
! /* { dg-final { scan-assembler {\.fpu\s+vfpv4\n} } } */
! /* { dg-final { scan-assembler {\.fpu\s+vfpv3-d16\n} } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx-pr102224.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx-pr102224.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx-pr102224.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx-pr102224.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ /* PR tree-optimization/51581 */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mavx" } */
+ /* { dg-require-effective-target avx } */
+ 
+ #ifndef CHECK_H
+ #define CHECK_H "avx-check.h"
+ #endif
+ #ifndef TEST
+ #define TEST avx_test
+ #endif
+ 
+ #define main main1
+ #include "../../gcc.dg/pr102224.c"
+ #undef main
+ 
+ #include CHECK_H
+ 
+ static void
+ TEST (void)
+ {
+   main1 ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr101471.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr101471.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr101471.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr101471.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do run } */
+ /* { dg-options "-mavx512dq -O0" } */
+ /* { dg-require-effective-target avx512dq } */
+ 
+ #include "avx512f-check.h"
+ 
+ static void
+ avx512f_test (void)
+ {
+   __m512 x = {
+       1, 1, 1, 1,
+       1, 1, 1, 1,
+       0, 0, 0, 0,
+       0, 0, 0, 0,  };
+   int ret = _mm512_fpclass_ps_mask(x, 0x26);
+   if (ret != 65280)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr101472.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr101472.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx512f-pr101472.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx512f-pr101472.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,49 ----
+ /* PR target/101472 */
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512f -O2" } */
+ /* { dg-final { scan-assembler-times "vpscatterqd\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterdd\[ \\t\]+\[^\{\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterqq\[ \\t\]+\[^\{\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterdq\[ \\t\]+\[^\{\n\]*zmm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterqps\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterdps\[ \\t\]+\[^\{\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterqpd\[ \\t\]+\[^\{\n\]*zmm\[0-9\]\[^\n\]*zmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterdpd\[ \\t\]+\[^\{\n\]*zmm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ 
+ #include <immintrin.h>
+ 
+ void two_scatters_epi32(void* addr, __mmask8 k1, __mmask8 k2, __m512i vindex, 
+ 			 __m256i a, __m512i b)
+ {
+     _mm512_mask_i64scatter_epi32(addr, k1, vindex, a, 1);
+     _mm512_mask_i64scatter_epi32(addr, k2, vindex, a, 1);
+     _mm512_mask_i32scatter_epi32(addr, k1, vindex, b, 1);
+     _mm512_mask_i32scatter_epi32(addr, k2, vindex, b, 1);
+ }
+ 
+ void two_scatters_epi64(void* addr, __mmask8 k1, __mmask8 k2, __m512i vindex, 
+ 			 __m256i idx, __m512i a)
+ {
+     _mm512_mask_i64scatter_epi64(addr, k1, vindex, a, 1);
+     _mm512_mask_i64scatter_epi64(addr, k2, vindex, a, 1);
+     _mm512_mask_i32scatter_epi64(addr, k1, idx, a, 1);
+     _mm512_mask_i32scatter_epi64(addr, k2, idx, a, 1);
+ }
+ 
+ void two_scatters_ps(void* addr, __mmask8 k1, __mmask8 k2, __m512i vindex, 
+ 		      __m256 a, __m512 b)
+ {
+     _mm512_mask_i64scatter_ps(addr, k1, vindex, a, 1);
+     _mm512_mask_i64scatter_ps(addr, k2, vindex, a, 1);
+     _mm512_mask_i32scatter_ps(addr, k1, vindex, b, 1);
+     _mm512_mask_i32scatter_ps(addr, k2, vindex, b, 1);
+ }
+ 
+ void two_scatters_pd(void* addr, __mmask8 k1, __mmask8 k2, __m512i vindex, 
+ 		      __m256i idx, __m512d a)
+ {
+     _mm512_mask_i64scatter_pd(addr, k1, vindex, a, 1);
+     _mm512_mask_i64scatter_pd(addr, k2, vindex, a, 1);
+     _mm512_mask_i32scatter_pd(addr, k1, idx, a, 1);
+     _mm512_mask_i32scatter_pd(addr, k2, idx, a, 1);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,79 ----
+ /* PR target/101472 */
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512vl -O2" } */
+ /* { dg-final { scan-assembler-times "vpscatterqd\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterqd\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterdd\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterdd\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterqq\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterqq\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterdq\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vpscatterdq\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterqps\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterqps\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterdps\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterdps\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterqpd\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterqpd\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*ymm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterdpd\[ \\t\]+\[^\{\n\]*xmm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ /* { dg-final { scan-assembler-times "vscatterdpd\[ \\t\]+\[^\{\n\]*ymm\[0-9\]\[^\n\]*xmm\[0-9\]\[^\n\]*{%k\[1-7\]}(?:\n|\[ \\t\]+#)" 2 } } */
+ 
+ 
+ #include <immintrin.h>
+ 
+ void two_scatters_epi32(void* addr, __mmask8 k1, __mmask8 k2, __m128i vindex1, 
+ 			 __m256i vindex2, __m128i src_epi32, 
+ 		         __m256i src_i32_epi32)
+ {
+     _mm_mask_i64scatter_epi32(addr, k1, vindex1, src_epi32, 1);
+     _mm_mask_i64scatter_epi32(addr, k2, vindex1, src_epi32, 1);
+     _mm256_mask_i64scatter_epi32(addr, k1, vindex2, src_epi32, 1);
+     _mm256_mask_i64scatter_epi32(addr, k2, vindex2, src_epi32, 1);
+ 
+     _mm_mask_i32scatter_epi32(addr, k1, vindex1, src_epi32, 1);
+     _mm_mask_i32scatter_epi32(addr, k2, vindex1, src_epi32, 1);
+     _mm256_mask_i32scatter_epi32(addr, k1, vindex2, src_i32_epi32, 1);
+     _mm256_mask_i32scatter_epi32(addr, k2, vindex2, src_i32_epi32, 1);
+ }
+ 
+ void two_scatters_epi64(void* addr, __mmask8 k1, __mmask8 k2, __m128i vindex1, 
+ 		         __m256i vindex2, __m128i src_epi64_mm, 
+ 			 __m256i src_epi64)
+ {
+     _mm_mask_i64scatter_epi64(addr, k1, vindex1, src_epi64_mm, 1);
+     _mm_mask_i64scatter_epi64(addr, k2, vindex1, src_epi64_mm, 1);
+     _mm256_mask_i64scatter_epi64(addr, k1, vindex2, src_epi64, 1);
+     _mm256_mask_i64scatter_epi64(addr, k2, vindex2, src_epi64, 1);
+ 
+     _mm_mask_i32scatter_epi64(addr, k1, vindex1, src_epi64_mm, 8);
+     _mm_mask_i32scatter_epi64(addr, k2, vindex1, src_epi64_mm, 8);
+     _mm256_mask_i32scatter_epi64(addr, k1, vindex1, src_epi64, 1);
+     _mm256_mask_i32scatter_epi64(addr, k2, vindex1, src_epi64, 1);
+ }
+ void two_scatters_ps(void* addr, __mmask8 k1, __mmask8 k2, __m128i vindex1, 
+ 		      __m256i vindex2, __m128 src_ps, __m256 src_i32_ps)
+ {
+     _mm_mask_i64scatter_ps(addr, k1, vindex1, src_ps, 1);
+     _mm_mask_i64scatter_ps(addr, k2, vindex1, src_ps, 1);
+     _mm256_mask_i64scatter_ps(addr, k1, vindex2, src_ps, 1);
+     _mm256_mask_i64scatter_ps(addr, k2, vindex2, src_ps, 1);
+ 
+     _mm_mask_i32scatter_ps(addr, k1, vindex1, src_ps, 8);
+     _mm_mask_i32scatter_ps(addr, k2, vindex1, src_ps, 8);
+     _mm256_mask_i32scatter_ps(addr, k1, vindex2, src_i32_ps, 1);
+     _mm256_mask_i32scatter_ps(addr, k2, vindex2, src_i32_ps, 1);
+ }
+ 
+ void two_scatters_pd(void* addr, __mmask8 k1, __mmask8 k2,  __m128i vindex1,
+ 		      __m256i vindex2, __m128d src_pd_mm, __m256d src_pd)
+ {
+     _mm_mask_i64scatter_pd(addr, k1, vindex1, src_pd_mm, 1);
+     _mm_mask_i64scatter_pd(addr, k2, vindex1, src_pd_mm, 1);
+     _mm256_mask_i64scatter_pd(addr, k1, vindex2, src_pd, 1);
+     _mm256_mask_i64scatter_pd(addr, k2, vindex2, src_pd, 1);
+ 
+     _mm_mask_i32scatter_pd(addr, k1, vindex1, src_pd_mm, 8);
+     _mm_mask_i32scatter_pd(addr, k2, vindex1, src_pd_mm, 8);
+     _mm256_mask_i32scatter_pd(addr, k1, vindex1, src_pd, 1);
+     _mm256_mask_i32scatter_pd(addr, k2, vindex1, src_pd, 1);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr100182.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr100182.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr100182.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr100182.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do run { target ia32 } } */
+ /* { dg-options "-O2 -march=i686" } */
+ 
+ struct S { double _M_fp; };
+ union U { double d; unsigned long long int l; };
+ 
+ void
+ __attribute__((noipa))
+ foo (void)
+ {
+   struct S a0, a1;
+   union U u;
+   double d0, d1;
+   a0._M_fp = 0.0;
+   a1._M_fp = 1.0;
+   __atomic_store_8 (&a0._M_fp, __atomic_load_8 (&a1._M_fp, __ATOMIC_SEQ_CST), __ATOMIC_SEQ_CST);
+   u.l = __atomic_load_8 (&a0._M_fp, __ATOMIC_SEQ_CST);
+   d0 = u.d;
+   u.l = __atomic_load_8 (&a1._M_fp, __ATOMIC_SEQ_CST);
+   d1 = u.d;
+   if (d0 != d1)
+     __builtin_abort ();
+ }
+ 
+ int
+ main ()
+ {
+   foo ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr100342.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr100342.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr100342.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr100342.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,70 ----
+ /* PR rtl-optimization/100342 */
+ /* { dg-do run { target int128 } } */
+ /* { dg-options "-O2 -fno-dse -fno-forward-propagate -Wno-psabi -mno-sse2" } */
+ 
+ #define SHL(x, y) ((x) << ((y) & (sizeof(x) * 8 - 1)))
+ #define SHR(x, y) ((x) >> ((y) & (sizeof(x) * 8 - 1)))
+ #define ROR(x, y) (SHR(x, y)) | (SHL(x, (sizeof(x) * 8 - (y))))
+ #define SHLV(x, y) ((x) << ((y) & (sizeof((x)[0]) * 8 - 1)))
+ #define SHLSV(x, y) ((x) << ((y) & (sizeof((y)[0]) * 8 - 1)))
+ typedef unsigned char A;
+ typedef unsigned char __attribute__((__vector_size__ (8))) B;
+ typedef unsigned char __attribute__((__vector_size__ (16))) C;
+ typedef unsigned char __attribute__((__vector_size__ (32))) D;
+ typedef unsigned char __attribute__((__vector_size__ (64))) E;
+ typedef unsigned short F;
+ typedef unsigned short __attribute__((__vector_size__ (16))) G;
+ typedef unsigned int H;
+ typedef unsigned int __attribute__((__vector_size__ (32))) I;
+ typedef unsigned long long J;
+ typedef unsigned long long __attribute__((__vector_size__ (8))) K;
+ typedef unsigned long long __attribute__((__vector_size__ (32))) L;
+ typedef unsigned long long __attribute__((__vector_size__ (64))) M;
+ typedef unsigned __int128 N;
+ typedef unsigned __int128 __attribute__((__vector_size__ (16))) O;
+ typedef unsigned __int128 __attribute__((__vector_size__ (32))) P;
+ typedef unsigned __int128 __attribute__((__vector_size__ (64))) Q;
+ B v1;
+ D v2;
+ L v3;
+ K v4;
+ I v5;
+ O v6;
+ 
+ B
+ foo (A a, C b, E c, F d, G e, H f, J g, M h, N i, P j, Q k)
+ {
+   b &= (A) f;
+   k += a;
+   G l = e;
+   D m = v2 >= (A) (J) v1;
+   J r = a + g;
+   L n = v3 <= f;
+   k -= i / f;
+   l -= (A) g;
+   c |= (A) d;
+   b -= (A) i;
+   J o = ROR (__builtin_clz (r), a);
+   K p = v4 | f, q = v4 <= f;
+   P s = SHLV (SHLSV (__builtin_bswap64 (i), (P) (0 < j)) <= 0, j);
+   n += a <= r;
+   M t = (M) (a / SHLV (c, 0)) != __builtin_bswap64 (i);
+   I u = f - v5;
+   E v = (E) h + (E) t + (E) k;
+   D w = (union { D b[2]; }) { }.b[0] + ((union { E b; }) v).b[1] + m + (D) u + (D) n + (D) s;
+   C x = ((union { D b; }) w).b[1] + b + (C) l + (C) v6;
+   B y = ((union { C a; B b; }) x).b + ((union { C a; B b[2]; }) x).b[1] + (B) p + (B) q;
+   J z = i + o;
+   F z2 = z;
+   A z3 = z2;
+   return y + z3;
+ }
+ 
+ int
+ main ()
+ {
+   B x = foo (0, (C) { }, (E) { }, 10, (G) { }, 4, 2, (M) { }, 123842323652213865LL, (P) { 1 }, (Q) { });
+   if ((J) x != 0x2e2c2e2c2e2c2e30ULL)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr101175.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr101175.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr101175.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr101175.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2 -mlzcnt" } */
+ /* { dg-require-effective-target lzcnt } */
+ 
+ #include "lzcnt-check.h"
+ 
+ static int
+ foo (unsigned int v)
+ {
+   return v ? __builtin_clz (v) : 32;
+ }
+ 
+ /* returns -1 if x == 0 */
+ int
+ __attribute__ ((noinline, noclone))
+ bar (unsigned int x)
+ {
+   return 31 - foo (x);
+ }
+ 
+ static void
+ lzcnt_test ()
+ {
+   int r = bar (0);
+ 
+   if (r != -1)
+     abort ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr102498.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr102498.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr102498.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr102498.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,59 ----
+ /* PR target/102498 */
+ /* { dg-do run { target fenv } } */
+ /* { dg-options "-frounding-math" } */
+ 
+ #include <fenv.h>
+ #include <stdlib.h>
+ 
+ __attribute__((noipa)) long double
+ fldlg2 (void)
+ {
+   return 0.3010299956639811952256464283594894482L;
+ }
+ 
+ __attribute__((noipa)) long double
+ fldln2 (void)
+ {
+   return 0.6931471805599453094286904741849753009L;
+ }
+ 
+ __attribute__((noipa)) long double
+ fldl2e (void)
+ {
+   return 1.4426950408889634073876517827983434472L;
+ }
+ 
+ __attribute__((noipa)) long double
+ fldl2t (void)
+ {
+   return 3.3219280948873623478083405569094566090L;
+ }
+ 
+ __attribute__((noipa)) long double
+ fldpi (void)
+ {
+   return 3.1415926535897932385128089594061862044L;
+ }
+ 
+ int
+ main ()
+ {
+   long double a = fldlg2 ();
+   long double b = fldln2 ();
+   long double c = fldl2e ();
+   long double d = fldl2t ();
+   long double e = fldpi ();
+   static int f[] = { FE_TONEAREST, FE_TOWARDZERO, FE_UPWARD, FE_DOWNWARD };
+   int i;
+   for (i = 0; i < 4; i++)
+     {
+       fesetround (f[i]);
+       if (a != fldlg2 ()
+ 	  || b != fldln2 ()
+ 	  || c != fldl2e ()
+ 	  || d != fldl2t ()
+ 	  || e != fldpi ())
+ 	abort ();
+     }
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr102761.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr102761.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr102761.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr102761.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/102761 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1" } */
+ 
+ int foo (void);
+ 
+ void
+ bar (void)
+ {
+   asm volatile ("%a0" : : "X"(foo () ? 2 : 1)); /* { dg-error "invalid constraints for operand" } */
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr103205.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr103205.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr103205.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr103205.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ /* PR target/103205 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mtune-ctrl=^himode_math" } */
+ 
+ unsigned short a;
+ 
+ unsigned short
+ foo (void)
+ {
+   return __sync_fetch_and_and (&a, ~1) & 1;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr103908.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr103908.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr103908.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr103908.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ /* PR rtl-optimization/103908 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdisable-tree-cselim -fno-tree-sink" } */
+ /* { dg-final { scan-assembler "# insn 1" } } */
+ /* { dg-final { scan-assembler "# insn 2" } } */
+ 
+ int a, b;
+ 
+ void
+ foo (void)
+ {
+   if (a)
+     {
+       b = 1;
+       asm goto ("# insn 1" : : : : lab1);
+     lab1:;
+     }
+   else
+     {
+       b = 1;
+       asm goto ("# insn 2" : : : : lab2);
+     lab2:;
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104446.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104446.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104446.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104446.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,15 ----
+ /* PR middle-end/104446 */
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -mrtd" } */
+ 
+ register volatile int a __asm__("%esp");
+ void foo (void *);
+ void bar (void *);
+ 
+ void
+ baz (void)
+ {
+   foo (__builtin_return_address (0));
+   a = 0;
+   bar (__builtin_return_address (0));
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104451.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104451.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104451.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104451.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx2 -mxop -O" } */
+ 
+ typedef char __attribute__((__vector_size__ (16))) V;
+ typedef unsigned char __attribute__((__vector_size__ (16))) UV;
+ V v;
+ UV uv;
+ 
+ V
+ foo (long c)
+ {
+   return v << c;
+ }
+ 
+ V
+ foo1 (long c)
+ {
+   return v >> c;
+ }
+ 
+ UV
+ foo2 (unsigned long uc)
+ {
+   return uv >> uc;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104453.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104453.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104453.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104453.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512f" } */
+ 
+ typedef short __attribute__((__vector_size__ (32))) V;
+ V g;
+ 
+ void
+ foo (void)
+ {
+   __builtin_ia32_psrawi256 (g, 0);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104458.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104458.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104458.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104458.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ /* PR target/104458 */
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O1 -m8bit-idiv" } */
+ 
+ typedef float __attribute__((__vector_size__ (8))) F;
+ 
+ int i;
+ 
+ void
+ foo (F f)
+ {
+   i += i % (long long) f;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104469.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104469.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104469.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104469.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ /* PR target/104469 */
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512f" } */
+ 
+ typedef double __attribute__((__vector_size__ (64))) F;
+ typedef int __attribute__((__vector_size__ (32))) V;
+ 
+ F
+ foo (V v)
+ {
+   return __builtin_convertvector (v, F);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104502.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104502.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104502.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104502.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,31 ----
+ /* PR target/104502 */
+ /* { dg-do compile { target fstack_protector } } */
+ /* { dg-options "-O -flive-range-shrinkage -march=barcelona -fstack-protector-all -mavx512f" } */
+ 
+ typedef char __attribute__((__vector_size__ (8))) U;
+ typedef int __attribute__((__vector_size__ (8))) A;
+ typedef int __attribute__((__vector_size__ (16))) B;
+ typedef int __attribute__((__vector_size__ (32))) C;
+ typedef int __attribute__((__vector_size__ (64))) D;
+ typedef __float128 __attribute__((__vector_size__ (32))) F;
+ 
+ char s;
+ U u;
+ A a;
+ int i;
+ C c;
+ double d;
+ 
+ U
+ foo (U u0, A a0, B b0, B b1, C c0, C c1, C c2, C c3, A a1, A a2, F f0)
+ {
+   C ca = c |= (short) (float) d;
+   C cb = c0 + c1 + c2 + c3 + ca + (C) f0;
+   U ua = s << (u & 4);
+   B ba = ((union {C a; B b;}) cb).b + b0 + b1;
+   U ub = ((union {B a; U b;}) ba).b +
+     u0 + u + ua + (U) a + (U) a + (U) a0 + (U) a1 + (U) a2;
+   long long u64_r = i + d;
+   char u8_r = u64_r;
+   return ub + u8_r;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104637.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104637.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104637.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104637.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-Og -fno-forward-propagate -mavx -Wno-div-by-zero" } */
+ 
+ typedef short __attribute__((__vector_size__ (64))) U;
+ typedef unsigned long long __attribute__((__vector_size__ (32))) V;
+ typedef long double __attribute__((__vector_size__ (64))) F;
+ 
+ int i;
+ U u;
+ F f;
+ 
+ void
+ foo (char a, char b, _Complex char c, V v)
+ {
+   u = (U) { u[0] / 0, u[1] / 0, u[2] / 0, u[3] / 0, u[4] / 0, u[5] / 0, u[6] / 0, u[7] / 0,
+ 	    u[8] / 0, u[9] / 0, u[10] / 0, u[11] / 0, u[12] / 0, u[13] / 0, u[14] / 0, u[15] / 0,
+ 	    u[16] / 0, u[17] / 0, u[18] / 0, u[19] / 0, u[20] / 0, u[21] / 0, u[22] / 0, u[23] / 0,
+ 	    u[24] / 0, u[25] / 0, u[26] / 0, u[27] / 0, u[28] / 0, u[29] / 0, u[30] / 0, u[31] / 0 };
+   c += i;
+   f = (F) { v[0], v[1], v[2], v[3] };
+   i = (char) (__imag__ c + i);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104971.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104971.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr104971.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr104971.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* PR middle-end/104971 */
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ #include <x86intrin.h>
+ 
+ __attribute__((noipa)) void
+ foo (void)
+ {
+   __readeflags ();
+ }
+ 
+ int
+ main ()
+ {
+   foo ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr105123.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr105123.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr105123.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr105123.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /* PR target/105123 */
+ /* { dg-do run { target sse2_runtime } } */
+ /* { dg-options "-msse2" } */
+ /* { dg-additional-options "-mtune=i686" { target ia32 } } */
+ 
+ typedef unsigned short __attribute__((__vector_size__ (4 * sizeof (unsigned short)))) V;
+ 
+ V
+ foo (unsigned short u, V v)
+ {
+   return __builtin_shuffle (u * v, v);
+ }
+ 
+ int
+ main ()
+ {
+   V x = foo (1, (V) { 0, 1, 2, 3 });
+   for (unsigned i = 0; i < 4; i++)
+     if (x[i] != i)
+       __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr105970.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr105970.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr105970.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr105970.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,6 ----
+ /* PR target/105970 */
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-require-effective-target maybe_x32 } */
+ /* { dg-options "-mx32 -mgeneral-regs-only -maddress-mode=long" } */
+ 
+ #include "../../gcc.dg/torture/pr68037-1.c"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr71245-1.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr71245-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr71245-1.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr71245-1.c	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- /* PR target/71245 */
- /* { dg-do compile { target ia32 } } */
- /* { dg-options "-O2 -march=pentium -mno-sse -mfpmath=387" } */
- 
- typedef union
- {
-   unsigned long long ll;
-   double d;
- } u_t;
- 
- u_t d = { .d = 5.0 };
- 
- void foo_d (void)
- {
-   u_t tmp;
-   
-   tmp.ll = __atomic_load_n (&d.ll, __ATOMIC_SEQ_CST);
-   tmp.d += 1.0;
-   __atomic_store_n (&d.ll, tmp.ll, __ATOMIC_SEQ_CST);
- }
- 
- /* { dg-final { scan-assembler-not "(fistp|fild)" } } */
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr71245-2.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr71245-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr71245-2.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr71245-2.c	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- /* PR target/71245 */
- /* { dg-do compile { target ia32 } } */
- /* { dg-options "-O2 -march=pentium -msse -mno-sse2 -mfpmath=387" } */
- 
- typedef union
- {
-   unsigned long long ll;
-   double d;
- } u_t;
- 
- u_t d = { .d = 5.0 };
- 
- void foo_d (void)
- {
-   u_t tmp;
-   
-   tmp.ll = __atomic_load_n (&d.ll, __ATOMIC_SEQ_CST);
-   tmp.d += 1.0;
-   __atomic_store_n (&d.ll, tmp.ll, __ATOMIC_SEQ_CST);
- }
- 
- /* { dg-final { scan-assembler-not "movlps" } } */
--- 0 ----
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr98694.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr98694.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr98694.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr98694.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,41 ----
+ /* PR rtl-optimization/98694 */
+ /* { dg-do run { target { ! ia32 } } } */
+ /* { dg-options "-O2 -mavx512bw" } */
+ /* { dg-require-effective-target avx512bw } */
+ 
+ #include<immintrin.h>
+ typedef short v4hi __attribute__ ((vector_size (8)));
+ typedef int v2si __attribute__ ((vector_size (8)));
+ v4hi b;
+ 
+ __attribute__ ((noipa))
+ v2si
+ foo (__m512i src1, __m512i src2)
+ {
+   __mmask64 m = _mm512_cmpeq_epu8_mask (src1, src2);
+   short s = (short) m;
+   int i = (int)m;
+   b = __extension__ (v4hi) {s, s, s, s};
+   return __extension__ (v2si) {i, i};
+ }
+ 
+ int main ()
+ {
+   if (!__builtin_cpu_supports ("avx512bw"))
+     return 0;
+ 
+   __m512i src1 = _mm512_setzero_si512 ();
+   __m512i src2 = _mm512_set_epi8 (0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1,
+ 				  0, 1, 0, 1, 0, 1, 0, 1);
+   __mmask64 m = _mm512_cmpeq_epu8_mask (src1, src2);
+   v2si a = foo (src1, src2);
+   if (a[0] != (int)m)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr99726.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr99726.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr99726.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr99726.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-options "-flive-patching=inline-clone -mavx512f -O2 -ftree-loop-vectorize -ftrapv" } */
+ /* { dg-additional-options "-floop-nest-optimize" { target fgraphite } } */
+ 
+ extern int a[256][1024];
+ int b;
+ long c, d;
+ unsigned int e;
+ 
+ int
+ main ()
+ {
+   for (; e < d; e++)
+     for (unsigned j = 1; j < c; j++)
+       a[e][j] = b * a[e - 1][j + 1];
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr99863.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr99863.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr99863.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr99863.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,33 ----
+ /* PR rtl-optimization/99863 */
+ /* { dg-do run } */
+ /* { dg-options "-O -fno-tree-forwprop -mno-sse2 -Wno-psabi" } */
+ 
+ typedef unsigned char __attribute__((__vector_size__ (8))) A;
+ typedef unsigned char __attribute__((__vector_size__ (32))) B;
+ typedef unsigned char __attribute__((__vector_size__ (64))) C;
+ typedef unsigned int __attribute__((__vector_size__ (32))) D;
+ typedef unsigned int __attribute__((__vector_size__ (64))) E;
+ typedef unsigned long long F;
+ 
+ D a;
+ A b;
+ 
+ A
+ foo (E x, F y)
+ {
+   D c = (y <= 0) * a;
+   x *= (0 < y);
+   C d = (C) x;
+   B e = ((union { C a; B b[2];}) d).b[0] + (B) c;
+   A f = ((union { B a; A b[4];}) e).b[0] + (A) b;
+   return f;
+ }
+ 
+ int
+ main ()
+ {
+   F x = (F) foo ((E) { 3 }, 5);
+   if (x != 3)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr99905.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr99905.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/pr99905.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/pr99905.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,33 ----
+ /* PR rtl-optimization/99905 */
+ /* { dg-do run { target int128 } } */
+ /* { dg-options "-Os -mno-mmx -mno-sse" } */
+ 
+ typedef unsigned char U;
+ typedef unsigned char __attribute__((__vector_size__ (8))) A;
+ typedef unsigned char __attribute__((__vector_size__ (16))) B;
+ typedef unsigned char __attribute__((__vector_size__ (32))) C;
+ typedef unsigned int __attribute__((__vector_size__ (8))) D;
+ typedef unsigned long long __attribute__((__vector_size__ (8))) E;
+ typedef unsigned __int128 I;
+ typedef unsigned long long L;
+ 
+ D gv;
+ I gi;
+ 
+ L __attribute__((__noipa__))
+ foo (int ua, int ub, int uc, int ud, E ue, I i)
+ {
+   D d = (U) __builtin_bswap16 (i >> 63) + gv;
+   B y = ((union { C a; B b[2];}) (C){ }).b[0] + (B) gi;
+   A z = ((union { B a; A b[2];}) y).b[0] + (A) d;
+   return (L)z;
+ }
+ 
+ int
+ main ()
+ {
+   L x = foo (0, 0, 0, 0, (E) { }, (I) 0x100 << 63);
+   if (x != 0x100000001)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/i386/sse-14.c gcc-10.4.0/gcc/testsuite/gcc.target/i386/sse-14.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/i386/sse-14.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/i386/sse-14.c	Tue Jun 28 08:54:29 2022
*************** test_3 (_mm_maskz_mul_round_sd, __m128d,
*** 429,435 ****
--- 429,437 ----
  test_3 (_mm512_maskz_mul_round_ps, __m512, __mmask16, __m512, __m512, 9)
  test_3 (_mm_maskz_mul_round_ss, __m128, __mmask8, __m128, __m128, 9)
  test_3 (_mm512_maskz_scalef_round_pd, __m512d, __mmask8, __m512d, __m512d, 9)
+ test_3 (_mm_maskz_scalef_round_sd, __m128d, __mmask8, __m128d, __m128d, 9)
  test_3 (_mm512_maskz_scalef_round_ps, __m512, __mmask16, __m512, __m512, 9)
+ test_3 (_mm_maskz_scalef_round_ss, __m128, __mmask8, __m128, __m128, 9)
  test_3 (_mm512_maskz_shuffle_f32x4, __m512, __mmask16, __m512, __m512, 1)
  test_3 (_mm512_maskz_shuffle_f64x2, __m512d, __mmask8, __m512d, __m512d, 1)
  test_3 (_mm512_maskz_shuffle_i32x4, __m512i, __mmask16, __m512i, __m512i, 1)
*************** test_4 (_mm_mask_mul_round_sd, __m128d,
*** 543,549 ****
--- 545,553 ----
  test_4 (_mm512_mask_mul_round_ps, __m512, __m512, __mmask16, __m512, __m512, 9)
  test_4 (_mm_mask_mul_round_ss, __m128, __m128, __mmask8, __m128, __m128, 9)
  test_4 (_mm512_mask_scalef_round_pd, __m512d, __m512d, __mmask8, __m512d, __m512d, 9)
+ test_4 (_mm_mask_scalef_round_sd, __m128d, __m128d, __mmask8, __m128d, __m128d, 9)
  test_4 (_mm512_mask_scalef_round_ps, __m512, __m512, __mmask16, __m512, __m512, 9)
+ test_4 (_mm_mask_scalef_round_ss, __m128, __m128, __mmask8, __m128, __m128, 9)
  test_4 (_mm512_mask_shuffle_f32x4, __m512, __m512, __mmask16, __m512, __m512, 1)
  test_4 (_mm512_mask_shuffle_f64x2, __m512d, __m512d, __mmask8, __m512d, __m512d, 1)
  test_4 (_mm512_mask_shuffle_i32x4, __m512i, __m512i, __mmask16, __m512i, __m512i, 1)
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c	Tue Jun 28 08:54:29 2022
*************** foo2 (__vector_pair *dst, vec_t *src)
*** 21,26 ****
--- 21,34 ----
  }
  
  void
+ foo3 (__vector_pair *dst, vec_t *src)
+ {
+   __vector_pair pair;
+   __builtin_vsx_build_pair (&pair, src[4], src[0]);
+   *dst = pair;
+ }
+ 
+ void
  bar (vec_t *dst, __vector_pair *src)
  {
    vec_t res[2];
*************** bar2 (vec_t *dst, __vector_pair *src)
*** 54,61 ****
  #  error "__has_builtin (__builtin_mma_disassemble_pair) failed"
  #endif
  
! /* { dg-final { scan-assembler-times {\mlxv\M} 4 } } */
  /* { dg-final { scan-assembler-times {\mlxvp\M} 2 } } */
  /* { dg-final { scan-assembler-times {\mstxv\M} 4 } } */
! /* { dg-final { scan-assembler-times {\mstxvp\M} 2 } } */
  
--- 62,73 ----
  #  error "__has_builtin (__builtin_mma_disassemble_pair) failed"
  #endif
  
! #if !__has_builtin (__builtin_vsx_build_pair)
! #  error "__has_builtin (__builtin_vsx_build_pair) failed"
! #endif
! 
! /* { dg-final { scan-assembler-times {\mlxv\M} 6 } } */
  /* { dg-final { scan-assembler-times {\mlxvp\M} 2 } } */
  /* { dg-final { scan-assembler-times {\mstxv\M} 4 } } */
! /* { dg-final { scan-assembler-times {\mstxvp\M} 3 } } */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c	Tue Jun 28 08:54:29 2022
*************** foo (__vector_quad *dst, vec_t *src)
*** 13,18 ****
--- 13,26 ----
  }
  
  void
+ foo2 (__vector_quad *dst, vec_t *src)
+ {
+   __vector_quad acc;
+   __builtin_mma_build_acc (&acc, src[12], src[8], src[4], src[0]);
+   *dst = acc;
+ }
+ 
+ void
  bar (vec_t *dst, __vector_quad *src)
  {
    vec_t res[4];
*************** bar (vec_t *dst, __vector_quad *src)
*** 23,31 ****
    dst[12] = res[3];
  }
  
! /* { dg-final { scan-assembler-times {\mlxv\M} 4 } } */
  /* { dg-final { scan-assembler-times {\mlxvp\M} 2 } } */
  /* { dg-final { scan-assembler-times {\mstxv\M} 4 } } */
! /* { dg-final { scan-assembler-times {\mstxvp\M} 2 } } */
! /* { dg-final { scan-assembler-times {\mxxmfacc\M} 2 } } */
! /* { dg-final { scan-assembler-times {\mxxmtacc\M} 2 } } */
--- 31,47 ----
    dst[12] = res[3];
  }
  
! #if !__has_builtin (__builtin_mma_assemble_acc)
! #  error "__has_builtin (__builtin_mma_assemble_acc) failed"
! #endif
! 
! #if !__has_builtin (__builtin_mma_build_acc)
! #  error "__has_builtin (__builtin_mma_build_acc) failed"
! #endif
! 
! /* { dg-final { scan-assembler-times {\mlxv\M} 8 } } */
  /* { dg-final { scan-assembler-times {\mlxvp\M} 2 } } */
  /* { dg-final { scan-assembler-times {\mstxv\M} 4 } } */
! /* { dg-final { scan-assembler-times {\mstxvp\M} 4 } } */
! /* { dg-final { scan-assembler-times {\mxxmfacc\M} 3 } } */
! /* { dg-final { scan-assembler-times {\mxxmtacc\M} 3 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c	Tue Jun 28 08:54:29 2022
***************
*** 5,18 ****
  void
  foo (__vector_quad *dst)
  {
!   __vector_quad acc;
!   __builtin_mma_xxsetaccz (&acc);
!   *dst = acc;
  }
  
  /* { dg-final { scan-assembler-not {\mlxv\M} } } */
  /* { dg-final { scan-assembler-not {\mlxvp\M} } } */
  /* { dg-final { scan-assembler-not {\mxxmtacc\M} } } */
! /* { dg-final { scan-assembler-times {\mxxsetaccz\M} 1 } } */
! /* { dg-final { scan-assembler-times {\mxxmfacc\M} 1 } } */
! /* { dg-final { scan-assembler-times {\mstxvp\M} 2 } } */
--- 5,20 ----
  void
  foo (__vector_quad *dst)
  {
!   __vector_quad acc0, acc1;
!   __builtin_mma_xxsetaccz (&acc0);
!   __builtin_mma_xxsetaccz (&acc1);
!   dst[0] = acc0;
!   dst[1] = acc1;
  }
  
  /* { dg-final { scan-assembler-not {\mlxv\M} } } */
  /* { dg-final { scan-assembler-not {\mlxvp\M} } } */
  /* { dg-final { scan-assembler-not {\mxxmtacc\M} } } */
! /* { dg-final { scan-assembler-times {\mxxsetaccz\M} 2 } } */
! /* { dg-final { scan-assembler-times {\mxxmfacc\M} 2 } } */
! /* { dg-final { scan-assembler-times {\mstxvp\M} 4 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-7.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-7.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-7.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-7.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-mdejagnu-cpu=power10 -O2" } */
+ 
+ void
+ foo (__vector_pair *dst, __vector_pair *src, long idx)
+ {
+   dst[0] = __builtin_vsx_lxvp (0, src);
+   dst[2] = __builtin_vsx_lxvp (32, src);
+   dst[4] = __builtin_vsx_lxvp (64, src);
+   /* Non-constant offset should generate a lxvpx.  */
+   dst[6] = __builtin_vsx_lxvp (idx, src);
+   /* Non-aligned offset should generate a plxvp.  */
+   dst[8] = __builtin_vsx_lxvp (257, src);
+ }
+ 
+ #if !__has_builtin (__builtin_vsx_lxvp)
+ #  error "__has_builtin (__builtin_vsx_lxvp) failed"
+ #endif
+ 
+ /* { dg-final { scan-assembler-not {\mlxv\M} } } */
+ /* { dg-final { scan-assembler-not {\mstxv\M} } } */
+ /* { dg-final { scan-assembler-times {\mlxvp\M} 3 } } */
+ /* { dg-final { scan-assembler-times {\mlxvpx\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mplxvp\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mstxvp\M} 5 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-8.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-8.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-8.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/mma-builtin-8.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-mdejagnu-cpu=power10 -O2" } */
+ 
+ void
+ foo (__vector_pair *dst, __vector_pair *src, long idx)
+ {
+   __vector_pair pair = *src;
+   __builtin_vsx_stxvp (pair, 0, dst);
+   __builtin_vsx_stxvp (pair, 32, dst);
+   __builtin_vsx_stxvp (pair, 64, dst);
+   /* Non-constant offset should generate a stxvpx.  */
+   __builtin_vsx_stxvp (pair, idx, dst);
+   /* Non-aligned offset should generate a pstxvp.  */
+   __builtin_vsx_stxvp (pair, 257, dst);
+ }
+ 
+ #if !__has_builtin (__builtin_vsx_stxvp)
+ #  error "__has_builtin (__builtin_vsx_stxvp) failed"
+ #endif
+ 
+ /* { dg-final { scan-assembler-not {\mlxv\M} } } */
+ /* { dg-final { scan-assembler-not {\mstxv\M} } } */
+ /* { dg-final { scan-assembler-times {\mlxvp\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mstxvp\M} 3 } } */
+ /* { dg-final { scan-assembler-times {\mstxvpx\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mpstxvp\M} 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr100777.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr100777.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr100777.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr100777.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ /* PR target/100777 */
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-require-effective-target fopenmp } */
+ /* { dg-options "-O1 -mdejagnu-cpu=power10 -fopenmp" } */
+ 
+ /* Verify we do not ICE on the following.  */
+ 
+ void
+ foo (__vector_quad *dst)
+ {
+ #pragma omp parallel
+   {
+     __builtin_mma_xxsetaccz (dst);
+   }
+ }
+ 
+ void
+ bar (__vector_quad *dst, __vector_quad *src)
+ {
+ #pragma omp parallel
+   {
+     __builtin_mma_disassemble_acc (dst, src);
+   }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101129.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101129.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101129.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101129.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target p8vector_hw } */
+ /* { dg-require-effective-target int128 } */
+ /* { dg-options "-mdejagnu-cpu=power8 -O " } */
+ 
+ /* PR101129: The swaps pass was turning a mult-lopart into a mult-hipart.
+    Make sure we aren't doing that anymore.  */
+ 
+ typedef unsigned char u8;
+ typedef unsigned char __attribute__((__vector_size__ (8))) U;
+ typedef unsigned char __attribute__((__vector_size__ (16))) V;
+ typedef unsigned int u32;
+ typedef unsigned long long u64;
+ typedef __int128 u128;
+ 
+ u8 g;
+ U u;
+ 
+ void
+ foo0 (u32 u32_0, U *ret)
+ {
+   u128 u128_2 = u32_0 * (u128)((V){ 5 } > (u32_0 & 4));
+   u64 u64_r = u128_2 >> 64;
+   u8 u8_r = u64_r + g;
+   *ret = u + u8_r;
+ }
+ 
+ int
+ main (void)
+ {
+   U x;
+   foo0 (7, &x);
+   for (unsigned i = 0; i < sizeof (x); i++)
+     if (x[i] != 0) __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101849.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101849.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101849.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101849.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /* PR target/101849 */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-O2 -mdejagnu-cpu=power10" } */
+ 
+ /* Verify we do not ICE on the tests below.  */
+ 
+ void
+ foo (__vector_pair *dst, double *x, long offset)
+ {
+   dst[0] = __builtin_vsx_lxvp (0, (__vector_pair *)(void *)x);
+   dst[1] = __builtin_vsx_lxvp (32, (__vector_pair *)(void *)x);
+   dst[2] = __builtin_vsx_lxvp (offset, (__vector_pair *)(void *)x);
+ }
+ 
+ void
+ bar (__vector_pair *src, double *x, long offset)
+ {
+   __builtin_vsx_stxvp (src[0], 0, (__vector_pair *)(void *)x);
+   __builtin_vsx_stxvp (src[1], 32, (__vector_pair *)(void *)x);
+   __builtin_vsx_stxvp (src[2], offset, (__vector_pair *)(void *)x);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101985-1.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101985-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101985-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101985-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* PR target/101985 */
+ /* { dg-do run } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-O2 -mvsx" } */
+ 
+ #include <altivec.h>
+ 
+ int
+ main (void)
+ {
+   vector float a = {  1,  2, - 3, - 4};
+   vector float b = {-10, 20, -30,  40};
+   vector float c = { 10, 20, -30, -40};
+   a = vec_cpsgn (a, b);
+   if (! vec_all_eq (a, c))
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101985-2.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101985-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr101985-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr101985-2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ /* PR target/101985 */
+ /* { dg-do run } */
+ /* { dg-require-effective-target vsx_hw } */
+ /* { dg-options "-O2 -mvsx" } */
+ 
+ #include <altivec.h>
+ 
+ int
+ main (void)
+ {
+   vector double a = {   1,  -4};
+   vector double b = { -10,  40};
+   vector double c = {  10, -40};
+   a = vec_cpsgn (a, b);
+   if (! vec_all_eq (a, c))
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr102059-4.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr102059-4.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr102059-4.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr102059-4.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mdejagnu-cpu=power10" } */
+ /* { dg-require-effective-target power10_ok } */
+ 
+ /* Verify that power10 can explicity include functions compiled for power8.
+    The issue was -mcpu=power8 enables -mpower8-fusion, but -mcpu=power9 or
+    -mcpu=power10 do not set power8-fusion by default.  Thus when doing this
+    compilation, they would get an error that the inline function failed in its
+    inlining due to having incompatible options.  */
+ 
+ static inline int __attribute__ ((always_inline,target("cpu=power8")))
+ foo (int *b)
+ {
+   *b += 10;
+   return *b;
+ }
+ 
+ int
+ bar (int *a)
+ {
+   *a = foo (a);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr102347.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr102347.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr102347.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr102347.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do link } */
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-require-effective-target lto } */
+ /* { dg-options "-flto -mdejagnu-cpu=power9" } */
+ 
+ /* Verify there are no error messages in LTO mode.  */
+ 
+ #pragma GCC target "cpu=power10"
+ int main ()
+ {
+   float *b;
+   __vector_quad c;
+   __builtin_mma_disassemble_acc (b, &c);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr102976.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr102976.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr102976.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr102976.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-O2 -mdejagnu-cpu=power10" } */
+ 
+ #include <altivec.h>
+ void
+ bug (__vector_pair *dst)
+ {
+   register vector unsigned char vec0 asm ("vs44");
+   register vector unsigned char vec1 asm ("vs32");
+   __builtin_vsx_build_pair (dst, vec0, vec1);
+ }
+ 
+ /* { dg-final { scan-assembler-times {(?p)\mxxlor \d+,44,44\M} 1 } } */
+ /* { dg-final { scan-assembler-times {(?p)\mxxlor \d+,32,32\M} 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr103627-1.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr103627-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr103627-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr103627-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-mdejagnu-cpu=power10 -mno-vsx" } */
+ 
+ /* Verify compiler emits error message instead of ICE.  */
+ 
+ extern float *dest;
+ extern __vector_quad src;
+ 
+ int
+ foo ()
+ {
+   __builtin_mma_disassemble_acc (dest, &src);
+   /* { dg-error "'__builtin_mma_disassemble_acc' requires the '-mmma' option" "" { target *-*-* } .-1 } */
+   return 0;
+ }
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr103627-2.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr103627-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr103627-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr103627-2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-require-effective-target power10_ok } */
+ /* { dg-options "-mdejagnu-cpu=power10 -mmma -mno-vsx" } */
+ 
+ /* Verify the emitted error message.  */
+ 
+ extern float *dest;
+ extern __vector_quad src;
+ 
+ int
+ foo ()
+ {
+   __builtin_mma_disassemble_acc (dest, &src);
+   /* { dg-error "'-mmma' requires '-mvsx'" "mma" { target *-*-* } 0 } */
+   return 0;
+ }
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr103627-3.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr103627-3.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr103627-3.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr103627-3.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,20 ----
+ /* There are no error messages for either LE or BE 64bit.  */
+ /* { dg-require-effective-target be } */
+ /* { dg-require-effective-target ilp32 } */
+ /* { dg-options "-mdejagnu-cpu=power6" } */
+ 
+ /* Verify compiler emits error message instead of ICE.  */
+ 
+ /* Option -mno-avoid-indexed-addresses is to disable the unexpected
+    warning on indexed addressing which can affect dg checks.  */
+ #pragma GCC target "cpu=power10,no-avoid-indexed-addresses"
+ int
+ main ()
+ {
+   float *b;
+   __vector_quad c;
+   __builtin_mma_disassemble_acc (b, &c);
+   /* { dg-error "'__builtin_mma_disassemble_acc' requires the '-mmma' option" "" { target *-*-* } .-1 } */
+   return 0;
+ }
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr104208-1.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr104208-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr104208-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr104208-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ /* PR target/104208 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlong-double-128 -mabi=ibmlongdouble -mlong-double-64 -Wno-psabi" } */
+ 
+ /* Verify we do not emit an error with the options above.  It is allowed
+    to reset the long double size to 64-bits after a 128-bit long double
+    ABI has been selected.  */
+ 
+ int i;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr104208-2.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr104208-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr104208-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr104208-2.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,10 ----
+ /* PR target/104208 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mlong-double-128 -mabi=ieeelongdouble -mlong-double-64 -mno-vsx -Wno-psabi" } */
+ 
+ /* Verify we do not emit an error with the options above.  IEEE 128-bit
+    long double requires VSX, so using -mno-vsx would normally generate
+    an error.  However, if we have changed to a 64-bit long double, then
+    we should allow it.  */
+ 
+ int i;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr104253.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr104253.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr104253.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr104253.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,157 ----
+ /*
+  * Require float128 support because __ibm128 currently is not enabled unless we
+  * also have __float128 support.  We require software IEEE 128-bit support,
+  * which will work on power8.  If we have hardware IEEE 128-bit support (power9
+  * or power10), ppc_float128_sw will still enable running the test.
+  */
+ 
+ /* { dg-do run } */
+ /* { dg-require-effective-target ppc_float128_sw } */
+ /* { dg-options "-O2 -mvsx -mfloat128" } */
+ /* { dg-prune-output ".-mfloat128. option may not be fully supported" } */
+ 
+ /*
+  * PR target/104253
+  *
+  * Verify that the various conversions to and from __ibm128 work.  When the
+  *  default for long double is changed to IEEE 128-bit, originally GCC would
+  *  call the functions using an 'if' name instead of 'tf' name.
+  */
+ 
+ #include <stdlib.h>
+ 
+ extern float              ibm128_to_sf  (__ibm128) __attribute__((noinline));
+ extern double             ibm128_to_df  (__ibm128) __attribute__((noinline));
+ extern int                ibm128_to_si  (__ibm128) __attribute__((noinline));
+ extern long long          ibm128_to_di  (__ibm128) __attribute__((noinline));
+ extern unsigned int       ibm128_to_usi (__ibm128) __attribute__((noinline));
+ extern unsigned long long ibm128_to_udi (__ibm128) __attribute__((noinline));
+ 
+ extern __ibm128 sf_to_ibm128  (float)              __attribute__((noinline));
+ extern __ibm128 df_to_ibm128  (double)             __attribute__((noinline));
+ extern __ibm128 si_to_ibm128  (int)                __attribute__((noinline));
+ extern __ibm128 di_to_ibm128  (long long)          __attribute__((noinline));
+ extern __ibm128 usi_to_ibm128 (unsigned int)       __attribute__((noinline));
+ extern __ibm128 udi_to_ibm128 (unsigned long long) __attribute__((noinline));
+ 
+ float
+ ibm128_to_sf  (__ibm128 x)
+ {
+   return x;
+ }
+ 
+ double
+ ibm128_to_df  (__ibm128 x)
+ {
+   return x;
+ }
+ 
+ int
+ ibm128_to_si  (__ibm128 x)
+ {
+   return x;
+ }
+ 
+ long long
+ ibm128_to_di  (__ibm128 x)
+ {
+   return x;
+ }
+ 
+ unsigned int
+ ibm128_to_usi (__ibm128 x)
+ {
+   return x;
+ }
+ 
+ unsigned long long
+ ibm128_to_udi (__ibm128 x)
+ {
+   return x;
+ }
+ 
+ __ibm128
+ sf_to_ibm128  (float x)
+ {
+   return x;
+ }
+ 
+ __ibm128
+ df_to_ibm128  (double x)
+ {
+   return x;
+ }
+ 
+ __ibm128
+ si_to_ibm128  (int x)
+ {
+   return x;
+ }
+ 
+ __ibm128
+ di_to_ibm128  (long long x)
+ {
+   return x;
+ }
+ 
+ __ibm128
+ usi_to_ibm128 (unsigned int x)
+ {
+   return x;
+ }
+ 
+ __ibm128
+ udi_to_ibm128 (unsigned long long x)
+ {
+   return x;
+ }
+ 
+ volatile float			seven_sf	= 7.0f;
+ volatile double			seven_df	= 7.0;
+ volatile int			seven_si	= 7;
+ volatile long long		seven_di	= 7LL;
+ volatile unsigned int		seven_usi	= 7U;
+ volatile unsigned long long	seven_udi	= 7ULL;
+ volatile __ibm128		seven_ibm128	= 7.0;
+ 
+ int
+ main (void)
+ {
+   if (seven_ibm128 != sf_to_ibm128 (seven_sf))
+     abort ();
+ 
+   if (seven_ibm128 != df_to_ibm128 (seven_df))
+     abort ();
+ 
+   if (seven_ibm128 != si_to_ibm128 (seven_si))
+     abort ();
+ 
+   if (seven_ibm128 != di_to_ibm128 (seven_di))
+     abort ();
+ 
+   if (seven_ibm128 != usi_to_ibm128 (seven_usi))
+     abort ();
+ 
+   if (seven_ibm128 != udi_to_ibm128 (seven_udi))
+     abort ();
+ 
+   if (seven_sf != ibm128_to_sf (seven_ibm128))
+     abort ();
+ 
+   if (seven_df != ibm128_to_df (seven_ibm128))
+     abort ();
+ 
+   if (seven_si != ibm128_to_si (seven_ibm128))
+     abort ();
+ 
+   if (seven_di != ibm128_to_di (seven_ibm128))
+     abort ();
+ 
+   if (seven_usi != ibm128_to_usi (seven_ibm128))
+     abort ();
+ 
+   if (seven_udi != ibm128_to_udi (seven_ibm128))
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-2.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* PR target/87496 */
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
! /* { dg-options "-O2 -mdejagnu-cpu=power7 -mabi=ieeelongdouble -mlong-double-64 -Wno-psabi" } */
  
  int i;
  
--- 1,7 ----
  /* PR target/87496 */
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
! /* { dg-options "-O2 -mdejagnu-cpu=power7 -mlong-double-64 -mabi=ieeelongdouble -Wno-psabi" } */
  
  int i;
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr87496-3.c	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /* PR target/87496 */
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
! /* { dg-options "-O2 -mabi=ibmlongdouble -mlong-double-64 -Wno-psabi" } */
  
  int i;
  
--- 1,7 ----
  /* PR target/87496 */
  /* { dg-do compile { target { powerpc*-*-* } } } */
  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
! /* { dg-options "-O2 -mlong-double-64 -mabi=ibmlongdouble -Wno-psabi" } */
  
  int i;
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr97142.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr97142.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr97142.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr97142.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do compile } */
+ /* { dg-options "-Ofast" } */
+ 
+ #include <math.h>
+ 
+ float test1 (float x, float y)
+ {
+   return fmodf (x, y);
+ }
+ 
+ double test2 (double x, double y)
+ {
+   return fmod (x, y);
+ }
+ 
+ float test3 (float x, float y)
+ {
+   return remainderf (x, y);
+ }
+ 
+ double test4 (double x, double y)
+ {
+   return remainder (x, y);
+ }
+ 
+ /* { dg-final { scan-assembler-not {(?n)\mb.*fmod} } } */
+ /* { dg-final { scan-assembler-not {(?n)\mb.*fmodf} } } */
+ /* { dg-final { scan-assembler-not {(?n)\mb.*remainder} } } */
+ /* { dg-final { scan-assembler-not {(?n)\mb.*remainderf} } } */
+ /* { dg-final { scan-assembler-times {\mfdiv\M} 2 } } */
+ /* { dg-final { scan-assembler-times {\mfdivs\M} 2 } } */
+ /* { dg-final { scan-assembler-times {\mfnmsub\M} 2 } } */
+ /* { dg-final { scan-assembler-times {\mfnmsubs\M} 2 } } */
+ /* { dg-final { scan-assembler-times {\mfriz\M} 2 } } */
+ /* { dg-final { scan-assembler-times {\mfrin\M} 2 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr98952.c gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr98952.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/powerpc/pr98952.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/powerpc/pr98952.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do run { target { powerpc*-*-linux* && ilp32 } } } */
+ /* { dg-options "-O2" } */
+ 
+ /* PR 96983 reported that the test in libgcc's tramp.S was backwards and it
+    would abort if the trampoline size passed to the function was greater than
+    the size the runtime was expecting (40).  It should abort if the size is less
+    than 40, not greater than 40.  This test creates a call to __trampoline_setup
+    with a much larger buffer to make sure the function does not abort.
+ 
+    We do not run this test on 64-bit since __trampoline_setup is not present in
+    64-bit systems.
+ 
+    We only run the test under Linux in case the other systems have some
+    different variant for __trampoline_setup.  */
+ 
+ #ifndef SIZE
+ #define SIZE 100
+ #endif
+ 
+ extern void __trampoline_setup (int *, unsigned, void *, void *);
+ 
+ int main (void)
+ {
+   int tramp[SIZE / sizeof (int)];
+ 
+   __trampoline_setup (tramp, SIZE, 0, 0);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/riscv/pr98777.c gcc-10.4.0/gcc/testsuite/gcc.target/riscv/pr98777.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/riscv/pr98777.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/riscv/pr98777.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fstrict-aliasing -O" } */
+ 
+ typedef struct {
+   _Complex e;
+   _Complex f;
+   _Complex g;
+   _Complex h;
+   _Complex i;
+   _Complex j;
+   _Complex k;
+   _Complex l;
+   _Complex m;
+   _Complex n;
+   _Complex o;
+   _Complex p;
+ } Scl16;
+ 
+ Scl16 g1sScl16, g2sScl16, g3sScl16, g4sScl16, g5sScl16, g6sScl16, g7sScl16,
+     g8sScl16, g9sScl16, g10sScl16, g11sScl16, g12sScl16, g13sScl16, g14sScl16,
+     g15sScl16, g16sScl16;
+ 
+ void testvaScl16();
+ 
+ void
+ testitScl16() {
+   testvaScl16(g10sScl16, g11sScl16, g12sScl16, g13sScl16, g14sScl16, g1sScl16,
+               g2sScl16, g3sScl16, g4sScl16, g5sScl16, g6sScl16, g7sScl16,
+               g8sScl16, g9sScl16, g10sScl16, g11sScl16, g12sScl16, g13sScl16,
+               g14sScl16, g15sScl16, g16sScl16);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/s390/20211119.c gcc-10.4.0/gcc/testsuite/gcc.target/s390/20211119.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/s390/20211119.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/s390/20211119.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do run { target { s390_useable_hw } } } */
+ /* { dg-options "-Os -march=z10" } */
+ signed char a;
+ int b = -925974181, c;
+ unsigned *d = &b;
+ int *e = &c;
+ int main() {
+   *e = ((217 ^ a) > 585) < *d;
+   if (c != 1)
+     __builtin_abort();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/s390/pr104775.c gcc-10.4.0/gcc/testsuite/gcc.target/s390/pr104775.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/s390/pr104775.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/s390/pr104775.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/104775 */
+ /* { dg-do assemble { target s390_zEC12_hw } } */
+ /* { dg-options "-O2 -march=zEC12" } */
+ 
+ long a[64];
+ void bar (void);
+ 
+ void
+ foo (int x, int y)
+ {
+   if (x != a[y])
+     bar ();
+   __builtin_trap ();
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/sparc/20210917-1.c gcc-10.4.0/gcc/testsuite/gcc.target/sparc/20210917-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/sparc/20210917-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/sparc/20210917-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ /* PR rtl-optimization/102306 */
+ /* Reported by Daniel Cederman <cederman@gaisler.com> */
+ 
+ /* { dg-do compile } */
+ /* { dg-require-effective-target ilp32 } */
+ /* { dg-options "-O -mcpu=v8" } */
+ 
+ extern void foo (void);
+ 
+ void test (volatile unsigned char *a) 
+ { 
+   char b = *a;
+   if (!b)
+     return;
+   if (b & 2)
+     foo ();
+ }
+ 
+ /* { dg-final { scan-assembler-times "ldub" 1 } } */
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gcc.target/sparc/20220510-1.c gcc-10.4.0/gcc/testsuite/gcc.target/sparc/20220510-1.c
*** gcc-10.3.0/gcc/testsuite/gcc.target/sparc/20220510-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gcc.target/sparc/20220510-1.c	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,31 ----
+ /* PR target/105292 */
+ /* Reported by Koakuma <koachan+gccbugs@protonmail.com> */
+ 
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mvis2" } */
+ 
+ extern void get_vbytes_v2 (unsigned);
+ 
+ typedef struct {
+   unsigned ctt_info;
+   unsigned ctt_size;
+ } ctf_type_t;
+ 
+ typedef struct {
+   unsigned short cts_offset;
+   unsigned short cts_bits;
+ } ctf_slice_t;
+ 
+ void flip_types_len (ctf_type_t *t, int bsx1, int bsx2)
+ {
+   const int kind = t->ctt_info;
+ 
+   get_vbytes_v2 (t->ctt_size);
+ 
+   if (kind == 4)
+     {
+       ctf_slice_t *s = (ctf_slice_t *)t;
+       s->cts_offset = __builtin_bswap16(bsx1);
+       s->cts_bits   = __builtin_bswap16(bsx2);
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/Wpadded.d gcc-10.4.0/gcc/testsuite/gdc.dg/Wpadded.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/Wpadded.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/Wpadded.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,4 ----
+ // { dg-do compile }
+ // { dg-options "-Wpadded" }
+ 
+ class EmptyClass { }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882a.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882a.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882a.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882a.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100882
+ // { dg-additional-options "-fmain" }
+ // { dg-do run }
+ 
+ __gshared int counter = 0;
+ struct S100882
+ {
+     this(int) { counter++; }
+     ~this() { counter++; }
+ }
+ static S100882 s;
+ static this()
+ {
+     s = cast(shared) S100882(0);
+     assert(counter == 2);
+ }
+ 
+ auto test100882()
+ {
+     return cast(shared) S100882(0);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882b.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882b.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882b.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882b.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,35 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100882
+ // { dg-do compile }
+ 
+ struct AllocatorList(Factory)
+ {
+     Factory factory;
+     auto make(size_t n) { return factory(n); }
+     this(Factory plant)
+     {
+         factory = plant;
+     }
+ }
+ 
+ struct Region
+ {
+     ~this()
+     {
+     }
+ }
+ 
+ auto mmapRegionList()
+ {
+     struct Factory
+     {
+         this(size_t )
+         {
+         }
+         auto opCall(size_t )
+         {
+             return Region();
+         }
+     }
+     auto shop = Factory();
+     AllocatorList!Factory(shop);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882c.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882c.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882c.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882c.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,19 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100882
+ // { dg-do compile }
+ 
+ auto iota(int, int)
+ {
+     struct Result
+     {
+         this(int)
+         {
+         }
+     }
+     return Result();
+ }
+ 
+ auto iota(int end)
+ {
+     int begin;
+     return iota(begin, end);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882d.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882d.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr100882d.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr100882d.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,25 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100882
+ // { dg-do compile }
+ 
+ struct CowArray
+ {
+     this(this)
+     {
+     }
+ }
+ 
+ struct Tuple
+ {
+     CowArray expand;
+ }
+ 
+ auto tuple(CowArray)
+ {
+     return Tuple();
+ }
+ 
+ auto parseCharTerm()
+ {
+     CowArray set;
+     return tuple(set);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr100967.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr100967.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr100967.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr100967.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100967
+ // { dg-do compile }
+ 
+ module object; // { dg-error "class object.TypeInfo missing or corrupt object.d" }
+ 
+ extern(C) int main()
+ {
+     int[int] aa;
+     aa[0] = 1;  // { dg-error ".object.TypeInfo. could not be found, but is implicitly used" }
+     return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr101127a.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr101127a.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr101127a.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr101127a.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,8 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101127
+ // { dg-do compile { target i?86*-*-* x86_64-*-* } }
+ // { dg-additional-options "-mavx" }
+ 
+ import gcc.builtins;
+ 
+ static assert(__traits(compiles, __builtin_ia32_andps256));
+ static assert(__traits(compiles, __builtin_ia32_pmulhrsw128));
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr101127b.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr101127b.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr101127b.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr101127b.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,7 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101127
+ // { dg-do compile { target i?86*-*-* x86_64-*-* } }
+ 
+ import gcc.builtins;
+ 
+ static assert(!__traits(compiles, __builtin_ia32_andps256));
+ static assert(!__traits(compiles, __builtin_ia32_pmulhrsw128));
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr101490.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr101490.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr101490.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr101490.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101490
+ // { dg-do compile }
+ 
+ struct S101490
+ {
+     int[0] arr;
+ }
+ 
+ void main()
+ {
+     S101490* t;
+     auto a = cast(typeof(t.arr)[0])t.arr;
+     write(a);
+ }
+ 
+ void write(S)(S args)
+ {
+     foreach (arg; args)
+     {
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr101640.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr101640.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr101640.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr101640.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,11 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101640
+ // { dg-do compile }
+ // { dg-options "-fdump-tree-original" }
+ 
+ int fun101640(ref int);
+ 
+ int test101640(int val)
+ {
+     // { dg-final { scan-tree-dump "= val \\\+ fun101640 \\\(\\\(int &\\\) &val\\\);" "original" } }
+     return val + fun101640(val);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr96435.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr96435.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr96435.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr96435.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,21 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96435
+ // { dg-do run }
+ 
+ @safe bool test96435()
+ {
+     int[2] array = [16, 678];
+     union U { int i; bool b; }
+     U u;
+     u.i = 0xDEADBEEF;
+     assert(array[u.b] == 678);
+     return u.b;
+ }
+ 
+ @safe void main()
+ {
+     auto b = test96435();
+     if (b)
+         assert(true);
+     if (!b)
+         assert(false);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.dg/pr98457.d gcc-10.4.0/gcc/testsuite/gdc.dg/pr98457.d
*** gcc-10.3.0/gcc/testsuite/gdc.dg/pr98457.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.dg/pr98457.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98457
+ // { dg-do compile }
+ 
+ void main()
+ {
+     writef!"%s";    // { dg-error "template instance writef!\"%s\" template .writef. is not defined" }
+     writef!"`%s";   // { dg-error "template instance writef!\"`%s\" template .writef. is not defined" }
+     writef!"%%s`";  // { dg-error "template instance writef!\"%%s`\" template .writef. is not defined" }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/aggr_alignment.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/aggr_alignment.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/aggr_alignment.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/aggr_alignment.d	Tue Jun 28 08:54:29 2022
*************** static assert(C2.int1.offsetof == payloa
*** 27,32 ****
--- 27,52 ----
  static assert(C2.alignof == size_t.sizeof);
  static assert(__traits(classInstanceSize, C2) == payloadOffset + 12);
  
+ align(8) struct PaddedStruct
+ {
+     bool flag;
+     align(2) S1 s1;
+ }
+ 
+ static assert(PaddedStruct.s1.offsetof == 2);
+ static assert(PaddedStruct.alignof == 8);
+ static assert(PaddedStruct.sizeof == 16);
+ 
+ align(1) struct UglyStruct
+ {
+     bool flag;
+     int i;
+     ubyte u;
+ }
+ 
+ static assert(UglyStruct.i.offsetof == 4);
+ static assert(UglyStruct.alignof == 1);
+ static assert(UglyStruct.sizeof == 9);
  
  /***************************************************/
  // https://issues.dlang.org/show_bug.cgi?id=19914
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/b19002.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/b19002.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/b19002.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/b19002.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,12 ----
+ module b19002;
+ 
+ void printf(scope const char* format){}
+ 
+ void main()
+ {
+     printf(__FILE__);
+     printf(__FILE_FULL_PATH__);
+     printf(__FUNCTION__);
+     printf(__PRETTY_FUNCTION__);
+     printf(__MODULE__);
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/betterCarray.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/betterCarray.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/betterCarray.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/betterCarray.d	Tue Jun 28 08:54:29 2022
*************** int foo(int[] a, int i)
*** 15,17 ****
--- 15,27 ----
  {
      return a[i];
  }
+ 
+ /**********************************************/
+ // https://issues.dlang.org/show_bug.cgi?id=19234
+ void issue19234()
+ {
+     static struct A {}
+     A[10] a;
+     A[10] b;
+     b[] = a[];
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1 ----
+ module object;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/interpret5.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/interpret5.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/interpret5.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/interpret5.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,30 ----
+ // https://issues.dlang.org/show_bug.cgi?id=21927
+ /*
+ TEST_OUTPUT:
+ ---
+ T1(Args...)
+ T1!()
+ T2(Args2...)
+ T2!()
+ this.T2(Args2...)
+ this.T2!()
+ ---
+ */
+ template T1(Args...) {}
+ 
+ pragma(msg, T1);    // TOK.template_
+ pragma(msg, T1!()); // TOK.scope_
+ 
+ struct S
+ {
+     template T2(Args2...) {}
+ 
+     pragma(msg, S.T2);    // TOK.template_
+     pragma(msg, S.T2!()); // TOK.scope_
+ 
+     void fun()
+     {
+         pragma(msg, this.T2);    // TOK.dotTemplateDeclaration
+         pragma(msg, this.T2!()); // TOK.dot
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/minimal3.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/minimal3.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/minimal3.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/minimal3.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,36 ----
+ // DFLAGS:
+ // REQUIRED_ARGS: -defaultlib=
+ // EXTRA_SOURCES: extra-files/minimal/object.d
+ 
+ /**********************************************/
+ // https://issues.dlang.org/show_bug.cgi?id=19234
+ void issue19234()
+ {
+     static struct A {}
+     A[10] a;
+     A[10] b;
+     b[] = a[];
+ }
+ 
+ /**********************************************/
+ // https://issues.dlang.org/show_bug.cgi?id=22005
+ void issue22005()
+ {
+     enum int[4] foo = [1,2,3,4];
+     static foreach (i, e; foo)
+     {
+     }
+ }
+ 
+ /**********************************************/
+ // https://issues.dlang.org/show_bug.cgi?id=22006
+ void issue22006()
+ {
+     alias size_t = typeof(int.sizeof);
+     alias AliasSeq(T...) = T;
+ 
+     foreach (size_t i, e; [0, 1, 2, 3]) { }
+     static foreach (size_t i, e; [0, 1, 2, 3]) { }
+     foreach (size_t i, e; AliasSeq!(0, 1, 2, 3)) { }
+     static foreach (size_t i, e; AliasSeq!(0, 1, 2, 3)) { }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/staticforeach.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/staticforeach.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/staticforeach.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/staticforeach.d	Tue Jun 28 08:54:29 2022
*************** bug17688
*** 115,120 ****
--- 115,122 ----
  T
  foo2
  T2
+ TestStaticForeach2
+ issue22007
  1 2 '3'
  2 3 '4'
  0 1
*************** struct T2{
*** 840,842 ****
--- 842,880 ----
          struct S{}
  }
  static assert(is(__traits(parent,T2.S)==T2));
+ 
+ struct TestStaticForeach2
+ {
+ static:
+     // StringExp
+     char[] test(string str)()
+     {
+         char[] s;
+         static foreach (c; str)
+         {
+             s ~= c;
+         }
+         return s;
+     }
+     static assert(test!"tёstñ" == ['t', '\xd1', '\x91', 's', 't', '\xc3', '\xb1']);
+ 
+     static foreach (c; "")
+     {
+         static assert(0);
+     }
+ 
+     // NullExp
+     enum int[] a = null;
+     static foreach (c; a)
+     {
+         static assert(0);
+     }
+ }
+ 
+ //https://issues.dlang.org/show_bug.cgi?id=22007
+ void issue22007()
+ {
+     immutable int[32] array = 1;
+     foreach (size_t a, int b; array) {}
+     static foreach (size_t a, int b; array) { }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/test21742.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/test21742.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/test21742.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/test21742.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,13 ----
+ // https://issues.dlang.org/show_bug.cgi?id=21742
+ 
+ int foo()() { return 0; }
+ 
+ struct B
+ {
+     int foo()() { return 0; }
+ }
+ 
+ static assert(is(typeof(foo) == void));
+ 
+ // failed, gagged error: expression B().foo()() has no type
+ static assert(is(typeof(B().foo) == void));
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/test22006.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/test22006.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/test22006.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/test22006.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ // https://issues.dlang.org/show_bug.cgi?id=22006
+ void test22006()
+ {
+     alias AliasSeq(TList...) = TList;
+     {
+         alias aseq = AliasSeq!(0, 1, 2, 3);
+         static foreach (ubyte i; 0 .. aseq.length) {}
+         static foreach (ubyte i, x; aseq) {}
+     }
+     {
+         static foreach (ubyte i; 0 .. [0, 1, 2, 3].length) {}
+         static foreach (ubyte i, x; [0, 1, 2, 3]) {}
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/compilable/test22133.d gcc-10.4.0/gcc/testsuite/gdc.test/compilable/test22133.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/compilable/test22133.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/compilable/test22133.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,16 ----
+ // https://issues.dlang.org/show_bug.cgi?id=22133
+ 
+ struct Slice
+ {
+     bool empty() const;
+     int front() const;
+     void popFront()() // note: requires a mutable Slice
+     {}
+ }
+ 
+ enum isInputRange1(R) = is(typeof((R r) => r.popFront));
+ enum isInputRange2(R) = __traits(compiles, (R r) => r.popFront);
+ static assert(isInputRange1!(      Slice) == true);
+ static assert(isInputRange1!(const Slice) == false);
+ static assert(isInputRange2!(      Slice) == true);
+ static assert(isInputRange2!(const Slice) == false);
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/b12504.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/b12504.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/b12504.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/b12504.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,64 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/b12504.d(26): Error: cannot implicitly convert expression `257$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `ubyte`
+ fail_compilation/b12504.d(27): Error: index type `ubyte` cannot cover index range 0..257
+ fail_compilation/b12504.d(31): Error: cannot implicitly convert expression `129$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `byte`
+ fail_compilation/b12504.d(32): Error: index type `byte` cannot cover index range 0..129
+ fail_compilation/b12504.d(36): Error: cannot implicitly convert expression `65537$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `ushort`
+ fail_compilation/b12504.d(37): Error: index type `ushort` cannot cover index range 0..65537
+ fail_compilation/b12504.d(41): Error: cannot implicitly convert expression `32769$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `short`
+ fail_compilation/b12504.d(42): Error: index type `short` cannot cover index range 0..32769
+ fail_compilation/b12504.d(46): Error: cannot implicitly convert expression `257$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `ubyte`
+ fail_compilation/b12504.d(47): Error: index type `ubyte` cannot cover index range 0..257
+ fail_compilation/b12504.d(51): Error: cannot implicitly convert expression `129$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `byte`
+ fail_compilation/b12504.d(52): Error: index type `byte` cannot cover index range 0..129
+ fail_compilation/b12504.d(56): Error: cannot implicitly convert expression `65537$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `ushort`
+ fail_compilation/b12504.d(57): Error: index type `ushort` cannot cover index range 0..65537
+ fail_compilation/b12504.d(61): Error: cannot implicitly convert expression `32769$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `short`
+ fail_compilation/b12504.d(62): Error: index type `short` cannot cover index range 0..32769
+ ---
+ */
+ void main()
+ {
+     {
+         int[0xFF + 2] sta;
+         foreach (ubyte i; 0 .. sta.length) {}
+         foreach (ubyte i, x; sta) {}
+     }
+     {
+         int[0x7F + 2] sta;
+         foreach (byte i; 0 .. sta.length) {}
+         foreach (byte i, x; sta) {}
+     }
+     {
+         int[0xFFFF + 2] sta;
+         foreach (ushort i; 0 .. sta.length) {}
+         foreach (ushort i, x; sta) {}
+     }
+     {
+         int[0x7FFF + 2] sta;
+         foreach (short i; 0 .. sta.length) {}
+         foreach (short i, x; sta) {}
+     }
+     {
+         immutable int[0xFF + 2] sta;
+         static foreach (ubyte i; 0 .. sta.length) {}
+         static foreach (ubyte i, x; sta) {}
+     }
+     {
+         immutable int[0x7F + 2] sta;
+         static foreach (byte i; 0 .. sta.length) {}
+         static foreach (byte i, x; sta) {}
+     }
+     {
+         immutable int[0xFFFF + 2] sta;
+         static foreach (ushort i; 0 .. sta.length) {}
+         static foreach (ushort i, x; sta) {}
+     }
+     {
+         immutable int[0x7FFF + 2] sta;
+         static foreach (short i; 0 .. sta.length) {}
+         static foreach (short i, x; sta) {}
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/diag16976.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/diag16976.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/diag16976.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/diag16976.d	Tue Jun 28 08:54:29 2022
***************
*** 1,21 ****
  /* TEST_OUTPUT:
  ---
! fail_compilation/diag16976.d(28): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(29): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(30): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(31): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(32): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(33): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(34): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(35): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(36): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(37): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(38): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(39): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(40): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(41): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(42): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(43): Error: foreach: key cannot be of non-integral type `float`
  ---
  */
  
--- 1,37 ----
  /* TEST_OUTPUT:
  ---
! fail_compilation/diag16976.d(44): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(45): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(46): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(47): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(48): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(49): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(50): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(51): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(52): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(53): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(54): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(55): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(56): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(57): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(58): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(59): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(65): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(66): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(67): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(68): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(69): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(70): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(71): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(72): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(73): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(74): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(75): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(76): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(77): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(78): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(79): Error: foreach: key cannot be of non-integral type `float`
! fail_compilation/diag16976.d(80): Error: foreach: key cannot be of non-integral type `float`
  ---
  */
  
*************** void main()
*** 41,44 ****
--- 57,81 ----
      foreach_reverse(float f, dchar i; sta) {}
      foreach_reverse(float f, dchar i; str) {}
      foreach_reverse(float f, dchar i; chr) {}
+ 
+     immutable int[]  idyn = [1,2,3,4,5];
+     immutable int[5] ista = [1,2,3,4,5];
+     immutable char[]  istr = ['1','2','3','4','5'];
+     immutable char[5] ichr = ['1','2','3','4','5'];
+     static foreach(float f, i; idyn) {}
+     static foreach(float f, i; ista) {}
+     static foreach(float f, i; istr) {}
+     static foreach(float f, i; ichr) {}
+     static foreach(float f, dchar i; idyn) {}
+     static foreach(float f, dchar i; ista) {}
+     static foreach(float f, dchar i; istr) {}
+     static foreach(float f, dchar i; ichr) {}
+     static foreach_reverse(float f, i; idyn) {}
+     static foreach_reverse(float f, i; ista) {}
+     static foreach_reverse(float f, i; istr) {}
+     static foreach_reverse(float f, i; ichr) {}
+     static foreach_reverse(float f, dchar i; idyn) {}
+     static foreach_reverse(float f, dchar i; ista) {}
+     static foreach_reverse(float f, dchar i; istr) {}
+     static foreach_reverse(float f, dchar i; ichr) {}
  }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail117.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail117.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail117.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail117.d	Tue Jun 28 08:54:29 2022
***************
*** 1,8 ****
  /*
  TEST_OUTPUT:
  ---
! fail_compilation/fail117.d(35): Error: expression has no value
! fail_compilation/fail117.d(36): Error: expression has no value
  ---
  */
  
--- 1,10 ----
  /*
  TEST_OUTPUT:
  ---
! fail_compilation/fail117.d(37): Error: expression `foo.mixin MGettor!(a) geta;
! ` is `void` and has no value
! fail_compilation/fail117.d(38): Error: expression `foo.mixin MGettor!(b) getb;
! ` is `void` and has no value
  ---
  */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail22006.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail22006.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail22006.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail22006.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,22 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail22006.d(15): Error: cannot implicitly convert expression `4$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `bool`
+ fail_compilation/fail22006.d(16): Error: index type `bool` cannot cover index range 0..4
+ fail_compilation/fail22006.d(19): Error: cannot implicitly convert expression `4$?:32=u|64=LU$` of type `$?:32=uint|64=ulong$` to `bool`
+ fail_compilation/fail22006.d(20): Error: index type `bool` cannot cover index range 0..4
+ ---
+ */
+ void test22006()
+ {
+     alias AliasSeq(TList...) = TList;
+     {
+         alias aseq = AliasSeq!(0, 1, 2, 3);
+         static foreach (bool i; 0 .. aseq.length) {}
+         static foreach (bool i, x; aseq) {}
+     }
+     {
+         static foreach (bool i; 0 .. [0, 1, 2, 3].length) {}
+         static foreach (bool i, x; [0, 1, 2, 3]) {}
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail22133.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail22133.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail22133.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail22133.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,24 ----
+ // https://issues.dlang.org/show_bug.cgi?id=22133
+ /*
+ TEST_OUTPUT
+ ---
+ fail_compilation/fail22133.d(16): Error: `s.popFront()()` has no effect
+ fail_compilation/fail22133.d(17): Error: template `s.popFront()()` has no type
+ ---
+ */
+ struct Slice
+ {
+     void popFront()() {}
+ }
+ 
+ auto fail22133(const Slice s)
+ {
+     s.popFront;
+     return s.popFront;
+ }
+ 
+ auto ok22133(Slice s)
+ {
+     s.popFront;
+     return s.popFront;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail22144.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail22144.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail22144.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail22144.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,14 ----
+ // https://issues.dlang.org/show_bug.cgi?id=22144
+ /* TEST_OUTPUT
+ ---
+ fail_compilation/fail22144.d(12): Error: cannot cast expression `zarray1` of type `int[0]` to `int[0][]` since sizes don't line up
+ ---
+ */
+ void main()
+ {
+   int[0] zarray1;
+   int[0][0] zarray2;
+ 
+   auto zslice1 = cast(int[0][])zarray1; // ICE -> Error
+   auto zslice2 = cast(int[0][])zarray2; // ICE -> OK
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d	Tue Jun 28 08:54:29 2022
***************
*** 3,12 ****
  TEST_OUTPUT:
  ---
  fail_compilation/fail238_m32.d(21): Error: cannot implicitly convert expression `"a"` of type `string` to `uint`
! fail_compilation/fail238_m32.d(24): Error: cannot interpret X!() at compile time
! fail_compilation/fail238_m32.d(29): Error: template instance fail238_m32.A!"a" error instantiating
! fail_compilation/fail238_m32.d(35):        instantiated from here: M!(q)
! fail_compilation/fail238_m32.d(35):        while evaluating pragma(msg, M!(q))
  ---
  */
  
--- 3,12 ----
  TEST_OUTPUT:
  ---
  fail_compilation/fail238_m32.d(21): Error: cannot implicitly convert expression `"a"` of type `string` to `uint`
! fail_compilation/fail238_m32.d(24): Error: cannot implicitly convert expression `X!()` of type `void` to `const(string)`
! fail_compilation/fail238_m32.d(29): Error: template instance `fail238_m32.A!"a"` error instantiating
! fail_compilation/fail238_m32.d(35):        instantiated from here: `M!(q)`
! fail_compilation/fail238_m32.d(35):        while evaluating `pragma(msg, M!(q))`
  ---
  */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d	Tue Jun 28 08:54:29 2022
***************
*** 3,12 ****
  TEST_OUTPUT:
  ---
  fail_compilation/fail238_m64.d(21): Error: cannot implicitly convert expression `"a"` of type `string` to `ulong`
! fail_compilation/fail238_m64.d(24): Error: cannot interpret X!() at compile time
! fail_compilation/fail238_m64.d(29): Error: template instance fail238_m64.A!"a" error instantiating
! fail_compilation/fail238_m64.d(35):        instantiated from here: M!(q)
! fail_compilation/fail238_m64.d(35):        while evaluating pragma(msg, M!(q))
  ---
  */
  
--- 3,12 ----
  TEST_OUTPUT:
  ---
  fail_compilation/fail238_m64.d(21): Error: cannot implicitly convert expression `"a"` of type `string` to `ulong`
! fail_compilation/fail238_m64.d(24): Error: cannot implicitly convert expression `X!()` of type `void` to `const(string)`
! fail_compilation/fail238_m64.d(29): Error: template instance `fail238_m64.A!"a"` error instantiating
! fail_compilation/fail238_m64.d(35):        instantiated from here: `M!(q)`
! fail_compilation/fail238_m64.d(35):        while evaluating `pragma(msg, M!(q))`
  ---
  */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424b.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424b.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424b
  {
      @property int g()() { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424c.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424c.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424c
  {
      @property int g()() { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424d.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424d.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424d
  {
      @property int g()() immutable { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424e.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424e.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424e
  {
      @property int g()() immutable { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424f.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424f.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424f
  {
      @property int g()() shared { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424g.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424g.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424g
  {
      @property int g()() { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424h.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424h.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424g
  {
      @property int g()() { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail7424i.d	Tue Jun 28 08:54:29 2022
***************
*** 1,3 ****
--- 1,9 ----
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/fail7424i.d(10): Error: template `this.g()()` has no value
+ ---
+ */
  struct S7424g
  {
      @property int g()() immutable { return 0; }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail9766.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail9766.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/fail9766.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/fail9766.d	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /*
  TEST_OUTPUT:
  ---
! fail_compilation/fail9766.d(14): Error: cannot interpret Foo!int at compile time
  fail_compilation/fail9766.d(17): Error: alignment must be an integer positive power of 2, not -1
  fail_compilation/fail9766.d(20): Error: alignment must be an integer positive power of 2, not 0
  fail_compilation/fail9766.d(23): Error: alignment must be an integer positive power of 2, not 3
--- 1,8 ----
  /*
  TEST_OUTPUT:
  ---
! fail_compilation/fail9766.d(14): Error: integer constant expression expected instead of `Foo!int`
! fail_compilation/fail9766.d(14): Error: alignment must be an integer positive power of 2, not Foo!int
  fail_compilation/fail9766.d(17): Error: alignment must be an integer positive power of 2, not -1
  fail_compilation/fail9766.d(20): Error: alignment must be an integer positive power of 2, not 0
  fail_compilation/fail9766.d(23): Error: alignment must be an integer positive power of 2, not 3
*************** fail_compilation/fail9766.d(26): Error:
*** 9,14 ****
--- 10,16 ----
  ---
  */
  
+ #line 12
  template Foo(T) {}
  
  align(Foo!int)
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/ice9406.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/ice9406.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/ice9406.d	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/ice9406.d	Tue Jun 28 08:54:29 2022
***************
*** 1,7 ****
  /*
  TEST_OUTPUT:
  ---
! fail_compilation/ice9406.d(21): Error: expression has no value
  ---
  */
  
--- 1,8 ----
  /*
  TEST_OUTPUT:
  ---
! fail_compilation/ice9406.d(22): Error: `s1.mixin Mixin!() t1;
! ` has no effect
  ---
  */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/test21927.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/test21927.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/test21927.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/test21927.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,20 ----
+ // https://issues.dlang.org/show_bug.cgi?id=21927
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/test21927.d(17): Error: invalid `foreach` aggregate `this.T2(Args2...)`
+ fail_compilation/test21927.d(18): Error: invalid `foreach` aggregate `this.T2!()`
+ ---
+ */
+ 
+ struct S
+ {
+     template T2(Args2...) {}
+ 
+     void fun()
+     {
+         // original test case
+         static foreach (p; this.T2) {} // ICE
+         static foreach (p; this.T2!()) {} // ICE
+     }
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/test21939.d gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/test21939.d
*** gcc-10.3.0/gcc/testsuite/gdc.test/fail_compilation/test21939.d	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gdc.test/fail_compilation/test21939.d	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,9 ----
+ // https://issues.dlang.org/show_bug.cgi?id=21939
+ /*
+ TEST_OUTPUT:
+ ---
+ fail_compilation/test21939.d(9): Error: invalid `foreach` aggregate `Object`, define `opApply()`, range primitives, or use `.tupleof`
+ ---
+ */
+ 
+ static foreach (a; Object) {}
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/PR82376.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/PR82376.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/PR82376.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/PR82376.f90	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,59 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original -fcheck=pointer" }
+ !
+ ! Test the fix for PR82376. The pointer check was doubling up the call
+ ! to new. The fix reduces the count of 'new' from 5 to 4.
+ !
+ ! Contributed by José Rui Faustino de Sousa  <jrfsousa@gmail.com>
+ !
+ program main_p
+ 
+   integer, parameter :: n = 10
+ 
+   type :: foo_t
+     integer, pointer :: v =>null()
+   end type foo_t
+ 
+   integer, save :: pcnt = 0
+ 
+   type(foo_t) :: int
+   integer     :: i
+ 
+   do i = 1, n
+     call init(int, i)
+     if(.not.associated(int%v)) stop 1
+     if(int%v/=i) stop 2
+     if(pcnt/=i) stop 3
+   end do
+ 
+ contains
+ 
+   function new(data) result(this)
+     integer, target, intent(in) :: data
+ 
+     integer, pointer :: this
+ 
+     nullify(this)
+     this => data
+     pcnt = pcnt + 1
+     return
+   end function new
+ 
+   subroutine init(this, data)
+     type(foo_t), intent(out) :: this
+     integer,     intent(in)  :: data
+ 
+     call set(this, new(data))
+     return
+   end subroutine init
+ 
+   subroutine set(this, that)
+     type(foo_t),     intent(inout) :: this
+     integer, target, intent(in)    :: that
+ 
+     this%v => that
+     return
+   end subroutine set
+ 
+ end program main_p
+ ! { dg-final { scan-tree-dump-times "new" 4 "original" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/alloc_deferred_comp_1.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/alloc_deferred_comp_1.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/alloc_deferred_comp_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/alloc_deferred_comp_1.f90	Tue Jun 28 08:54:29 2022
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR99125, where the array reference in the print
+ ! statement caused an ICE because the gimplifier complained about '0'
+ ! being used as an lvalue.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    type t
+       character(:), allocatable :: a(:)
+    end type
+    type(t) :: x
+    character(8) :: c(3) = ['12 45 78','23 56 89','34 67 90']
+    x%a = c
+    if (any (x%a(2:3) .ne. ['23 56 89','34 67 90'])) stop 1
+    if (any (x%a(2:3)(4:5) .ne. ['56','67'])) stop 2 ! Bizarrely this worked.
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/argument_checking_25.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/argument_checking_25.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/argument_checking_25.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/argument_checking_25.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do compile }
+ ! PR fortran/100274 - ICE in gfc_conv_procedure_call, at fortran/trans-expr.c:6131
+ 
+ program p
+   call s('y')   ! { dg-warning "Character length of actual argument" }
+ contains
+   subroutine s(x)
+     character(8), intent(out) :: x
+   end
+ end
+ 
+ ! { dg-error "in variable definition context"  " " { target *-*-* } 5 }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/array_constructor_54.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/array_constructor_54.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/array_constructor_54.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/array_constructor_54.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original -Warray-temporaries" }
+ ! { dg-final { scan-tree-dump-not "stride" "original" } }
+ ! Verify that no temporary array is generated for a constant array constructor
+ ! See e.g. PR fortran/102717, PR fortran/102787
+ 
+ program p
+   integer, parameter :: a(*)   = [1,2,3,4]
+   integer, parameter :: b(2,3) = reshape([1,2,3,4,5,6], shape (b))
+   print *, [a]
+   print *, [a( : ) ]
+   print *, [a( ::1)]
+   print *, [a( ::2)]
+   print *, [a(1:2:1)]
+   print *, [a(4:1:-2)]
+   print *, [a([3,2])]
+   print *, [a,1]
+   print *, [1,a]
+   print *, [a,a]
+   print *, [b(:,3:1:-2)]
+   print *, [1,b(1,[2,1,3])]
+   print *, [a,b]
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/asan_associate_58.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/asan_associate_58.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/asan_associate_58.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/asan_associate_58.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-O0" }
+ !
+ ! PR fortran/104228
+ ! The code generated code for the program below wrongly pushed the Y character
+ ! length variable to both P and S scope, which was leading to an ICE when
+ ! address sanitizer was in effect
+ 
+ program p
+    character(:), save, allocatable :: x(:)
+    call s
+ contains
+    subroutine s
+       associate (y => x)
+          y = [x]
+       end associate
+    end
+ end
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/asan_associate_59.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/asan_associate_59.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/asan_associate_59.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/asan_associate_59.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do compile }
+ ! { dg-additional-options "-O0" }
+ !
+ ! PR fortran/104228
+ ! The code generated code for the program below wrongly pushed the Y character
+ ! length variable to both P and S scope, which was leading to an ICE when
+ ! address sanitizer was in effect
+ 
+ program p
+    character(:), allocatable :: x(:)
+    call s
+ contains
+    subroutine s
+       associate (y => x)
+          y = [x]
+       end associate
+    end
+ end
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_54.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_54.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_54.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_54.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,34 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR93701.
+ !
+ ! Contributed by Simon Brass  <simon.brass@desy.de>
+ !
+ module test
+   implicit none
+ 
+   integer, parameter :: N_STATE = 1, &
+        TEST_STATE = 1
+ 
+   type :: test_t
+      integer, dimension(:), allocatable :: state
+   end type test_t
+ 
+ contains
+ 
+   subroutine test_allocate (obj)
+     class(test_t), intent(out) :: obj
+     allocate (obj%state(N_STATE))
+   end subroutine test_allocate
+ 
+   subroutine test_alter_state1 (obj, a)
+     class(test_t), intent(inout) :: obj
+     integer, intent(in) :: a
+     associate (state => obj%state(TEST_STATES)) ! { dg-error "is used as array" }
+ !      state = a
+       state(TEST_STATE) = a
+     end associate
+   end subroutine test_alter_state1
+ 
+ end module test
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_55.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_55.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_55.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_55.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR93701.
+ !
+ ! Contributed by Simon Brass  <simon.brass@desy.de>
+ !
+ module test
+   implicit none
+ 
+   integer, parameter :: N_STATE = 1, &
+        TEST_STATE = 1
+ 
+   type :: test_t
+      integer, dimension(:), allocatable :: state
+   end type test_t
+ 
+ contains
+ 
+   subroutine test_allocate (obj)
+     class(test_t), intent(out) :: obj
+     allocate (obj%state(N_STATE))
+   end subroutine test_allocate
+ 
+ 
+   subroutine test_alter_state2 (obj, a)
+     class(test_t), intent(inout) :: obj
+     integer, intent(in) :: a
+     associate (state => obj%state(TEST_STATES)) ! { dg-error "no IMPLICIT type" }
+       state = a                                 ! { dg-error "vector-indexed target" }
+ !      state(TEST_STATE) = a
+     end associate
+   end subroutine test_alter_state2
+ 
+ end module test
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_56.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_56.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_56.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_56.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,36 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR93701.
+ !
+ ! Contributed by Simon Brass  <simon.brass@desy.de>
+ !
+ module test
+   implicit none
+ 
+   integer, parameter :: N_STATE = 1, &
+        TEST_STATE = 1
+ 
+   type :: test_t
+      integer, dimension(:), allocatable :: state
+   end type test_t
+ 
+ contains
+ 
+   subroutine test_allocate (obj)
+     class(test_t), intent(out) :: obj
+     allocate (obj%state(N_STATE))
+   end subroutine test_allocate
+ 
+ 
+   subroutine test_alter_state2 (obj, a)
+     class(test_t), intent(inout) :: obj
+     integer, intent(in) :: a
+     integer, dimension(2) :: TEST_STATES = [1,2]
+     associate (state => obj%state(TEST_STATES))
+       state = a                                 ! { dg-error "vector-indexed target" }
+       state(TEST_STATE) = a                     ! { dg-error "vector-indexed target" }
+     end associate
+   end subroutine test_alter_state2
+ 
+ end module test
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_58.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_58.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/associate_58.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/associate_58.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/104570
+ ! The following used to cause an ICE because the string length
+ ! evaluation of the (y) expression was not prepared to handle
+ ! a non-scalar expression.
+ 
+ program p
+    character(:), allocatable :: x(:)
+    x = ['abc']
+    call s
+ contains
+    subroutine s
+       associate (y => x)
+          associate (z => (y))
+             print *, z
+          end associate
+       end associate
+    end
+ end
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/associated_target_7.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/associated_target_7.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/associated_target_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/associated_target_7.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,87 ----
+ ! { dg-do run }
+ !
+ ! associated_target_7.f90: Test the fix for PR98565.
+ !
+ ! Contributed by Yves Secretan  <yves.secretan@ete.inrs.ca>
+ !
+ MODULE PS_SN0N_M
+ 
+    IMPLICIT NONE
+    PRIVATE
+ 
+    TYPE, PUBLIC :: DT_GRID_T
+        INTEGER :: NNT
+    CONTAINS
+        ! PASS
+    END TYPE DT_GRID_T
+ 
+    TYPE, PUBLIC :: LM_ELEM_T
+        CLASS(DT_GRID_T), POINTER :: PGRID
+    CONTAINS
+        PROCEDURE, PUBLIC :: REQPGRID => LM_ELEM_REGPGRID
+    END TYPE LM_ELEM_T
+ 
+    TYPE, PUBLIC :: PS_SN0N_T
+       CLASS(DT_GRID_T), POINTER :: PGRID
+ 
+    CONTAINS
+       PROCEDURE, PUBLIC :: ASGOELE  => PS_SN0N_ASGOELE
+    END TYPE PS_SN0N_T
+ 
+ 
+ CONTAINS
+    !------------------------------------------------------------------------
+    !------------------------------------------------------------------------
+    FUNCTION LM_ELEM_REGPGRID(SELF) RESULT(PGRID)
+    CLASS(DT_GRID_T), POINTER :: PGRID
+    CLASS(LM_ELEM_T), INTENT(IN) :: SELF
+    PGRID => SELF%PGRID
+    RETURN
+    END FUNCTION LM_ELEM_REGPGRID
+ 
+    !------------------------------------------------------------------------
+    !------------------------------------------------------------------------
+    FUNCTION PS_SN0N_ASGOELE(SELF, OELE) RESULT(ERMSG)
+ 
+    INTEGER :: ERMSG
+    CLASS(PS_SN0N_T), INTENT(IN) :: SELF
+    CLASS(LM_ELEM_T), INTENT(IN) :: OELE
+ 
+    !CLASS(DT_GRID_T), POINTER :: PGRID
+    LOGICAL :: ISOK
+    !------------------------------------------------------------------------
+ 
+    ! ASSOCIATED with temp variable compiles
+    !PGRID => OELE%REQPGRID()
+    !ISOK = ASSOCIATED(SELF%PGRID, PGRID)
+ 
+    ! ASSOCIATE without temp variable crashes with ICE
+    ISOK = ASSOCIATED(SELF%PGRID, OELE%REQPGRID())
+    ERMSG = 0
+    IF (ISOK) ERMSG = 1
+ 
+    RETURN
+    END FUNCTION PS_SN0N_ASGOELE
+ 
+ END MODULE PS_SN0N_M
+ 
+ 
+    USE PS_SN0N_M
+    CLASS(PS_SN0N_T), ALLOCATABLE :: SELF
+    CLASS(LM_ELEM_T), ALLOCATABLE :: OELE
+    TYPE (DT_GRID_T), TARGET :: GRID1 = DT_GRID_T (42)
+    TYPE (DT_GRID_T), TARGET :: GRID2 = DT_GRID_T (84)
+ 
+    ALLOCATE (PS_SN0N_T :: SELF)
+    ALLOCATE (LM_ELEM_T :: OELE)
+    SELF%PGRID => GRID1
+ 
+    OELE%PGRID => NULL ()
+    IF (SELF%ASGOELE (OELE) .NE. 0) STOP 1
+ 
+    OELE%PGRID => GRID2
+    IF (SELF%ASGOELE (OELE) .NE. 0) STOP 2
+ 
+    OELE%PGRID => GRID1
+    IF (SELF%ASGOELE (OELE) .NE. 1) STOP 3
+ END
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/bound_simplification_7.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/bound_simplification_7.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/bound_simplification_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/bound_simplification_7.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ ! PR fortran/103392 - ICE in simplify_bound
+ 
+ program p
+   integer, allocatable :: a(1:1) ! { dg-error "deferred shape or assumed rank" }
+   integer :: b(1) = lbound(a)    ! { dg-error "does not reduce" }
+   integer :: c(1) = ubound(a)    ! { dg-error "does not reduce" }
+ end
+ 
+ subroutine s(x, y)
+   type t
+      integer :: i(3)
+   end type t
+   type(t), pointer     :: x(:)
+   type(t), allocatable :: y(:)
+   integer, parameter   :: m(1) = ubound (x(1)% i)
+   integer              :: n(1) = ubound (y(1)% i)
+ end subroutine s
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/bounds_check_23.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/bounds_check_23.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/bounds_check_23.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/bounds_check_23.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do run }
+ ! { dg-options "-fcheck=bounds -fdump-tree-original" }
+ ! PR fortran/98490 - out of bounds in array constructor with implied do loop
+ 
+ program test
+   implicit none
+   call sub('Lorem ipsum')
+ contains
+   subroutine sub( text )
+     character(len=*), intent(in)  :: text
+     character(len=1), allocatable :: c(:)
+     integer :: i
+     c = [ ( text(i:i), i = 1, len(text) ) ]
+     if (c(1) /= 'L') stop 1
+   end subroutine sub
+ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "Substring out of bounds:" 2 "original" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/class_dummy_6.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/class_dummy_6.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/class_dummy_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/class_dummy_6.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,65 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR99819 - explicit shape class arrays in different
+ ! procedures caused an ICE.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    type t
+       integer :: i
+    end type
+    class(t), allocatable :: dum1(:), dum2(:), dum3(:,:)
+ 
+    allocate (t :: dum1(3), dum2(10), dum3(2,5))
+    dum2%i = [1,2,3,4,5,6,7,8,9,10]
+    dum3%i = reshape ([1,2,3,4,5,6,7,8,9,10],[2,5])
+ 
+ ! Somewhat elaborated versions of the PR procedures.
+    if (f (dum1, dum2, dum3) .ne. 10) stop 1
+    if (g (dum1) .ne. 3) stop 2
+ 
+ ! Test the original versions of the procedures.
+    if (f_original (dum1, dum2) .ne. 3) stop 3
+    if (g_original (dum2) .ne. 10) stop 4
+ 
+ contains
+    integer function f(x, y, z)
+       class(t) :: x(:)
+       class(t) :: y(size( x))
+       class(t) :: z(2,*)
+       if (size (y) .ne. 3) stop 5
+       if (size (z) .ne. 0) stop 6
+       select type (y)
+         type is (t)
+           f = 1
+           if (any (y%i .ne. [1,2,3])) stop 7
+         class default
+           f = 0
+       end select
+       select type (z)
+         type is (t)
+           f = f*10
+           if (any (z(1,1:4)%i .ne. [1,3,5,7])) stop 8
+         class default
+           f = 0
+       end select
+    end
+    integer function g(z)
+       class(t) :: z(:)
+       type(t) :: u(size(z))
+       g = size (u)
+    end
+ 
+    integer function f_original(x, y)
+       class(t) :: x(:)
+       class(*) :: y(size (x))
+       f_original = size (y)
+    end
+ 
+    integer function g_original(z)
+       class(*) :: z(:)
+       type(t) :: u(size(z))
+       g_original = size (u)
+    end
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/class_dummy_7.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/class_dummy_7.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/class_dummy_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/class_dummy_7.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,60 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR46691 - enable class assumed size arrays
+ !
+ ! Reported by Tobias Burnus  <burnus@gcc.gnu.org>
+ ! from http://j3-fortran.org/pipermail/j3/2010-December/004084.html
+ ! submitted by Robert Corbett.
+ !
+        MODULE TYPES
+          PRIVATE
+          PUBLIC REC, REC2
+ 
+          TYPE REC
+            INTEGER A
+          END TYPE
+ 
+          TYPE, EXTENDS(REC) :: REC2
+            INTEGER B
+          END TYPE
+        END
+ 
+        SUBROUTINE SUB1(A, N)
+          USE TYPES
+          CLASS(REC), INTENT(IN) :: A(*)
+          INTERFACE
+            SUBROUTINE SUB2(A, N, IARRAY)
+              USE TYPES
+              TYPE(REC) A(*)
+              INTEGER :: N, IARRAY(N)
+            END
+          END INTERFACE
+ 
+          CALL SUB2(A, N,[1,2,2,3,3,4,4,5,5,6])
+          select type (B => A(1:N))
+              type is (REC2)
+                  call SUB2(B%REC,N,[1,2,3,4,5,6,7,8,9,10])
+          end select
+ 
+        END
+ 
+        SUBROUTINE SUB2(A, N, IARRAY)
+          USE TYPES
+          TYPE(REC) A(*)
+          INTEGER :: N, IARRAY(N)
+          if (any (A(:N)%A .ne. IARRAY(:N))) stop 1
+        END
+ 
+        PROGRAM MAIN
+          USE TYPES
+          CLASS(REC), ALLOCATABLE :: A(:)
+          INTERFACE
+            SUBROUTINE SUB1(A, N)
+              USE TYPES
+              CLASS(REC), INTENT(IN) :: A(*)
+            END SUBROUTINE
+          END INTERFACE
+ 
+          A = [ (REC2(I, I+1), I = 1, 10) ]
+          CALL SUB1(A, 10)
+        END
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/coarray/dummy_2.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/coarray/dummy_2.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/coarray/dummy_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/coarray/dummy_2.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/99817
+ !
+ ! Contributed by G. Steinmetz
+ !
+ subroutine s1 (x)
+    character(*) :: x(*)[*]
+ end
+ 
+ subroutine s2 (x)
+    character(*), dimension(*), codimension[*] :: x
+    integer :: i
+    i = len(x)
+ end
+ 
+ subroutine s3 (x, y)
+    character(*), dimension(:) :: x[*]
+    character(*) :: y
+ end
+ 
+ subroutine s4 (x, y, z)
+    character(*), dimension(:) :: x[2, *]
+    character(*), dimension(*) :: y
+    character(*) :: z
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/coarray_48.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/coarray_48.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/coarray_48.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/coarray_48.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=lib" }
+ !
+ ! Fix for P99818 in which wrong code caused an ICE.
+ !
+ ! Contributed by Gerhard Steinmetz <gscfq@t-online.de>
+ !
+ module m
+    type t
+       integer :: a
+    contains
+       procedure :: s
+    end type
+ contains
+    subroutine s(x)
+       class(t) :: x[*]
+    end
+ end
+ program p
+    use m
+    associate (y => t(1))
+       call y%s           ! { dg-error "must be a coarray" }
+    end associate
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/dec_math_5.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/dec_math_5.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/dec_math_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/dec_math_5.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,104 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-std=gnu" }
+ ! { dg-require-effective-target fortran_real_10 }
+ ! { dg-require-effective-target fortran_real_16 }
+ 
+ program p
+   implicit none
+   integer, parameter :: ep = selected_real_kind (17) ! real(10)
+   real(4)  :: a1, e1 = 1.e-5
+   real(8)  :: b1, e2 = 1.e-14
+   real(ep) :: c1, e3 = 1.e-17
+   real(16) :: d1, e4 = 1.e-30
+ 
+   a1 = 1; a1 = atand(a1)
+   b1 = 1; b1 = atand(b1)
+   c1 = 1; c1 = atand(c1)
+   d1 = 1; d1 = atand(d1)
+ ! print '(4(F15.11))', a1, b1, c1, d1
+   if (abs(a1 - 45) > e1) stop 1
+   if (abs(b1 - 45) > e2) stop 2
+   if (abs(c1 - 45) > e3) stop 3
+   if (abs(d1 - 45) > e4) stop 4
+ 
+   a1 = 0.5; a1 = asind(a1)
+   b1 = 0.5; b1 = asind(b1)
+   c1 = 0.5; c1 = asind(c1)
+   d1 = 0.5; d1 = asind(d1)
+   if (abs(a1 - 30) > e1) stop 5
+   if (abs(b1 - 30) > e2) stop 6
+   if (abs(c1 - 30) > e3) stop 7
+   if (abs(d1 - 30) > e4) stop 8
+ 
+   a1 = 0.5; a1 = acosd(a1)
+   b1 = 0.5; b1 = acosd(b1)
+   c1 = 0.5; c1 = acosd(c1)
+   d1 = 0.5; d1 = acosd(d1)
+   if (abs(a1 - 60) > e1) stop 9
+   if (abs(b1 - 60) > e2) stop 10
+   if (abs(c1 - 60) > e3) stop 11
+   if (abs(d1 - 60) > e4) stop 12
+ 
+   a1 = 45; a1 = tand(a1)
+   b1 = 45; b1 = tand(b1)
+   c1 = 45; c1 = tand(c1)
+   d1 = 45; d1 = tand(d1)
+   if (abs(a1 - 1) > e1) stop 13
+   if (abs(b1 - 1) > e2) stop 14
+   if (abs(c1 - 1) > e3) stop 15
+   if (abs(d1 - 1) > e4) stop 16
+ 
+   a1 = 60; a1 = tand(a1)
+   b1 = 60; b1 = tand(b1)
+   c1 = 60; c1 = tand(c1)
+   d1 = 60; d1 = tand(d1)
+   if (abs(a1 - sqrt (3._4) ) > e1) stop 17
+   if (abs(b1 - sqrt (3._8) ) > e2) stop 18
+   if (abs(c1 - sqrt (3._ep)) > e3) stop 19
+   if (abs(d1 - sqrt (3._16)) > e4) stop 20
+ 
+   a1 = 45; a1 = cotand(a1)
+   b1 = 45; b1 = cotand(b1)
+   c1 = 45; c1 = cotand(c1)
+   d1 = 45; d1 = cotand(d1)
+   if (abs(a1 - 1) > e1) stop 21
+   if (abs(b1 - 1) > e2) stop 22
+   if (abs(c1 - 1) > e3) stop 23
+   if (abs(d1 - 1) > e4) stop 24
+ 
+   a1 = 30; a1 = cotand(a1)
+   b1 = 30; b1 = cotand(b1)
+   c1 = 30; c1 = cotand(c1)
+   d1 = 30; d1 = cotand(d1)
+   if (abs(a1 - sqrt (3._4) ) > e1) stop 25
+   if (abs(b1 - sqrt (3._8) ) > e2) stop 26
+   if (abs(c1 - sqrt (3._ep)) > e3) stop 27
+   if (abs(d1 - sqrt (3._16)) > e4) stop 28
+ 
+   a1 = 1; a1 = atan2d(a1, a1)
+   b1 = 1; b1 = atan2d(b1, b1)
+   c1 = 1; c1 = atan2d(c1, c1)
+   d1 = 1; d1 = atan2d(d1, d1)
+   if (abs(a1 - 45) > e1) stop 29
+   if (abs(b1 - 45) > e2) stop 30
+   if (abs(c1 - 45) > e3) stop 31
+   if (abs(d1 - 45) > e4) stop 32
+ 
+   a1 = 30; a1 = sind(a1)
+   b1 = 30; b1 = sind(b1)
+   c1 = 30; c1 = sind(c1)
+   d1 = 30; d1 = sind(d1)
+   if (abs(a1 - 0.5) > e1) stop 33
+   if (abs(b1 - 0.5) > e2) stop 34
+   if (abs(c1 - 0.5) > e3) stop 35
+   if (abs(d1 - 0.5) > e4) stop 36
+ 
+   a1 = 60; a1 = cosd(a1)
+   b1 = 60; b1 = cosd(b1)
+   c1 = 60; c1 = cosd(c1)
+   d1 = 60; d1 = cosd(d1)
+   if (abs(a1 - 0.5) > e1) stop 37
+   if (abs(b1 - 0.5) > e2) stop 38
+   if (abs(c1 - 0.5) > e3) stop 39
+   if (abs(d1 - 0.5) > e4) stop 40
+ end program p
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/dec_union_12.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/dec_union_12.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/dec_union_12.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/dec_union_12.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,43 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy -ffree-form -finit-local-zero -finit-derived -fdec-structure" }
+ !
+ ! PR fortran/105310
+ !
+ ! Test that gfc_conv_union_initializer does not cause an ICE when called
+ ! to build the constructor for a field which triggers a vector resize.
+ !
+ 
+ program dec_union_12
+   implicit none
+ STRUCTURE /foo8u/
+   ! 8 fields
+   INTEGER(4) :: a,b,c,d,e,f,g,h
+   UNION
+   MAP
+   ENDMAP
+   ENDUNION
+ ENDSTRUCTURE
+ STRUCTURE /foo16u/
+   ! 16 fields
+   INTEGER(4) :: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p
+   UNION
+   MAP
+   ENDMAP
+   ENDUNION
+ ENDSTRUCTURE
+ STRUCTURE /foo32u/
+   ! 32 fields
+   INTEGER(4) :: a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p
+   INTEGER(4) :: aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap
+   UNION
+   MAP
+   ENDMAP
+   ENDUNION
+ ENDSTRUCTURE
+   record /foo8u/ bar8u
+   record /foo16u/ bar16u
+   record /foo32u/ bar32u
+   bar8u.a = 1
+   bar16u.a = 1
+   bar32u.a = 1
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/deferred_character_35.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/deferred_character_35.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/deferred_character_35.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/deferred_character_35.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR93794, where the ASSOCIATE statement ICED on the
+ ! deferred character length, pointer component.
+ !
+ ! Contributed by Gerhard Steinmetz  <gscfq@t-online.de>
+ !
+ program p
+    type t
+       character(:), pointer :: a
+    end type
+    type(t) :: z
+    character(4), target :: c = 'abcd'
+    z%a => c
+    associate (y => z%a)
+       print *, y
+    end associate
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90	Tue Jun 28 08:54:30 2022
***************
*** 5,11 ****
  !
  !
    Type :: t5
!     character (len=5) :: txt(4)
    End Type t5
  
    character (len=3), parameter :: str3(2) = [ "ABC", "ZYX" ]
--- 5,11 ----
  !
  !
    Type :: t5
!     character (len=5) :: txt(2)
    End Type t5
  
    character (len=3), parameter :: str3(2) = [ "ABC", "ZYX" ]
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/derived_constructor_comps_7.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do run }
+ ! PR fortran/104619
+ 
+ module m
+   implicit none
+   type :: item
+      real :: x
+   end type item
+   type :: container
+      type(item) :: items(3)
+   end type container
+ end module
+ 
+ program p
+   use m
+   implicit none
+   type(item), allocatable :: items(:)
+   type(container) :: c
+   integer         :: i, n
+   items = [item(3.0), item(4.0), item(5.0)]
+   c = container(items=[(items(i), i = 1, size(items))])
+   if (any (c%items% x /= items% x)) stop 1
+   n = size (items)
+   c = container(items=[(items(i), i = 1, n)])
+   if (any (c%items% x /= items% x)) stop 2
+   c = container(items=[(items(i), i = 1, 3)])
+   if (any (c%items% x /= items% x)) stop 3
+ end program
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/do_check_19.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/do_check_19.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/do_check_19.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/do_check_19.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ ! { dg-prune-output "Obsolescent feature: Alternate-return argument" }
+ ! PR fortran/103717 - ICE in doloop_code
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer :: i
+   do i = 1, 2
+      call s(i) ! { dg-error "Missing alternate return specifier" }
+   end do
+ contains
+   subroutine s(*)
+   end
+ end
+ 
+ recursive subroutine s(*)
+   integer :: i
+   do i = 1, 2
+      call s(i) ! { dg-error "Missing alternate return specifier" }
+   end do
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/elemental_function_5.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/elemental_function_5.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/elemental_function_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/elemental_function_5.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,46 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR98472.
+ !
+ ! Contributed by Rui Coelho  <ruicoelhopedro@hotmail.com>
+ !
+ module a
+         type, abstract :: base
+         contains
+                 procedure(elem_func), deferred, nopass :: add
+         end type base
+ 
+         type, extends(base) :: derived
+         contains
+                 procedure, nopass :: add => add_derived
+         end type derived
+ 
+         abstract interface
+                 elemental function elem_func(x, y) result(out)
+                         integer, intent(in) :: x, y
+                         integer :: out
+                 end function elem_func
+         end interface
+ 
+ contains
+         elemental function add_derived(x, y) result(out)
+                 integer, intent(in) :: x, y
+                 integer :: out
+                 out = x + y
+         end function add_derived
+ end module a
+ 
+ program main
+         use a
+         call foo
+ contains
+         subroutine foo
+                integer, dimension(:), allocatable :: vec
+                class(base), allocatable :: instance
+                allocate(derived :: instance)
+                allocate(vec, source=instance%add([1, 2], [1, 2])) ! ICE here
+                if (any (vec .ne. [2, 4])) stop 1
+         end
+ end program main
+ 
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/eoshift_9.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/eoshift_9.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/eoshift_9.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/eoshift_9.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/104331 - ICE in gfc_simplify_eoshift
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   character(3), parameter :: a(:) = ['123'] ! { dg-error "deferred shape" }
+   character(3), parameter :: b(*) = eoshift(a, 1)
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/101084
+ 
+ program p
+   integer, parameter :: a(0) = 1
+   print int(a) ! { dg-error "Non-character non-Hollerith in FORMAT tag" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/gomp/map-5.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/gomp/map-5.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/gomp/map-5.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/gomp/map-5.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,12 ----
+ implicit none
+ type t
+   integer :: b(5)
+ end type t
+ integer :: a(5), x, y(5)
+ type(t) :: b
+ !$omp target enter data map( to: a (:) )
+ !$omp target enter data map( to: a(:) )
+ !$omp target depend(out: y (2)) nowait
+ !$omp end target
+ 
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,6 ----
+ ! { dg-do compile }
+ ! PR fortran/103412
+ 
+ program p
+   integer, parameter :: a = sizeof(z'1') ! { dg-error "cannot be an actual" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/103778
+ 
+ program p
+   use iso_c_binding, only : c_sizeof
+   integer, parameter :: a = c_sizeof(z'1') ! { dg-error "cannot appear" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/implied_do_io_7.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/implied_do_io_7.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/implied_do_io_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/implied_do_io_7.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do run }
+ ! PR 100227 - this was falsely optimized, leading to nonsense  results.
+ ! Original test case by "Mathieu".
+ 
+ program p
+   implicit none
+   integer, parameter :: nbmode = 3
+   integer :: k
+   real    :: mass(nbmode*2)
+   character (len=80) :: line
+   do k = 1, nbmode*2
+      mass(k) = k
+   end do
+   write (unit=line,fmt='(*(F6.2))') (mass(k+k), k=1,nbmode)
+   if (line /= '  2.00  4.00  6.00') stop 1
+ end program
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/inline_matmul_25.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/inline_matmul_25.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/inline_matmul_25.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/inline_matmul_25.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-options "-ffrontend-optimize" }
+ ! PR fortran/99839 - ICE in inline_matmul_assign
+ 
+ program p
+   real :: x(3, 3) = 1.0
+   class(*), allocatable :: z(:, :)
+   z = matmul(x, x)
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/intent_out_14.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/intent_out_14.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/intent_out_14.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/intent_out_14.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,24 ----
+ ! { dg-do run }
+ ! PR fortran/102287 - optional allocatable DT array arguments (intent out)
+ 
+ module m
+   type t
+      integer, allocatable :: a
+   end type t
+ contains
+   subroutine a (x, v)
+     type(t), optional, allocatable, intent(out) :: x(:)
+     type(t), optional,              intent(out) :: v(:)
+     call b (x, v)
+   end subroutine a
+ 
+   subroutine b (y, w)
+     type(t), optional, allocatable, intent(out) :: y(:)
+     type(t), optional,              intent(out) :: w(:)
+   end subroutine b
+ end module m
+ 
+ program p
+   use m
+   call a ()
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/intrinsic_pack_6.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/intrinsic_pack_6.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/intrinsic_pack_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/intrinsic_pack_6.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,57 ----
+ ! { dg-do run }
+ ! PR libfortran/103634 - Runtime crash with PACK on zero-sized arrays
+ ! Exercise PACK intrinsic for cases when it calls pack_internal
+ 
+ program p
+   implicit none
+   type t
+      real :: r(24) = -99.
+   end type
+   type(t), allocatable :: new(:), old(:), vec(:)
+   logical, allocatable :: mask(:)
+   integer              :: n, m
+ ! m = 1    ! works
+   m = 0    ! failed with SIGSEGV in pack_internal
+   do m = 0, 2
+      print *, m
+      allocate (old(m), mask(m), vec(m))
+      if (m > 0) vec(m)% r(1) = 42
+      mask(:) = .true.
+      n = count (mask)
+      allocate (new(n))
+ 
+      mask(:) = .false.
+      if (size (pack (old, mask)) /= 0) stop 1
+      mask(:) = .true.
+      if (size (pack (old, mask)) /= m) stop 2
+      new(:) = pack (old, mask)              ! this used to segfault for m=0
+ 
+      mask(:) = .false.
+      if (size (pack (old, mask, vector=vec)) /= m) stop 3
+      new(:) = t()
+      new(:) = pack (old, mask, vector=vec)  ! this used to segfault for m=0
+      if (m > 0) then
+         if (     new( m  )% r(1) /=  42)  stop 4
+         if (any (new(:m-1)% r(1) /= -99)) stop 5
+      end if
+ 
+      if (m > 0) mask(m) = .true.
+      if (size (pack (old, mask, vector=vec)) /= m) stop 6
+      new(:) = t()
+      new(:) = pack (old, mask, vector=vec)  ! this used to segfault for m=0
+      if (m > 0) then
+         if (new(1)% r(1) /= -99) stop 7
+      end if
+      if (m > 1) then
+         if (new(m)% r(1) /=  42) stop 8
+      end if
+ 
+      if (size (pack (old(:0), mask(:0), vector=vec)) /= m) stop 9
+      new(:) = t()
+      new(:) = pack (old(:0), mask(:0), vector=vec) ! did segfault for m=0
+      if (m > 0) then
+         if (new(m)% r(1) /= 42) stop 10
+      end if
+      deallocate (old, mask, new, vec)
+   end do
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/move_alloc_8.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/move_alloc_8.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/move_alloc_8.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/move_alloc_8.f90	Tue Jun 28 08:54:30 2022
*************** subroutine test2 (x, px)
*** 60,66 ****
    integer, allocatable :: a
    type(t2), pointer :: ta
  
!   call move_alloc (px, ta)      ! { dg-error "cannot be INTENT.IN." }
    call move_alloc (x%a, a)      ! { dg-error "cannot be INTENT.IN." }
    call move_alloc (x%ptr%a, a)  ! OK (3)
    call move_alloc (px%a, a)     ! OK (4)
--- 60,66 ----
    integer, allocatable :: a
    type(t2), pointer :: ta
  
!   call move_alloc (px, ta)      ! { dg-error "must be ALLOCATABLE" }
    call move_alloc (x%a, a)      ! { dg-error "cannot be INTENT.IN." }
    call move_alloc (x%ptr%a, a)  ! OK (3)
    call move_alloc (px%a, a)     ! OK (4)
*************** subroutine test3 (x, px)
*** 84,90 ****
    integer, allocatable :: a
    class(t2), pointer :: ta
  
!   call move_alloc (px, ta)      ! { dg-error "cannot be INTENT.IN." }
    call move_alloc (x%a, a)      ! { dg-error "cannot be INTENT.IN." }
    call move_alloc (x%ptr%a, a)  ! OK (6)
    call move_alloc (px%a, a)     ! OK (7)
--- 84,90 ----
    integer, allocatable :: a
    class(t2), pointer :: ta
  
!   call move_alloc (px, ta)      ! { dg-error "must be ALLOCATABLE" }
    call move_alloc (x%a, a)      ! { dg-error "cannot be INTENT.IN." }
    call move_alloc (x%ptr%a, a)  ! OK (6)
    call move_alloc (px%a, a)     ! OK (7)
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/overload_4.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/overload_4.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/overload_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/overload_4.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,27 ----
+ ! { dg-do run }
+ ! { dg-additional-options "-Wno-intrinsic-shadow" }
+ ! PR fortran/103782 - ICE overloading an intrinsic like dble or real
+ ! Contributed by Urban Jost
+ 
+ program runtest
+   implicit none
+   interface dble
+      procedure to_double
+   end interface dble
+   interface real
+      procedure floor ! not really FLOOR...
+   end interface real
+   if (any (dble ([10.0d0,20.0d0]) - [10.0d0,20.0d0] /= 0.d0)) stop 1
+   if (any (real ([1.5,2.5])       - [1.5,2.5]       /= 0.0 )) stop 2
+ contains
+   elemental function to_double (valuein) result(d_out)
+     doubleprecision,intent(in) :: valuein
+     doubleprecision            :: d_out
+     d_out=valuein
+   end function to_double
+   elemental function floor (valuein) result(d_out) ! not really FLOOR...
+     real, intent(in) :: valuein
+     real             :: d_out
+     d_out=valuein
+   end function floor
+ end program runtest
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/parameter_array_init_8.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/parameter_array_init_8.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/parameter_array_init_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/parameter_array_init_8.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do run }
+ ! PR fortran/99348
+ ! PR fortran/102521
+ ! Check simplifications for initialization of DT parameter arrays
+ 
+ program p
+   type t
+      integer :: n
+   end type
+   type(t), parameter :: a(4)   = t(1)
+   type(t), parameter :: d(*)   = a
+   type(t), parameter :: b(2,2) = reshape(d, [2,2])
+   integer, parameter :: nn     = b(2,2)% n
+   type u
+      character(3) :: c
+   end type
+   type(u),      parameter :: x(2,3) = u('ab')
+   type(u),      parameter :: y(*,*) = transpose (x)
+   character(*), parameter :: c      = y(3,2)% c
+   integer,      parameter :: lc     = c% len
+   integer,      parameter :: lyc    = len (y(3,2)% c)
+ ! integer,      parameter :: lxc    = x(1,1)% c% len    ! fails (pr101735?)
+   if (nn /= 1) stop 1
+   if (lc /= 3 .or. lyc /= 3 .or. c /= "ab ") stop 2
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pdt_26.f03 gcc-10.4.0/gcc/testsuite/gfortran.dg/pdt_26.f03
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pdt_26.f03	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pdt_26.f03	Tue Jun 28 08:54:30 2022
***************
*** 2,8 ****
  ! { dg-options "-fdump-tree-original" }
  !
  ! Test the fix for PR83567 in which the parameterized component 'foo' was
! ! being deallocated before return from 'addw', with consequent segfault in 
  ! the main program.
  !
  ! Contributed by Berke Durak  <berke.durak@gmail.com>
--- 2,8 ----
  ! { dg-options "-fdump-tree-original" }
  !
  ! Test the fix for PR83567 in which the parameterized component 'foo' was
! ! being deallocated before return from 'addw', with consequent segfault in
  ! the main program.
  !
  ! Contributed by Berke Durak  <berke.durak@gmail.com>
*************** program test_pdt
*** 43,46 ****
    if (any (c(1)%foo .ne. [13,15,17])) STOP 2
  end program test_pdt
  ! { dg-final { scan-tree-dump-times "__builtin_free" 8 "original" } }
! ! { dg-final { scan-tree-dump-times "__builtin_malloc" 9 "original" } }
--- 43,46 ----
    if (any (c(1)%foo .ne. [13,15,17])) STOP 2
  end program test_pdt
  ! { dg-final { scan-tree-dump-times "__builtin_free" 8 "original" } }
! ! { dg-final { scan-tree-dump-times "__builtin_malloc" 8 "original" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pdt_31.f03 gcc-10.4.0/gcc/testsuite/gfortran.dg/pdt_31.f03
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pdt_31.f03	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pdt_31.f03	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR100110, in which 'obj' was not being initialized.
+ !
+ ! Contributed by Xiao Liu  <xiao.liu@compiler-dev.com>
+ !
+ program p
+   implicit none
+   type t(n)
+     integer, len :: n
+     integer :: arr(n, n)
+   end type
+ 
+   type(t(2)) :: obj
+ 
+   obj%arr = reshape ([1,2,3,4],[2,2])
+   if (obj%n .ne. 2) stop 1
+   if (any (shape(obj%arr) .ne. [2,2])) stop 2
+   call test()
+ contains
+   subroutine test()
+     if (obj%n .ne. 2) stop 3
+     if (any (shape(obj%arr) .ne. [2,2])) stop 4
+     if (any (reshape (obj%arr, [4]) .ne. [1,2,3,4])) stop 5
+   end subroutine
+ end program
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pointer_intent_9.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pointer_intent_9.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pointer_intent_9.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pointer_intent_9.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do compile }
+ ! PR fortran/103418
+ ! Validate checks for dummy arguments with INTENT(IN), pointer attribute
+ 
+ module m
+   type t
+      real, pointer :: a, b(:)
+   end type t
+ contains
+   subroutine s1 (a, b, c, d, e)
+     real,    pointer, intent(in) :: a, b(:)
+     type(t),          intent(in) :: c
+     class(t),         intent(in) :: d
+     type(t), pointer, intent(in) :: e
+     real, pointer :: pa, pb(:)
+     call random_number (a)    ! legal
+     call random_number (b)
+     call cpu_time      (a)
+     call system_clock  (count_rate=a)
+     call random_number (c% a)
+     call random_number (c% b)
+     call random_number (d% a)
+     call random_number (d% b)
+     call random_number (e% a)
+     call random_number (e% b)
+     call move_alloc (a, pa)   ! { dg-error "must be ALLOCATABLE" }
+     call move_alloc (b, pb)   ! { dg-error "must be ALLOCATABLE" }
+     allocate (a)              ! { dg-error "pointer association context" }
+     allocate (b(10))          ! { dg-error "pointer association context" }
+     allocate (c% a)           ! { dg-error "pointer association context" }
+     allocate (c% b(10))       ! { dg-error "pointer association context" }
+   end subroutine s1
+ end module
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr100154.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr100154.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr100154.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr100154.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=gnu" }
+ ! PR100154 - ICE in gfc_conv_procedure_call, at fortran/trans-expr.c:6131
+ 
+ program p
+   implicit none
+   integer           :: n
+   character, target :: c
+   character(len=0)  :: c0
+   character(len=:), allocatable :: cc
+   n = fget(cc)
+   n = fget('a')       ! { dg-error "must be a variable" }
+   n = fget(c0)        ! { dg-error "must have length at least 1" }
+   call fget('x')      ! { dg-error "must be a variable" }
+   n = fgetc(5,'a')    ! { dg-error "must be a variable" }
+   call fgetc(5,c0)    ! { dg-error "must have length at least 1" }
+   call fgetc(5,c,1)   ! { dg-error "must be a variable" }
+   call fputc(5,'x',1) ! { dg-error "must be a variable" }
+   n = fget (ptr_returning_func())
+   print *, c
+ contains
+   function ptr_returning_func () result (res)
+     character, pointer :: res
+     res => c
+   end
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr100551.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr100551.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr100551.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr100551.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do run }
+ ! PR fortran/100551 - Passing return value to class(*) dummy argument
+ 
+ program p
+   implicit none
+   integer :: result
+   result = 1
+   result = test (    (result)) ! works
+   if (result /= 1) stop 1
+   result = test (int (result)) ! issue 1
+ ! write(*,*) result
+   if (result /= 1) stop 2
+   result = test (f   (result)) ! issue 2
+ ! write(*,*) result
+   if (result /= 2) stop 3
+ contains
+   integer function test(x)
+     class(*), intent(in) :: x
+     select type (x)
+     type is (integer)
+        test = x
+     class default
+        test = -1
+     end select
+   end function test
+   integer function f(x)
+     integer, intent(in) :: x
+     f = 2*x
+   end function f
+ end program
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr100949.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr100949.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr100949.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr100949.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do compile }
+ ! PR fortran/100949 - ICE in gfc_conv_expr_present, at fortran/trans-expr.c:1975
+ 
+ subroutine s
+ entry f
+   type t
+   end type
+   class(t), allocatable :: y, z
+   allocate (z, mold=y)
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101158.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101158.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101158.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101158.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! { dg-options "-O1 -ftree-slp-vectorize -fwrapv" }
+ ! { dg-additional-options "-march=armv8-a+sve" { target aarch64-*-* } }
+ 
+ subroutine sprpl5 (left)
+   implicit none
+ 
+   integer :: left
+   integer :: avail1, avail2, delx1, delx2, i2, ic
+ 
+   ic = left
+   delx1 = ic / 2
+   delx2 = delx1 + 1
+   i2 = ic + delx2
+   avail1 = i2
+   avail2 = 1
+ 
+   do delx1 = 1, 2
+      ic = left + nint (real (left) / 2)
+      if (ic .ge. avail1) avail1 = ic + 1
+ 
+      i2 = ic + delx2
+      if (i2 .le. avail2) avail2 = i2 + 1
+   end do
+ end subroutine sprpl5
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101327.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101327.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101327.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101327.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! PR fortran/101327 - ICE in find_array_element, at fortran/expr.c:1355
+ 
+ subroutine s
+   integer, parameter :: n([2]) = [1, 2] ! { dg-error "must be scalar" }
+   type t
+      integer :: a(n(1):n(2))
+   end type
+ end
+ 
+ ! { dg-error "cannot be automatic or of deferred shape" " " { target *-*-* } 5 }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101329.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101329.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101329.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101329.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ ! PR fortran/101329 - ICE: Invalid expression in gfc_element_size
+ 
+ program p
+   use iso_c_binding
+   implicit none
+   integer(c_int),     pointer :: ip4
+   integer(c_int64_t), pointer :: ip8
+   print *, c_sizeof (c_null_ptr) ! valid
+   print *, c_sizeof (null ())    ! { dg-error "is not interoperable" }
+   print *, c_sizeof (null (ip4)) ! { dg-error "is not interoperable" }
+   print *, c_sizeof (null (ip8)) ! { dg-error "is not interoperable" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101514.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101514.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101514.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101514.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do compile }
+ ! PR fortran/101514 - ICE: out of memory allocating ... bytes
+ 
+ subroutine s
+   type t1
+      integer :: a(..) ! { dg-error "must have an explicit shape" }
+   end type
+   type t2
+      integer :: a(*)  ! { dg-error "must have an explicit shape" }
+   end type
+   type t3
+      integer :: a(:)  ! { dg-error "must have an explicit shape" }
+   end type
+   type t4
+      integer :: a(0:) ! { dg-error "must have an explicit shape" }
+   end type
+   type t5
+      integer, allocatable :: a(:)
+   end type
+   type t6
+      integer, pointer     :: a(:)
+   end type
+   type(t1) :: a1
+   type(t2) :: a2
+   type(t3) :: a3
+   type(t4) :: a4
+   type(t5) :: a5
+   type(t6) :: a6
+   a1 = transfer(1, a1)
+   a2 = transfer(1, a2)
+   a3 = transfer(1, a3)
+   a4 = transfer(1, a4)
+   a5 = transfer(1, a5)
+   a6 = transfer(1, a6)
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101536.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101536.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101536.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101536.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,33 ----
+ ! { dg-do compile }
+ ! PR fortran/101536 - ICE in gfc_conv_expr_descriptor
+ 
+ program p
+   type s
+      class(*), allocatable :: c
+   end type
+   type t
+      class(*), allocatable :: c(:)
+   end type t
+   type u
+      integer :: c(2)
+   end type
+   type(t) :: x
+   x%c = [1,2,3,4]
+ !  print *, size (x)
+   print *, size (x%c)
+   print *, size (x%c(1)) ! { dg-error "must be an array" }
+ contains
+   integer function f(x, y, z)
+     class(t), allocatable :: x(:)
+     class(u)              :: y(:)
+     class(s)              :: z
+     f = size (x)
+     f = size (x(1))      ! { dg-error "must be an array" }
+     f = size (y)
+     f = size (y%c(1))
+     f = size (y(2)%c)
+     f = size (y(2)%c(1)) ! { dg-error "must be an array" }
+     f = size (z)         ! { dg-error "must be an array" }
+     f = size (z% c)      ! { dg-error "must be an array" }
+   end
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101762.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101762.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr101762.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr101762.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do compile }
+ ! PR fortran/101762 - ICE on non-constant pointer initialization targets
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer,      target  :: a(3) = [7, 8, 9]
+   integer,      pointer :: x    => a(3)
+   integer,      pointer :: y    => a(n())  ! { dg-error "constant expression" }
+   integer,      pointer :: z(:) => a(:n()) ! { dg-error "constant expression" }
+   character(7), target  :: c    = "abcdefg"
+   character(3), pointer :: c0   => c(2:4)
+   character(3), pointer :: c1   => c(m():) ! { dg-error "constant expression" }
+   character(3), pointer :: c2   => c(:m()) ! { dg-error "constant expression" }
+   print *, x, y
+ contains
+   pure integer function k ()
+     k = 2
+   end function k
+   subroutine s ()
+     integer, pointer :: yy => a(k()) ! { dg-error "constant expression" }
+     print *, yy
+   end subroutine s
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102332.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102332.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102332.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102332.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,69 ----
+ ! { dg-do compile }
+ ! PR fortran/102332 - ICE in select_type_set_tmp
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   type t
+      real :: a, b
+   end type
+   class(t), allocatable :: x ! Valid
+   select type (y => x)
+   type is (t)
+      y%a = 0
+   end select
+ end
+ 
+ subroutine s0 (x)
+   type t
+      real :: a, b
+   end type
+   class(t) :: x ! Valid
+   select type (y => x)
+   type is (t)
+      y%a = 0
+   end select
+ end
+ 
+ subroutine s1
+   type t
+      real :: a, b
+   end type
+   class(t) :: x         ! { dg-error "must be dummy, allocatable or pointer" }
+   select type (y => x)
+   type is (t)
+      y%a = 0
+   end select
+ end
+ 
+ subroutine s3
+   type t
+      real :: a, b
+   end type
+   class(t) :: x         ! { dg-error "must be dummy, allocatable or pointer" }
+   select type (y => x)
+   class is (t)
+      y%a = 0
+   end select
+ end
+ 
+ subroutine s2
+   type t
+      real :: a, b
+   end type
+   class(t) :: x         ! { dg-error "must be dummy, allocatable or pointer" }
+   select type (y => x)
+   type default          ! { dg-error "Expected" }
+      y%a = 0
+   end select
+ end
+ 
+ subroutine s4
+   type t
+      real :: a, b
+   end type
+   class(t) :: x         ! { dg-error "must be dummy, allocatable or pointer" }
+   select type (y => x)
+   class default
+      y%a = 0
+   end select
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102366.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102366.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102366.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102366.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original -Wall" }
+ ! { dg-final { scan-tree-dump-times "static real" 1 "original" } }
+ ! PR fortran/102366 - large arrays no longer become static
+ 
+ program p
+   real(kind=4) :: a(16776325)
+   a=1.0
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102458.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102458.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102458.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102458.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,42 ----
+ ! { dg-do compile }
+ ! { dg-options "-fcoarray=lib" }
+ ! PR fortran/102458 - standard intrinsics excluded in constant expressions
+ 
+ subroutine s1
+   integer :: a(command_argument_count()) = 1 ! { dg-error "Automatic array" }
+   print *, a
+ end
+ 
+ program p
+   block
+     integer :: a(get_team()) = 1 ! { dg-error "Automatic array" }
+     print *, a
+   end block
+ end
+ 
+ subroutine s2
+   integer :: a(num_images()) = 1 ! { dg-error "Automatic array" }
+   print *, a
+ end
+ 
+ function f()
+   block
+     integer :: a(team_number()) = 0 ! { dg-error "Automatic array" }
+     a = 1
+   end block
+ end
+ 
+ subroutine s3
+   integer :: a(this_image()) = 1 ! { dg-error "Automatic array" }
+   print *, a
+ end
+ 
+ subroutine s4
+   integer, parameter :: n = 4
+   integer, parameter :: x(transfer(n, n)) = 1 ! legal
+   integer            :: y(transfer(n, n)) = 2 ! legal
+   integer, parameter :: k = size (x)          ! ok
+ ! integer, parameter :: m = size (y)          ! fails, tracked separately
+   print *, k, x, y
+   if (k /= size (y)) stop 1
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102458b.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102458b.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102458b.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102458b.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ ! { dg-final { scan-tree-dump-times "_gfortran_stop_numeric" 0 "original" } }
+ ! PR fortran/102458
+ 
+ subroutine s4
+   integer, parameter :: n = 4
+   integer            :: w(transfer(n, n)) = 1
+   integer            :: x(transfer(n, n))
+   integer            :: y(2*int(n) - n)
+   type t
+      integer         :: z(int(n))
+   end type t
+   type(t)            :: tt, uu(3)
+   integer, parameter :: i = size (w)
+   integer, parameter :: k = size (x)
+   integer, parameter :: m = size (y)
+   integer, parameter :: j = size (tt% z)
+   integer, parameter :: l = size (uu(2)% z)
+   if (i /= n .or. k /= n .or. m /= n .or. j /= n .or. l /= n) stop 1
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102520.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102520.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102520.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102520.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,10 ----
+ ! { dg-do compile }
+ ! PR fortran/102520 - ICE in expand_constructor, at fortran/array.c:1802
+ 
+ program p
+   type t
+   end type
+   type(t), parameter :: a(4)   = shape(1)         ! { dg-error "Incompatible" }
+   type(t), parameter :: b(2,2) = reshape(a,[2,2]) ! { dg-error "must be an array" }
+   type(t), parameter :: c(2,2) = transpose(b)     ! { dg-error "must be of rank 2" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102685.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102685.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102685.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102685.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do compile }
+ ! PR fortran/102685
+ 
+ program p
+   type t
+      integer :: a(2)
+   end type
+   type(t), parameter :: x0    = t([2])         ! { dg-error "shape of component" }
+   type(t), parameter :: x1(2) = t([2])         ! { dg-error "shape of component" }
+   type(t), parameter :: x(2)  = t([integer::]) ! { dg-error "shape of component" }
+ 
+   type u
+      integer :: a
+      integer :: b(0)
+   end type
+   type(u), parameter :: z0(2) = u(1, [integer::]) ! valid
+   type(u), parameter :: z1    = u(1,  2 )         ! valid
+   type(u), parameter :: z2(2) = u(1,  2 )         ! valid
+   type(u), parameter :: z3    = u(1, [2])         ! { dg-error "shape of component" }
+   type(u), parameter :: z4(2) = u(1, [2])         ! { dg-error "shape of component" }
+ 
+   type v
+      integer :: a(2,1)
+   end type
+   type(v), parameter :: y0   = v(reshape([1,2],[2,1])) ! valid
+   type(v), parameter :: y1   = v(reshape([1,2],[1,2])) ! { dg-error "shape of component" }
+   type(v), parameter :: y(1) = v(reshape([1,2],[1,2])) ! { dg-error "shape of component" }
+ 
+   print *, x0,x,x1,y0,y1,y,z0,z1,z2,z3,z4
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102715.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102715.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102715.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102715.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,13 ----
+ ! { dg-do compile }
+ ! PR fortran/102715 - ICE in gfc_simplify_transpose
+ 
+ program p
+   type t
+   end type
+   type(t), parameter :: a(4)   = t()
+   type(t), parameter :: b(2,2) = reshape(a, [2]) ! { dg-error "Rank mismatch" }
+   type(t), parameter :: c(2,2) = transpose(b)    ! { dg-error "must be of rank 2" }
+   type(t), parameter :: s2(*)  = b(2,:)          ! { dg-error "Syntax error" }
+   type(t), parameter :: x(*,*) = reshape(a, [2]) ! { dg-error "Rank mismatch" }
+   type(t), parameter :: s3(*)  = x(2,:)          ! { dg-error "Syntax error" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102816.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102816.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102816.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102816.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/102816
+ 
+ program p
+   type t
+      integer :: a([2])     ! { dg-error "must be scalar" }
+   end type
+   type(t) :: x = t([3, 4]) ! { dg-error "Bad array spec of component" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102817.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102817.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102817.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102817.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,17 ----
+ ! { dg-do compile }
+ ! PR fortran/102817 - ICE in gfc_clear_shape
+ 
+ program test
+   type t
+      integer :: a(1,2) = 3
+   end type t
+   type(t), parameter :: u    = t(4)
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: p(1,2) = (x(1)%a)
+   integer            :: z(1,2) = (x(1)%a) 
+   integer            :: y(1,2), v(1,2), w(1,2)
+   v = (u   %a)
+   w =  x(1)%a
+   y = (x(1)%a)
+   print *, v, w, y, z, p
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102860.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102860.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr102860.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr102860.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,10 ----
+ ! PR middle-end/102860
+ ! { dg-do compile { target { powerpc*-*-* } } }
+ ! { dg-require-effective-target powerpc_vsx_ok } 
+ ! { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power10" } } 
+ ! { dg-options "-O2 -mcpu=power10" } 
+ 
+ function foo(a)
+   integer(kind=4) :: a(1024)
+   a(:) = modulo (a(:), 39)
+ end function
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103505.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103505.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103505.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103505.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/103505 - this used to ICE in compare_bound_mpz_t
+ ! Testcase by G.Steinmetz
+ 
+ program p
+   integer, parameter :: a((2.))   = [4,8] ! { dg-error "scalar INTEGER" }
+   integer, parameter :: z(1:(2.)) = [4,8] ! { dg-error "scalar INTEGER" }
+   print *, a(1:1)                         ! { dg-error "Syntax error" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103588.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103588.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103588.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103588.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/103588 - ICE: Simplification error in gfc_ref_dimen_size
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer, parameter :: a(:) = [1,2] ! { dg-error "cannot be automatic or of deferred shape" }
+   integer :: b(2) = a(::a(1))        ! { dg-error "Invalid" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103606.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103606.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103606.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103606.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do compile }
+ ! PR fortran/103606 -  ICE in resolve_fl_procedure
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   type t
+   end type
+ contains
+   elemental function f() result(z) ! { dg-error "CLASS variable" }
+     class(t) :: z
+   end
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103607.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103607.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103607.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103607.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,12 ----
+ ! { dg-do compile }
+ ! PR fortran/103607 - ICE in do_subscript, at fortran/frontend-passes.c:2927
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer :: i, x(abs(2.)) ! { dg-error "must be of INTEGER type" }
+   do i = 1, 2
+      x(i) = 0
+   end do
+ end
+ 
+ ! { dg-prune-output "must have constant shape" }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103692.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103692.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr103692.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr103692.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,23 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ ! PR fortran/103692 - ICE in expand_constructor
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   character(3), parameter :: a(4) = 'abc'
+   character(*), parameter :: b(*) =  (a(2:1))
+   character(*), parameter :: y(*) = [(a(2:1))]
+   character(*), parameter :: u(*) =  a(2:1)
+   character(*), parameter :: v(*) = [a(2:1)]
+   character(*), parameter :: w(-1) = (a(2:1))
+   character(*), parameter :: x(-1) =  a(2:1)
+   character(5), parameter :: c(3,3) = 'def'
+   character(*), parameter :: d(*)   = [(c(2:1,2:))]
+   character(*), parameter :: e(*,*) =  (c(2:1,2:))
+   if (len(b) /= 3 .or. size (b) /= 0) stop 1
+   if (len(y) /= 3 .or. size (y) /= 0) stop 2
+   if (len(d) /= 5 .or. size (d) /= 0) stop 3
+   if (len(e) /= 5 .or. any (shape (e) /= [0,2])) stop 4
+ end
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr104849.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr104849.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr104849.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr104849.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,9 ----
+ ! { dg-do compile }
+ ! PR fortran/104849 - ICE in find_array_section
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer, parameter :: a(:) = [1, 2] ! { dg-error "deferred shape" }
+   integer :: x(2)
+   data x /a(:)/                       ! { dg-error "Invalid" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr105230.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr105230.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr105230.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr105230.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/105230 - ICE in find_array_section
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer, parameter :: a(:) = [1, 2] ! { dg-error "deferred shape" }
+   print *, reshape([3, 4], a(1:2))
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr63797.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr63797.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr63797.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr63797.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,60 ----
+ ! { dg-do compile }
+ ! PR63797 - Bogus ambiguous reference to 'sqrt'
+ 
+ module mod1
+   implicit none
+   real, parameter :: z = sqrt (0.0)
+   real            :: w = sqrt (1.0)
+   interface
+      pure real function sqrt_ifc (x)
+        real, intent(in) :: x
+      end function sqrt_ifc
+   end interface
+ contains
+   pure function myroot () result (f)
+     procedure(sqrt_ifc), pointer :: f
+     intrinsic :: sqrt
+     f => sqrt
+   end function myroot
+ end module mod1
+ 
+ module mod2
+   implicit none
+   type t
+      real :: a = 0.
+   end type
+   interface sqrt
+      module procedure sqrt
+   end interface
+ contains
+   elemental function sqrt (a)
+     type(t), intent(in) :: a
+     type(t)             :: sqrt
+     sqrt% a = a% a
+   end function sqrt
+ end module mod2
+ 
+ module mod3
+   implicit none
+   abstract interface
+      function real_func (x)
+        real              :: real_func
+        real, intent (in) :: x
+      end function real_func
+   end interface
+   intrinsic :: sqrt
+   procedure(real_func), pointer :: real_root => sqrt
+ end module mod3
+ 
+ program test
+   use mod1
+   use mod2
+   use mod3
+   implicit none
+   type(t) :: x, y
+   procedure(sqrt_ifc), pointer :: root
+   root => myroot ()
+   y    = sqrt (x)
+   y% a = sqrt (x% a) + z - w + root (x% a)
+   y% a = real_root (x% a)
+ end program test
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr67804.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr67804.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr67804.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr67804.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,25 ----
+ ! { dg-do compile }
+ ! PR fortran/67804 - ICE on bad type in structure constructor in DATA statement
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   type t
+      character :: c
+   end type
+   type u
+      character, pointer :: c
+   end type
+   type(t) :: x0, x1, x2, x3, x4, x5, x6, x7, x8, x9
+   type(u) :: y6
+   data x0 /t('a')/     ! OK
+   data x1 /t(1)/       ! { dg-error "Cannot convert" }
+   data x2 /t(1.)/      ! { dg-error "Cannot convert" }
+   data x3 /t(1d1)/     ! { dg-error "Cannot convert" }
+   data x4 /t((0.,1.))/ ! { dg-error "Cannot convert" }
+   data x5 /t(.true.)/  ! { dg-error "Cannot convert" }
+   data x6 /t(null())/  ! { dg-error "neither a POINTER nor ALLOCATABLE" }
+   data x7 /t(['1'])/   ! { dg-error "The rank of the element" }
+   data x8 /t([1])/     ! { dg-error "Cannot convert" }
+   data x9 /t(z'0')/    ! { dg-error "Cannot convert" }
+   data y6 /u(null())/  ! OK
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr68019.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr68019.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr68019.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr68019.f90	Tue Jun 28 08:54:30 2022
*************** program p
*** 9,13 ****
        integer :: n
     end type
     type(t), parameter :: vec(*) = [(t(i), i = 1, 4)]
!    type(t), parameter :: arr(*) = reshape(vec, [2, 2])   ! { dg-error "ranks 1 and 2 in assignment" }
  end
--- 9,13 ----
        integer :: n
     end type
     type(t), parameter :: vec(*) = [(t(i), i = 1, 4)]
!    type(t), parameter :: arr(*) = reshape(vec, [2, 2])   ! { dg-error "Rank mismatch" }
  end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr68153.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr68153.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr68153.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr68153.f90	Tue Jun 28 08:54:30 2022
***************
*** 5,9 ****
  !
  program foo
     integer, parameter :: a(2) = [2, -2]
!    integer, parameter :: b(2,2) = reshape([1, 2, 3, 4], a) ! { dg-error "cannot be negative" }
  end program foo
--- 5,9 ----
  !
  program foo
     integer, parameter :: a(2) = [2, -2]
!    integer, parameter :: b(2,2) = reshape([1, 2, 3, 4], a) ! { dg-error "negative" }
  end program foo
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr70931.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr70931.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr70931.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr70931.f90	Tue Jun 28 08:54:30 2022
*************** program p
*** 5,10 ****
        integer :: a
        integer :: b(0)
     end type
!    type(t), parameter :: z = t(1, [2])
     print *, z
  end
--- 5,11 ----
        integer :: a
        integer :: b(0)
     end type
! !  type(t), parameter :: z = t(1, [2])         ! original invalid code
!    type(t), parameter :: z = t(1, [integer::])
     print *, z
  end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr82314.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr82314.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr82314.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr82314.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do run }
+ ! PR fortran/82314 - ICE in gfc_conv_expr_descriptor
+ 
+ program p
+   implicit none
+   integer, parameter :: karray(merge(3,7,.true.):merge(3,7,.false.)) = 1
+   integer, parameter :: i = size   (karray)
+   integer, parameter :: l = lbound (karray,1)
+   integer, parameter :: u = ubound (karray,1)
+   if (l /= 3 .or. u /= 7 .or. i /= 5) stop 1
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr93604.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr93604.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr93604.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr93604.f90	Tue Jun 28 08:54:30 2022
*************** program p
*** 5,10 ****
        integer :: a
     end type
     type(t) :: x
!    data x /t(z'1')/ ! { dg-error "cannot appear in a structure constructor" }
  end
  
--- 5,10 ----
        integer :: a
     end type
     type(t) :: x
!    data x /t(z'1')/ ! { dg-error "BOZ" }
  end
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr95502.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr95502.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr95502.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr95502.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,8 ----
+ ! { dg-do compile }
+ ! PR fortran/95502 - ICE in gfc_check_do_variable, at fortran/parse.c:4446
+ 
+ program p
+   integer, pointer :: z
+   nullify (z%kind)  ! { dg-error "in variable definition context" }
+   z%kind => NULL()  ! { dg-error "constant expression" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/pr98411.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/pr98411.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/pr98411.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/pr98411.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,18 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2008 -Wall -fautomatic -fmax-stack-var-size=100" }
+ ! PR fortran/98411 - Pointless warning for static variables 
+ 
+ module try
+   implicit none
+   integer, save :: a(1000)
+ contains
+   subroutine initmodule
+     real, save :: b(1000)
+     logical    :: c(1000) ! { dg-warning "moved from stack to static storage" }
+     integer    :: e(1000) = 1
+     a(1) = 42
+     b(2) = 3.14
+     c(3) = .true.
+     e(5) = -1
+   end subroutine initmodule
+ end module try
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/proc_ptr_52.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/proc_ptr_52.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/proc_ptr_52.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/proc_ptr_52.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,72 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PRs93924 & 93925.
+ !
+ ! Contributed by Martin Stein  <mscfd@gmx.net>
+ !
+ module cs
+ 
+ implicit none
+ 
+ integer, target :: integer_target
+ 
+ abstract interface
+    function classStar_map_ifc(x) result(y)
+       class(*), pointer            :: y
+       class(*), target, intent(in) :: x
+    end function classStar_map_ifc
+ end interface
+ 
+ contains
+ 
+    function fun(x) result(y)
+       class(*), pointer            :: y
+       class(*), target, intent(in) :: x
+       select type (x)
+       type is (integer)
+          integer_target = x        ! Deals with dangling target.
+          y => integer_target
+       class default
+          y => null()
+       end select
+    end function fun
+ 
+    function apply(f, x) result(y)
+       procedure(classStar_map_ifc) :: f
+       integer, intent(in) :: x
+       integer :: y
+       class(*), pointer :: p
+       y = 0                        ! Get rid of 'y' undefined warning
+       p => f (x)
+       select type (p)
+       type is (integer)
+          y = p
+       end select
+    end function apply
+ 
+    function selector() result(f)
+       procedure(classStar_map_ifc), pointer :: f
+       f => fun
+    end function selector
+ 
+ end module cs
+ 
+ 
+ program classStar_map
+ 
+ use cs
+ implicit none
+ 
+ integer :: x, y
+ procedure(classStar_map_ifc), pointer :: f
+ 
+ x = 123654
+ f => selector ()               ! Fixed by second chunk in patch
+ y = apply (f, x)               ! Fixed by first chunk in patch
+ if (x .ne. y) stop 1
+ 
+ x = 2 * x
+ y = apply (fun, x)             ! PR93925; fixed as above
+ if (x .ne. y) stop 2
+ 
+ end program classStar_map
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/recursive_reference_3.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/recursive_reference_3.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/recursive_reference_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/recursive_reference_3.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do compile }
+ ! { dg-options "-std=f2018" }
+ ! PR fortran/105138 - recursive procedures and shadowing of intrinsics
+ 
+ RECURSIVE FUNCTION LOG_GAMMA(Z) RESULT(RES)
+   COMPLEX, INTENT(IN) :: Z
+   COMPLEX             :: RES
+   RES = LOG_GAMMA(Z)
+ END FUNCTION LOG_GAMMA
+ 
+ recursive subroutine date_and_time (z)
+   real :: z
+   if (z > 0) call date_and_time (z-1)
+ end subroutine date_and_time
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/reshape_7.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/reshape_7.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/reshape_7.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/reshape_7.f90	Tue Jun 28 08:54:30 2022
***************
*** 4,10 ****
  subroutine p0
     integer, parameter :: sh(2) = [2, 3]
     integer, parameter :: &
!    & a(2,2) = reshape([1, 2, 3, 4], sh)   ! { dg-error "Different shape" }
     if (a(1,1) /= 0) STOP 1
  end subroutine p0
  
--- 4,10 ----
  subroutine p0
     integer, parameter :: sh(2) = [2, 3]
     integer, parameter :: &
!    & a(2,2) = reshape([1, 2, 3, 4], sh)   ! { dg-error "not enough elements" }
     if (a(1,1) /= 0) STOP 1
  end subroutine p0
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/reshape_9.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/reshape_9.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/reshape_9.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/reshape_9.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,31 ----
+ ! { dg-do compile }
+ ! PR fortran/103411 - ICE in gfc_conv_array_initializer
+ ! Based on testcase by G. Steinmetz
+ ! Test simplifications for checks of shape argument to reshape intrinsic
+ 
+ program p
+   integer :: i
+   integer, parameter :: a(2) = [2,2]
+   integer, parameter :: u(5) = [1,2,2,42,2]
+   integer, parameter :: v(1,3) = 2
+   integer, parameter :: d(2,2) = reshape([1,2,3,4,5], a)
+   integer, parameter :: c(2,2) = reshape([1,2,3,4], a)
+   integer, parameter :: b(2,2) = &
+            reshape([1,2,3], a) ! { dg-error "not enough elements" }
+   print *, reshape([1,2,3], a) ! { dg-error "not enough elements" }
+   print *, reshape([1,2,3,4], a)
+   print *, reshape([1,2,3,4,5], a)
+   print *, b, c, d
+   print *, reshape([1,2,3], [(u(i),i=1,2)])
+   print *, reshape([1,2,3], [(u(i),i=2,3)]) ! { dg-error "not enough elements" }
+   print *, reshape([1,2,3],              &
+                    [(u(i)*(-1)**i,i=2,3)]) ! { dg-error "has negative element" }
+   print *, reshape([1,2,3,4], u(5:3:-2))
+   print *, reshape([1,2,3],   u(5:3:-2))  ! { dg-error "not enough elements" }
+   print *, reshape([1,2,3,4], u([5,3]))
+   print *, reshape([1,2,3]  , u([5,3]))   ! { dg-error "not enough elements" }
+   print *, reshape([1,2,3,4], v(1,2:))
+   print *, reshape([1,2,3],   v(1,2:))    ! { dg-error "not enough elements" }
+   print *, reshape([1,2,3,4], v(1,[2,1]))
+   print *, reshape([1,2,3] ,  v(1,[2,1])) ! { dg-error "not enough elements" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/reshape_shape_2.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/reshape_shape_2.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/reshape_shape_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/reshape_shape_2.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,7 ----
+ ! { dg-do compile }
+ ! PR fortran/102717
+ 
+ program p
+   integer, parameter :: a(1) = 2
+   integer, parameter :: b(2) = reshape([3,4], -[a]) ! { dg-error "negative" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/select_rank_5.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/select_rank_5.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/select_rank_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/select_rank_5.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,44 ----
+ ! { dg-do run }
+ !
+ ! Test the fixes for PR97723 and PR97694.
+ !
+ ! Contributed by Martin  <mscfd@gmx.net>
+ !
+ module mod
+    implicit none
+    private
+    public cssel
+ 
+ contains
+ 
+ function cssel(x) result(s)
+    character(len=:), allocatable :: s
+    class(*), dimension(..), optional, intent(in) :: x
+    if (present(x)) then
+       select rank (x)
+       rank (0)
+          s = '0' ! PR97723: ‘assign’ at (1) is not a function
+                  ! PR97694: ICE in trans-stmt.c(trans_associate_var)
+       rank (1)
+          s = '1' ! PR97723: ‘assign’ at (1) is not a function
+       rank default
+          s = '?' ! PR97723: ‘assign’ at (1) is not a function
+       end select
+    else
+       s = '-'
+    end if
+ end function cssel
+ 
+ end module mod
+ 
+ program classstar_rank
+    use mod
+    implicit none
+ 
+    integer :: x
+    real, dimension(1:3) :: y
+    logical, dimension(1:2,1:2) :: z
+ 
+    if (any ([cssel(x),cssel(y),cssel(z),cssel()] .ne. ['0','1','?','-'])) stop 1
+ 
+ end program classstar_rank
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/shape_10.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/shape_10.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/shape_10.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/shape_10.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,6 ----
+ ! { dg-do compile }
+ ! PR fortran/102716
+ 
+ program p
+   integer, parameter :: a(1) = shape([2], [1]) ! { dg-error "must be a scalar" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/shape_11.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/shape_11.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/shape_11.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/shape_11.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,16 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ ! PR fortran/103610 - ICE while simplifying SHAPE
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   integer, parameter :: a(-1) = 1
+   integer, parameter :: b(1)  = maskl(shape(a))
+   integer, parameter :: c(1)  = shape(a)
+   integer, parameter :: d(1)  = maskr(shape(a))
+   if (b(1) /= 0) stop 1
+   if (c(1) /= 0) stop 2
+   if (d(1) /= 0) stop 3
+ end
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/structure_constructor_17.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/structure_constructor_17.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/structure_constructor_17.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/structure_constructor_17.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do compile }
+ !
+ ! Test the fix for PR97612.
+ !
+ ! Contributed by Martin Stein  <mscfd@gmx.net>
+ !
+ program constructor_allocatable
+   implicit none
+ 
+   type :: s
+     integer, dimension(:), allocatable :: u
+   end type s
+ 
+   type :: t
+     type(s), dimension(:), allocatable :: x
+   end type t
+ 
+   type(t) :: a = t()
+   if (allocated (a%x)) stop 1
+ 
+ end program constructor_allocatable
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/substr_6.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/substr_6.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/substr_6.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/substr_6.f90	Tue Jun 28 08:54:30 2022
*************** CHARACTER(5), parameter :: c0(1) = (/ "1
*** 6,11 ****
--- 6,13 ----
  CHARACTER*5 c(1)
  CHARACTER(1), parameter :: c1(5) = (/ "1", "2", "3", ACHAR(0), "5" /)
  
+ c = c0(1)(-5:-8)
+ if (c(1) /= "     ") STOP 1
  c = (/ c0(1)(1:5) /)
  do i=1,5
     if (c(1)(i:i) /= c1(i)) STOP 2
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_char_kind4.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_char_kind4.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_char_kind4.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_char_kind4.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,115 ----
+ ! { dg-do run }
+ ! PR fortran/83079 - ICE and wrong code with TRANSFER and character(kind=4)
+ ! Exercise TRANSFER intrinsic to check character result length and shape
+ 
+ program p
+   implicit none
+   character(len=*,kind=4), parameter :: a = 4_'ABCDEF'
+   character(len=6,kind=4)            :: b = 4_'abcdef'
+   character(len=*,kind=4), parameter :: c = 4_'XY'
+   character(len=2,kind=4)            :: d = 4_'xy'
+   integer :: k, l
+   k = len (a)
+   l = len (c)
+ 
+ ! print *, transfer(4_'xy', [4_'a'])
+ 
+   ! TRANSFER with rank-0 result
+   call chk0 (transfer (4_'ABCD', 4_'XY'), 2, 1)
+   call chk0 (transfer (4_'ABCD', c     ), l, 2)
+   call chk0 (transfer (4_'ABCD', d     ), l, 3)
+   call chk0 (transfer (a       , 4_'XY'), 2, 4)
+   call chk0 (transfer (a       , c     ), l, 5)
+   call chk0 (transfer (a       , d     ), l, 6)
+   call chk0 (transfer (b       , 4_'XY'), 2, 7)
+   call chk0 (transfer (b       , c     ), l, 8)
+   call chk0 (transfer (b       , d     ), l, 9)
+ 
+   call chk0 (transfer ([4_'ABCD'], 4_'XY'), 2, 11)
+   call chk0 (transfer ([4_'ABCD'], c     ), l, 12)
+   call chk0 (transfer ([4_'ABCD'], d     ), l, 13)
+   call chk0 (transfer ([a       ], 4_'XY'), 2, 14)
+   call chk0 (transfer ([a       ], c     ), l, 15)
+   call chk0 (transfer ([a       ], d     ), l, 16)
+   call chk0 (transfer ([b       ], 4_'XY'), 2, 17)
+   call chk0 (transfer ([b       ], c     ), l, 18)
+   call chk0 (transfer ([b       ], d     ), l, 19)
+ 
+   ! TRANSFER with rank-1 result
+   call chk1 (transfer (4_'ABCD', [4_'XY']), 2,   2, 21)
+   call chk1 (transfer (4_'ABCD', [c]     ), 2,   2, 22)
+   call chk1 (transfer (4_'ABCD', [d]     ), 2,   2, 23)
+   call chk1 (transfer (a       , [4_'XY']), 2, k/2, 24)
+   call chk1 (transfer (a       , [c]     ), l, k/l, 25)
+   call chk1 (transfer (a       , [d]     ), l, k/l, 26)
+   call chk1 (transfer (b       , [4_'XY']), 2, k/2, 27)
+   call chk1 (transfer (b       , [c]     ), l, k/l, 28)
+   call chk1 (transfer (b       , [d]     ), l, k/l, 29)
+ 
+   call chk1 (transfer (4_'ABCD', 4_'XY',size=2), 2, 2, 31)
+   call chk1 (transfer (4_'ABCD', c     ,size=2), 2, 2, 32)
+   call chk1 (transfer (4_'ABCD', d     ,size=2), 2, 2, 33)
+   call chk1 (transfer (a       , 4_'XY',size=3), 2, 3, 34)
+   call chk1 (transfer (a       , c     ,size=3), l, 3, 35)
+   call chk1 (transfer (a       , d     ,size=3), l, 3, 36)
+   call chk1 (transfer (b       , 4_'XY',size=3), 2, 3, 37)
+   call chk1 (transfer (b       , c     ,size=3), l, 3, 38)
+   call chk1 (transfer (b       , d     ,size=3), l, 3, 39)
+ 
+   call chk1 (transfer (4_'ABCD', [4_'XY'],size=2), 2, 2, 41)
+   call chk1 (transfer (4_'ABCD', [c]     ,size=2), 2, 2, 42)
+   call chk1 (transfer (4_'ABCD', [d]     ,size=2), 2, 2, 43)
+   call chk1 (transfer (a       , [4_'XY'],size=3), 2, 3, 44)
+   call chk1 (transfer (a       , [c]     ,size=3), l, 3, 45)
+   call chk1 (transfer (a       , [d]     ,size=3), l, 3, 46)
+   call chk1 (transfer (b       , [4_'XY'],size=3), 2, 3, 47)
+   call chk1 (transfer (b       , [c]     ,size=3), l, 3, 48)
+   call chk1 (transfer (b       , [d]     ,size=3), l, 3, 49)
+ 
+   call chk1 (transfer ([4_'ABCD'], [4_'XY']), 2,   2, 51)
+   call chk1 (transfer ([4_'ABCD'], [c]     ), 2,   2, 52)
+   call chk1 (transfer ([4_'ABCD'], [d]     ), 2,   2, 53)
+   call chk1 (transfer ([a       ], [4_'XY']), 2, k/2, 54)
+   call chk1 (transfer ([a       ], [c]     ), l, k/l, 55)
+   call chk1 (transfer ([a       ], [d]     ), l, k/l, 56)
+   call chk1 (transfer ([b       ], [4_'XY']), 2, k/2, 57)
+   call chk1 (transfer ([b       ], [c]     ), l, k/l, 58)
+   call chk1 (transfer ([b       ], [d]     ), l, k/l, 59)
+ 
+   call chk1 (transfer (4_'ABCD', c     ,size=4/l), l, 4/l, 62)
+   call chk1 (transfer (4_'ABCD', d     ,size=4/l), l, 4/l, 63)
+   call chk1 (transfer (a       , 4_'XY',size=k/2), 2, k/2, 64)
+   call chk1 (transfer (a       , c     ,size=k/l), l, k/l, 65)
+   call chk1 (transfer (a       , d     ,size=k/l), l, k/l, 66)
+   call chk1 (transfer (b       , 4_'XY',size=k/2), 2, k/2, 67)
+   call chk1 (transfer (b       , c     ,size=k/l), l, k/l, 68)
+   call chk1 (transfer (b       , d     ,size=k/l), l, k/l, 69)
+ 
+ contains
+   ! Validate rank-0 result
+   subroutine chk0 (str, l, stopcode)
+     character(kind=4,len=*), intent(in) :: str
+     integer,                 intent(in) :: l, stopcode
+     integer :: i, p
+     i = len  (str)
+     p = verify (str, a // b) ! Check for junk characters
+     if (i /= l .or. p > 0) then
+        print *, stopcode, "len=", i, i == l, ">", str, "<"
+        stop stopcode
+     end if
+   end subroutine chk0
+ 
+   ! Validate rank-1 result
+   subroutine chk1 (str, l, m, stopcode)
+     character(kind=4,len=*), intent(in) :: str(:)
+     integer,                 intent(in) :: l, m, stopcode
+     integer :: i, j, p
+     i = len  (str)
+     j = size (str)
+     p = maxval (verify (str, a // b)) ! Check for junk characters
+     if (i /= l .or. j /= m .or. p > 0) then
+        print *, stopcode, "len=", i, i == l, "size=", j, j == m, ">", str, "<"
+        stop stopcode
+     end if
+   end subroutine chk1
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_check_6.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_check_6.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_check_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_check_6.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! PR fortran/104227 - ICE virtual memory exhausted
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   type t
+   end type
+   type(t) :: x(2)
+   print *, transfer(1, x) ! { dg-error "shall not have storage size 0" }
+   x = transfer(1, x)      ! { dg-error "shall not have storage size 0" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_11.f90	Tue Jun 28 08:54:30 2022
***************
*** 4,8 ****
     integer, parameter :: N = 2
     character(len=1) :: chr(N)
     chr = transfer(repeat("x",ncopies=N),[character(len=1) ::], N)
!    if (chr(1) /= 'x' .and. chr(2) /= 'x') STOP 1
  end
--- 4,8 ----
     integer, parameter :: N = 2
     character(len=1) :: chr(N)
     chr = transfer(repeat("x",ncopies=N),[character(len=1) ::], N)
!    if (chr(1) /= 'x' .or. chr(2) /= 'x') STOP 1
  end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_13.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_13.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_13.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_13.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,34 ----
+ ! { dg-do compile }
+ ! { dg-options "-fdump-tree-original" }
+ ! PR fortran/104127 - ICE in get_array_charlen
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   character(4) :: mold = "XYZ"
+   integer      :: i = 0
+   integer, parameter :: l1 = len  (transfer('ab', 'xyz', size=0))
+   integer, parameter :: s1 = size (transfer('ab', 'xyz', size=0))
+   integer, parameter :: l4 = len  (transfer(4_'abcd', 4_'xy', size=0))
+   integer, parameter :: s4 = size (transfer(4_'abcd', 4_'xy', size=0))
+   integer, parameter :: l2 = len  (transfer('ab', mold,  size=0))
+   integer, parameter :: l3 = len  (transfer('ab', mold,  size=1))
+   integer, parameter :: l5 = len  (transfer('ab',['xyz'], size=0))
+   integer, parameter :: s5 = size (transfer('ab',['xyz'], size=0))
+   call sub0 ( transfer('a', 'y', size=0) )
+   call sub1 ([transfer('a', 'y', size=0)])
+   call sub2 ([transfer('a',['y'],size=0)])
+   call sub3 ( transfer('a', 'y', size=1) )
+   call sub4 ([transfer('a', 'y', size=1)])
+   call sub5 ( transfer('a', 'y', size=i) )
+   call sub6 ( transfer(1_'abcd', 1_'xy' , size=0))
+   call sub7 ( transfer(1_'abcd',[1_'xy'], size=0))
+   call sub8 ( transfer(4_'abcd', 4_'xy' , size=0))
+   call sub9 ( transfer(4_'abcd',[4_'xy'], size=0))
+   print *, transfer('abcd', 'xy', size=0)
+   if (l1 /= 3 .or. s1 /= 0) stop 1
+   if (l4 /= 2 .or. s4 /= 0) stop 2
+   if (l2 /= 4 .or. l3 /= 4) stop 3
+   if (l5 /= 3 .or. s5 /= 0) stop 4
+ end
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_15.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_15.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_15.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_15.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do compile }
+ ! PR fortran/104311 - ICE out of memory
+ ! Contributed by G.Steinmetz
+ 
+ program p
+   type t
+   end type
+   type(t) :: x(2)
+   print *, transfer(1,x,2)       ! { dg-error "shall not have storage size 0" }
+   print *, transfer(1,x,huge(1)) ! { dg-error "shall not have storage size 0" }
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_2.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_2.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/transfer_simplify_2.f90	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/transfer_simplify_2.f90	Tue Jun 28 08:54:30 2022
*************** contains
*** 145,151 ****
        real(4) :: x(2)
      end type mytype
  
!     type (mytype), parameter :: dt1(2) = transfer (c1, mytype ((/1.0,2.0,3.0,4.0/)), 2)
      type (mytype)            :: dt2(2)
  
      dt2 = transfer (c2, dt2);
--- 145,151 ----
        real(4) :: x(2)
      end type mytype
  
!     type (mytype), parameter :: dt1(2) = transfer (c1, mytype ((/1.0,2.0/)), 2)
      type (mytype)            :: dt2(2)
  
      dt2 = transfer (c2, dt2);
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/ubsan/pr101624.f90 gcc-10.4.0/gcc/testsuite/gfortran.dg/ubsan/pr101624.f90
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/ubsan/pr101624.f90	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/ubsan/pr101624.f90	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,13 ----
+ ! PR middle-end/101624
+ ! { dg-do compile }
+ ! { dg-options "-O2 -fsanitize=undefined" }
+ 
+ complex function foo (x)
+   complex, intent(in) :: x
+   foo = aimag (x)
+ end
+ program pr101624
+   complex, parameter :: a = (0.0, 1.0)
+   complex :: b, foo
+   b = foo (a)
+ end
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gfortran.dg/ubsan/ubsan.exp gcc-10.4.0/gcc/testsuite/gfortran.dg/ubsan/ubsan.exp
*** gcc-10.3.0/gcc/testsuite/gfortran.dg/ubsan/ubsan.exp	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gfortran.dg/ubsan/ubsan.exp	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,38 ----
+ # 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/>.
+ 
+ # GCC testsuite for gfortran that checks undefined behavior sanitizer.
+ 
+ # Load support procs.
+ load_lib gfortran-dg.exp
+ load_lib ubsan-dg.exp
+ 
+ 
+ # Initialize `dg'.
+ dg-init
+ ubsan_init
+ 
+ # Main loop.
+ if [check_effective_target_fsanitize_undefined] {
+     gfortran-dg-runtest [lsort \
+        [glob -nocomplain $srcdir/$subdir/*.\[fF\]{,90,95,03,08} ] ] "" ""
+ }
+ 
+ # All done.
+ ubsan_finish
+ dg-finish
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/derived_type7.adb gcc-10.4.0/gcc/testsuite/gnat.dg/derived_type7.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/derived_type7.adb	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/derived_type7.adb	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,9 ----
+ package body Derived_Type7 is
+ 
+   procedure Proc (Size : Natural) is
+     type Sar_Six_Bit_Arr is new Six_Bit_Data_Array_Type (1 .. Size);
+   begin
+     null;
+   end;
+ 
+ end Derived_Type7;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/derived_type7.ads gcc-10.4.0/gcc/testsuite/gnat.dg/derived_type7.ads
*** gcc-10.3.0/gcc/testsuite/gnat.dg/derived_type7.ads	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/derived_type7.ads	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,13 ----
+ -- { dg-do compile }
+ 
+ package Derived_Type7 is
+ 
+   type Six_Bit_Data_Type is range 0 .. 63;
+   for Six_Bit_Data_Type'Size use 6;
+ 
+   type Six_Bit_Data_Array_Type is array (Integer range <>) of Six_Bit_Data_Type;
+   for Six_Bit_Data_Array_Type'Component_Size use 6;
+ 
+   procedure Proc (Size : Natural);
+ 
+ end Derived_Type7;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/lto25.adb gcc-10.4.0/gcc/testsuite/gnat.dg/lto25.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/lto25.adb	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/lto25.adb	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,14 ----
+ -- { dg-do run }
+ -- { dg-options "-O2 -flto" { target lto } }
+ 
+ with Opt96_Pkg; use Opt96_Pkg;
+ 
+ procedure Lto25 is
+    R : Rec;
+    D : Data;
+ begin
+    D.Foo.Bar := (0.02, 0.01);
+    if R.F (D) /= 30 then
+      raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/opt92.adb gcc-10.4.0/gcc/testsuite/gnat.dg/opt92.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/opt92.adb	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/opt92.adb	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,38 ----
+ -- { dg-do compile { target { lp64 || llp64 } } }
+ -- { dg-options "-O2 -gnatws" }
+ 
+ procedure Main is
+ 
+    subtype Int64 is Long_Long_Integer;
+ 
+    type Arr is array (Int64 range <>) of Boolean;
+ 
+    Pow : constant := 10;
+ 
+    procedure Compute (B : in out Arr) is
+       Factor : Int64 := 3;
+       Num    : Int64;
+    begin
+       while Factor <= 10 ** (Pow / 2) loop
+          Num := Factor;
+          while Num < 10 ** Pow loop
+             if B (Num) then
+                Factor := Num;
+                exit;
+             end if;
+             Num := Num + 2;
+          end loop;
+          Num := Factor * Factor;
+          while Num < 10 ** Pow loop
+             B (Num) := False;
+             Num        := Num + Factor * 2;
+          end loop;
+          Factor := Factor + 2;
+       end loop;
+    end;
+ 
+    B : Arr (1 .. 10 ** Pow) := (others => True);
+ 
+ begin
+    Compute (B);   
+ end;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/opt96.adb gcc-10.4.0/gcc/testsuite/gnat.dg/opt96.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/opt96.adb	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/opt96.adb	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,14 ----
+ -- { dg-do run }
+ -- { dg-options "-O2" }
+ 
+ with Opt96_Pkg; use Opt96_Pkg;
+ 
+ procedure Opt96 is
+    R : Rec;
+    D : Data;
+ begin
+    D.Foo.Bar := (0.02, 0.01);
+    if R.F (D) /= 30 then
+      raise Program_Error;
+    end if;
+ end;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/opt96_pkg.adb gcc-10.4.0/gcc/testsuite/gnat.dg/opt96_pkg.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/opt96_pkg.adb	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/opt96_pkg.adb	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,16 ----
+ package body Opt96_Pkg is
+ 
+    function F (D : Data) return Integer is
+       X : constant Long_Float := Long_Float (D.Foo.Bar.X);
+       Y : constant Long_Float := Long_Float (D.Foo.Bar.Y);
+    begin
+       return Integer ((X * 1000.0) + (Y * 1000.0));
+    end;
+ 
+    function F (Self : Rec; D  : Data'Class) return Integer is
+       Base_Data : constant Data := Data (D);
+    begin
+       return F (Base_Data);
+    end;
+ 
+ end Opt96_Pkg;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/opt96_pkg.ads gcc-10.4.0/gcc/testsuite/gnat.dg/opt96_pkg.ads
*** gcc-10.3.0/gcc/testsuite/gnat.dg/opt96_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/gnat.dg/opt96_pkg.ads	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,32 ----
+ with System;
+ 
+ package Opt96_Pkg is
+ 
+    type Baz_Type is delta (1.0 / 2.0**16) range 0.0 .. 1.0 - (1.0 / 2.0**16);
+    for Baz_Type'Small use (1.0 / 2.0**16);
+    for Baz_Type'Size use 16;
+ 
+    type Bar_Type is record
+      X : Baz_Type;
+      Y : Baz_Type;
+    end record;
+    for Bar_Type use record
+      X at 0 range 0 .. 15;
+      Y at 2 range 0 .. 15;
+    end record;
+    for Bar_Type'Bit_Order use System.High_Order_First;
+    for Bar_Type'Scalar_Storage_Order use System.High_Order_First;
+ 
+    type Foo_Type is record
+       Bar : Bar_Type;
+    end record;
+ 
+    type Data is tagged record
+      Foo : Foo_Type;
+    end record;
+ 
+    type Rec is tagged null record;
+ 
+    function F (Self : Rec; D  : Data'Class) return Integer;
+ 
+ end Opt96_Pkg;
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/unchecked_convert5.adb gcc-10.4.0/gcc/testsuite/gnat.dg/unchecked_convert5.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/unchecked_convert5.adb	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gnat.dg/unchecked_convert5.adb	Tue Jun 28 08:54:30 2022
***************
*** 1,4 ****
! -- { dg-do run { target hppa*-*-* sparc*-*-* powerpc*-*-* } }
  
  with Unchecked_Conversion;
  
--- 1,4 ----
! -- { dg-do run { target hppa*-*-* sparc*-*-* powerpc-*-* powerpc64-*-* } }
  
  with Unchecked_Conversion;
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/gnat.dg/unchecked_convert6.adb gcc-10.4.0/gcc/testsuite/gnat.dg/unchecked_convert6.adb
*** gcc-10.3.0/gcc/testsuite/gnat.dg/unchecked_convert6.adb	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/gnat.dg/unchecked_convert6.adb	Tue Jun 28 08:54:30 2022
***************
*** 1,4 ****
! -- { dg-do run { target hppa*-*-* sparc*-*-* powerpc*-*-* } }
  
  with Unchecked_Conversion;
  
--- 1,4 ----
! -- { dg-do run { target hppa*-*-* sparc*-*-* powerpc-*-* powerpc64-*-* } }
  
  with Unchecked_Conversion;
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/jit.dg/harness.h gcc-10.4.0/gcc/testsuite/jit.dg/harness.h
*** gcc-10.3.0/gcc/testsuite/jit.dg/harness.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/jit.dg/harness.h	Tue Jun 28 08:54:30 2022
***************
*** 27,33 ****
  #define note dejagnu_note
  #endif
  
! #include <dejagnu.h>
  
  #ifdef MAKE_DEJAGNU_H_THREADSAFE
  #undef pass
--- 27,33 ----
  #define note dejagnu_note
  #endif
  
! #include "jit-dejagnu.h"
  
  #ifdef MAKE_DEJAGNU_H_THREADSAFE
  #undef pass
diff -Nrcpad gcc-10.3.0/gcc/testsuite/jit.dg/jit.exp gcc-10.4.0/gcc/testsuite/jit.dg/jit.exp
*** gcc-10.3.0/gcc/testsuite/jit.dg/jit.exp	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/jit.dg/jit.exp	Tue Jun 28 08:54:30 2022
*************** load_lib target-libpath.exp
*** 37,42 ****
--- 37,51 ----
  load_lib gcc.exp
  load_lib g++.exp
  load_lib dejagnu.exp
+ load_lib target-supports-dg.exp
+ 
+ # Skip these tests for targets that don't support -lgccjit
+ if { ![check_effective_target_lgccjit] } {
+     return
+ }
+ 
+ # The default do-what keyword.
+ set dg-do-what-default compile
  
  # Look for lines of the form:
  #   definitely lost: 11,316 bytes in 235 blocks
*************** proc fixed_host_execute {args} {
*** 158,163 ****
--- 167,175 ----
      if {![file exists ${executable}]} {
  	perror "The executable, \"$executable\" is missing" 0
  	return "No source file found"
+     } elseif {![file executable ${executable}]} {
+ 	perror "The executable, \"$executable\" is not usable" 0
+ 	return "Bad executable found"
      }
  
      verbose "params: $params" 2
*************** proc fixed_host_execute {args} {
*** 185,268 ****
      set args [concat $args ${params}]
      verbose "args: $args" 2
  
!     eval spawn -noecho $args
  
!     expect_after full_buffer {	error "got full_buffer" }
  
      set prefix "\[^\r\n\]*"
      expect {
! 	-re "^$prefix\[0-9\]\[0-9\]:..:..:${text}*\r\n" {
  	    regsub "\[\n\r\t\]*NOTE: $text\r\n" $expect_out(0,string) "" output
  	    verbose "$output" 3
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^$prefix\tNOTE:${text}*" {
! 	    regsub "\[\n\r\t\]*NOTE: $text\r\n" $expect_out(0,string) "" output
! 	    set output [string range $output 6 end]
! 	    verbose "$output" 2
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^$prefix\tPASSED:${text}*" {
! 	    regsub "\[\n\r\t\]*PASSED: $text\r\n" $expect_out(0,string) "" output
! 	    set output [string range $output 8 end]
! 	    pass "$output"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^$prefix\tFAILED:${text}*" {
! 	    regsub "\[\n\r\t\]*FAILED: $text\r\n" $expect_out(0,string) "" output
! 	    set output [string range $output 8 end]
! 	    fail "$output"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^$prefix\tUNTESTED:${text}*" {
! 	    regsub "\[\n\r\t\]*TESTED: $text\r\n" $expect_out(0,string) "" output
! 	    set output [string range $output 8 end]
! 	    untested "$output"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^$prefix\tUNRESOLVED:${text}*" {
! 	    regsub "\[\n\r\t\]*UNRESOLVED: $text\r\n" $expect_out(0,string) "" output
! 	    set output [string range $output 8 end]
! 	    unresolved "$output"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^Totals" {
! 	    verbose "All done" 2
  	}
  	eof {
! 	    #	    unresolved "${executable} died prematurely"
! 	    #	    catch close
! 	    #	    return "${executable} died prematurely"
  	}
  	timeout {
- 	    warning "Timed out executing test case"
  	    if { $timetol <= 2 } {
  		incr timetol
  		exp_continue
  	    } else {
  		catch close
  		return "Timed out executing test case"
  	    }
  	}
- 	-re "^$prefix\r\n" {
- 	    exp_continue
- 	}
      }
  
!     # Use "wait" before "close": valgrind might not have finished
!     # writing the log out before we parse it, so we need to wait for
!     # the spawnee to finish.
! 
!     catch wait wres
!     verbose "wres: $wres" 2
!     verify_exit_status $executable $wres
! 
      if $run_under_valgrind {
  	upvar 2 name name
  	parse_valgrind_logfile $name $valgrind_logfile
--- 197,321 ----
      set args [concat $args ${params}]
      verbose "args: $args" 2
  
!     # We checked that the executable exists above, and can be executed, but
!     # that does not cover other reasons that the launch could fail (e.g.
!     # missing or malformed params); catch such cases here and report them.
!     set err [catch "spawn -noecho $args" pid]
!     set sub_proc_id $spawn_id
!     if { $pid <= 0 || $err != 0 || $sub_proc_id < 0 } {
!         warning "failed to spawn : $args : err = $err"
!     }
  
!     # Increase the buffer size, if needed to avoid spurious buffer-full
!     # events; GCC uses 10000; chose a power of two here.
!     set current_max_match [match_max -i $sub_proc_id]
!     if { $current_max_match < 8192 } {
!         match_max -i $sub_proc_id 8192
!         set used [match_max -i $sub_proc_id]
!     }
! 
!     # If we get a buffer-full error, that seems to be unrecoverable so try to
!     # exit in a reasonable manner to avoid wedged processes.
!     expect_after full_buffer {
!         verbose -log "fixed_host_execute: $args FULL BUFFER"
!         # FIXME: this all assumes that closing the connection will cause the
!         # sub-process to terminate (but that is not going to be the case if,
!         # for example, there is something started with -nohup somewhere).
!         # We should explicitly kill it here.
!         # Set the process to be a nowait exit.
!         wait -nowait -i $sub_proc_id
!         catch close
!         perror "${executable} got full_buffer"
!         return "${executable} got full_buffer"
!     }
  
      set prefix "\[^\r\n\]*"
+     # Work around a Darwin tcl or termios bug that sometimes inserts extra
+     # CR characters into the cooked tty stream
+     set endline "\r\n"
+     if { [istarget *-*-darwin*] } {
+         set endline "\r(\r)*\n"
+     }
+     
+     # Note that the logic here assumes that we cannot (validly) get single
+     # carriage return or line feed characters in the stream.  If those occur,
+     # it will stop any further matching.  We arange for the matching to be
+     # at the start of the buffer - so that if there is any spurious output
+     # to be discarded, it must be done explicitly - not by matching part-way
+     # through the buffer.
      expect {
! 	-re "^$prefix\[0-9\]\[0-9\]:..:..:${text}*$endline" {
  	    regsub "\[\n\r\t\]*NOTE: $text\r\n" $expect_out(0,string) "" output
  	    verbose "$output" 3
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^\tNOTE: (\[^\r\n\]+)$endline" {
! 	    # discard notes.
! 	    verbose "Ignored note: $expect_out(1,string)" 2
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^\tPASSED: (\[^\r\n\]+)$endline" {
! 	    pass "$expect_out(1,string)"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^\tFAILED: (\[^\r\n\]+)$endline" {
! 	    fail "$expect_out(1,string)"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^\tUNTESTED: (\[^\r\n\]+)$endline" {
! 	    untested "$expect_out(1,string)"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^\tUNRESOLVED: (\[^\r\n\]+)$endline" {
! 	    unresolved "$expect_out(1,string)"
  	    set timetol 0
  	    exp_continue
  	}
! 	-re "^$prefix$endline" {
!             # This matches and discards any other lines (including blank ones).
!             if { [string length $expect_out(buffer)] <= 2 } {
!                 set output "blank line"
!             } else {
! 	        set output [string range $expect_out(buffer) 0 end-2]
! 	    }
! 	    verbose -log "DISCARDED $expect_out(spawn_id) : $output"
! 	    exp_continue
  	}
  	eof {
! 	    # This seems to be the only way that we can reliably know that the
! 	    # output is finished since there are cases where further output
! 	    # follows the dejagnu test harness totals.
! 	    verbose "saw eof" 2
  	}
  	timeout {
  	    if { $timetol <= 2 } {
+ 	        verbose -log "Timed out with retry (timeout = $timeout)"
  		incr timetol
  		exp_continue
  	    } else {
+ 	        warning "Timed out executing testcase (timeout = $timeout)"
  		catch close
  		return "Timed out executing test case"
  	    }
  	}
      }
  
!     # Use "wait" to pick up the sub-process exit state.  If the sub-process is
!     # writing to a file (perhaps under valgrind) then that also needs to be
!     # complete; only attempt this on a valid spawn.
!     if { $sub_proc_id > 0 } {
!         verbose "waiting for $sub_proc_id" 1
!         # Be explicit about what we are waiting for.
!         catch "wait -i $sub_proc_id" wres
!         verbose "wres: $wres" 2
!         verify_exit_status $executable $wres
!     }
!  
      if $run_under_valgrind {
  	upvar 2 name name
  	parse_valgrind_logfile $name $valgrind_logfile
*************** proc jit-verify-executable { args } {
*** 878,886 ****
      jit-run-executable $output_filename ${dg-output-text}
  }
  
  # We need to link with --export-dynamic for test-calling-external-function.c
  # so that the JIT-built code can call into functions from the main program.
! set DEFAULT_CFLAGS "-I$srcdir/../jit -lgccjit -g -Wall -Werror -Wl,--export-dynamic"
  
  # Main loop.  This will invoke jig-dg-test on each test-*.c file.
  dg-runtest $tests "" $DEFAULT_CFLAGS
--- 931,944 ----
      jit-run-executable $output_filename ${dg-output-text}
  }
  
+ set DEFAULT_CFLAGS "-I$srcdir/../jit -lgccjit -g -Wall -Werror"
+ 
  # We need to link with --export-dynamic for test-calling-external-function.c
  # so that the JIT-built code can call into functions from the main program.
! 
! if { [check_effective_target_rdynamic] } {
!   set DEFAULT_CFLAGS "$DEFAULT_CFLAGS -rdynamic"
! }
  
  # Main loop.  This will invoke jig-dg-test on each test-*.c file.
  dg-runtest $tests "" $DEFAULT_CFLAGS
diff -Nrcpad gcc-10.3.0/gcc/testsuite/lib/prune.exp gcc-10.4.0/gcc/testsuite/lib/prune.exp
*** gcc-10.3.0/gcc/testsuite/lib/prune.exp	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/lib/prune.exp	Tue Jun 28 08:54:30 2022
*************** proc prune_gcc_output { text } {
*** 66,71 ****
--- 66,76 ----
      regsub -all "(^|\n)\[^\n\]*file path prefix \[^\n\]* never used" $text "" text
      regsub -all "(^|\n)\[^\n\]*linker input file unused since linking not done" $text "" text
  
+     # Ideally the tests would indicate that executable stacks were needed
+     # to the linker.  But the option for that varies and may not even exist
+     # on some targets.  So we're stuck pruning the warning.
+     regsub -all "(^|\n)(\[^\n\]*: warning:\[^\n\]*requires executable stack\[^\n\]*\n?)+" $text "\\1" text
+ 
      # Ignore harmless warnings from Xcode 3.2.x.
      regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
*************** proc prune_gcc_output { text } {
*** 74,79 ****
--- 79,87 ----
      # Ignore harmless warnings from Xcode 4.0.
      regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
  
+     # Ignore dsymutil warning (tool bug is actually linker)
+     regsub -all "(^|\n)\[^\n\]*could not find object file symbol for symbol\[^\n\]*" $text "" text
+ 
      # If dg-enable-nn-line-numbers was provided, then obscure source-margin
      # line numbers by converting them to "NN" form.
      set text [maybe-handle-nn-line-numbers $text]
diff -Nrcpad gcc-10.3.0/gcc/testsuite/lib/target-supports.exp gcc-10.4.0/gcc/testsuite/lib/target-supports.exp
*** gcc-10.3.0/gcc/testsuite/lib/target-supports.exp	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/lib/target-supports.exp	Tue Jun 28 08:54:30 2022
*************** proc check_effective_target_arm_cmse_ok
*** 4671,4676 ****
--- 4671,4693 ----
      } "-mcmse"];
  }
  
+ # Return 1 if the target supports executing CMSE instructions, 0
+ # otherwise.  Cache the result.
+ 
+ proc check_effective_target_arm_cmse_hw { } {
+     return [check_runtime arm_cmse_hw_available {
+ 	int main (void)
+ 	{
+ 	    unsigned id_pfr1;
+ 	    asm ("ldr\t%0, =0xe000ed44\n" \
+ 		 "ldr\t%0, [%0]\n" \
+ 		 "sg" : "=l" (id_pfr1));
+ 	    /* Exit with code 0 iff security extension is available.  */
+ 	    return !(id_pfr1 & 0xf0);
+ 	}
+     } "-mcmse"]
+ }
+ 
  # Return 1 if the target supports executing MVE instructions, 0
  # otherwise.
  
*************** proc check_effective_target_indirect_cal
*** 10330,10335 ****
--- 10347,10367 ----
    return 1
  }
  
+ # Return 1 if we can use the -lgccjit option, 0 otherwise.
+ 
+ proc check_effective_target_lgccjit { } {
+   if { [info procs jit_target_compile] == "" } then {
+     global GCC_UNDER_TEST
+     if ![info exists GCC_UNDER_TEST] {
+       set GCC_UNDER_TEST "[find_gcc]"
+     }
+     proc jit_target_compile { source dest type options } [info body gcc_target_compile]
+   }
+   return [check_no_compiler_messages lgccjit executable {
+      int main() { return 0; }
+   } "-lgccjit"]
+ }
+ 
  # Return 1 if we're able to assemble movdiri and movdir64b
  
  proc check_effective_target_movdir { } {
*************** proc check_effective_target_tune_cortex_
*** 10352,10364 ****
      return [check_configured_with "with-tune=cortex-a76"]
  }
  
! # Return 1 if target is not support address sanitize, 1 otherwise.
  
  proc check_effective_target_no_fsanitize_address {} {
      if ![check_no_compiler_messages fsanitize_address executable {
  	int main (void) { return 0; }
!     }] {
  	return 1;
      }
      return 0;
  }
--- 10384,10397 ----
      return [check_configured_with "with-tune=cortex-a76"]
  }
  
! # Return 1 if the target does not support address sanitizer, 0 otherwise
  
  proc check_effective_target_no_fsanitize_address {} {
      if ![check_no_compiler_messages fsanitize_address executable {
  	int main (void) { return 0; }
!     } "-fsanitize=address" ] {
  	return 1;
      }
+ 
      return 0;
  }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm gcc-10.4.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
*** gcc-10.3.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm	Tue Jun 28 08:54:30 2022
***************
*** 2,8 ****
  
  // { dg-do run { target *-*-darwin* } }
  // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
! // { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[1-9]* *-*-darwin2[0-9]* } { "-fnext-runtime" } { "" } }
  // { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" }
  // This test has no equivalent or meaning for m64/ABI V2
  // { dg-xfail-run-if "No Test Avail" {  *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } }
--- 2,8 ----
  
  // { dg-do run { target *-*-darwin* } }
  // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } }
! // { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[1-9]* *-*-darwin2* } { "-fnext-runtime" } { "" } }
  // { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" }
  // This test has no equivalent or meaning for m64/ABI V2
  // { dg-xfail-run-if "No Test Avail" {  *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm gcc-10.4.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
*** gcc-10.3.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/obj-c++.dg/objc-gc-3.mm	Tue Jun 28 08:54:30 2022
***************
*** 3,9 ****
  /* Contributed by Ziemowit Laski <zlaski@apple.com>  */
  
  /* { dg-do compile } */
! /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2[0-9]* } { "-fnext-runtime" } { "" } } */
  /* { dg-options "-fobjc-gc" } */
  /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
  
--- 3,9 ----
  /* Contributed by Ziemowit Laski <zlaski@apple.com>  */
  
  /* { dg-do compile } */
! /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2* } { "-fnext-runtime" } { "" } } */
  /* { dg-options "-fobjc-gc" } */
  /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/obj-c++.dg/pr101666-0.mm gcc-10.4.0/gcc/testsuite/obj-c++.dg/pr101666-0.mm
*** gcc-10.3.0/gcc/testsuite/obj-c++.dg/pr101666-0.mm	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/obj-c++.dg/pr101666-0.mm	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do run } */
+ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-skip-if "ABI 2 only" { *-*-* && { ! objc2 } } { "*" } { "" } } */
+ /* { dg-additional-options "-fobjc-nilcheck -Wno-objc-root-class" } */
+ 
+ #include "pr101666.inc"
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/obj-c++.dg/pr101666-1.mm gcc-10.4.0/gcc/testsuite/obj-c++.dg/pr101666-1.mm
*** gcc-10.3.0/gcc/testsuite/obj-c++.dg/pr101666-1.mm	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/obj-c++.dg/pr101666-1.mm	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,10 ----
+ /* Later versions of Darwin can compile for 10.5, but cannot link it so we
+    can only run this test up to 10.13.  */
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-do run { target *-*-darwin[89]* *-*-darwin1[0-7]* } } */
+ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-skip-if "ABI 2 only" { *-*-* && { ! objc2 } } { "*" } { "" } } */
+ /* { dg-additional-options "-fobjc-nilcheck -mmacosx-version-min=10.5 " } */
+ /* { dg-additional-options "-Wno-objc-root-class" } */
+ 
+ #include "pr101666.inc"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/obj-c++.dg/pr101666.inc gcc-10.4.0/gcc/testsuite/obj-c++.dg/pr101666.inc
*** gcc-10.3.0/gcc/testsuite/obj-c++.dg/pr101666.inc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/obj-c++.dg/pr101666.inc	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,29 ----
+ #include <cstdlib>
+ struct point { double x, y, z; };
+ 
+ @interface Foo
+ - (struct point)bar;
+ - (struct point)baz;
+ @end
+ 
+ @implementation Foo
+ - (struct point)bar { struct point q = { 1.0, 2.0, 3.0 }; return q; };
+ - (struct point)baz { struct point q = { 4.0, 5.0, 6.0 }; return q; };
+ @end
+ 
+ /* Cases where a check for nil should be inserted by the compiler, when
+    -fobjc-nilcheck is in force. We should not attempt the calls, and the
+    result should be 0-filled. */
+ 
+ Foo *f;
+ 
+ int main(void) {
+   struct point p = [f bar];
+   if (p.x != 0.0 || p.y != 0.0 || p.z != 0.0)
+     abort ();
+   id nilobj = (id)0;
+   p = [nilobj baz];
+   if (p.x != 0.0 || p.y != 0.0 || p.z != 0.0)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/testsuite/objc.dg/objc-gc-4.m gcc-10.4.0/gcc/testsuite/objc.dg/objc-gc-4.m
*** gcc-10.3.0/gcc/testsuite/objc.dg/objc-gc-4.m	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/testsuite/objc.dg/objc-gc-4.m	Tue Jun 28 08:54:30 2022
***************
*** 3,9 ****
  /* Contributed by Ziemowit Laski <zlaski@apple.com>  */
  
  /* { dg-do compile } */
! /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2[0-9]* } { "-fnext-runtime" } { "" } } */
  /* { dg-options "-fobjc-gc" } */
  /* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
  
--- 3,9 ----
  /* Contributed by Ziemowit Laski <zlaski@apple.com>  */
  
  /* { dg-do compile } */
! /* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-9]* *-*-darwin2* } { "-fnext-runtime" } { "" } } */
  /* { dg-options "-fobjc-gc" } */
  /* { dg-prune-output "cc1obj: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */
  
diff -Nrcpad gcc-10.3.0/gcc/testsuite/objc.dg/pr101666-0.m gcc-10.4.0/gcc/testsuite/objc.dg/pr101666-0.m
*** gcc-10.3.0/gcc/testsuite/objc.dg/pr101666-0.m	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/objc.dg/pr101666-0.m	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do run } */
+ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-skip-if "ABI 2 only" { *-*-* && { ! objc2 } } { "*" } { "" } } */
+ /* { dg-additional-options "-fobjc-nilcheck -Wno-objc-root-class" } */
+ 
+ #include "pr101666.inc"
+ 
diff -Nrcpad gcc-10.3.0/gcc/testsuite/objc.dg/pr101666-1.m gcc-10.4.0/gcc/testsuite/objc.dg/pr101666-1.m
*** gcc-10.3.0/gcc/testsuite/objc.dg/pr101666-1.m	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/objc.dg/pr101666-1.m	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,10 ----
+ /* Later versions of Darwin can compile for 10.5, but cannot link it so we
+    can only run this test up to 10.13.  */
+ /* { dg-do compile { target *-*-darwin* } } */
+ /* { dg-do run { target *-*-darwin[89]* *-*-darwin1[0-7]* } } */
+ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */
+ /* { dg-skip-if "ABI 2 only" { *-*-* && { ! objc2 } } { "*" } { "" } } */
+ /* { dg-additional-options "-fobjc-nilcheck -mmacosx-version-min=10.5 " } */
+ /* { dg-additional-options "-Wno-objc-root-class" } */
+ 
+ #include "pr101666.inc"
diff -Nrcpad gcc-10.3.0/gcc/testsuite/objc.dg/pr101666.inc gcc-10.4.0/gcc/testsuite/objc.dg/pr101666.inc
*** gcc-10.3.0/gcc/testsuite/objc.dg/pr101666.inc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/gcc/testsuite/objc.dg/pr101666.inc	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,29 ----
+ #include <stdlib.h>
+ struct point { double x, y, z; };
+ 
+ @interface Foo
+ - (struct point)bar;
+ - (struct point)baz;
+ @end
+ 
+ @implementation Foo
+ - (struct point)bar { struct point q = { 1.0, 2.0, 3.0 }; return q; };
+ - (struct point)baz { struct point q = { 4.0, 5.0, 6.0 }; return q; };
+ @end
+ 
+ /* Cases where a check for nil should be inserted by the compiler, when
+    -fobjc-nilcheck is in force. We should not attempt the calls, and the
+    result should be 0-filled. */
+ 
+ Foo *f;
+ 
+ int main(void) {
+   struct point p = [f bar];
+   if (p.x != 0.0 || p.y != 0.0 || p.z != 0.0)
+     abort ();
+   id nilobj = (id)0;
+   p = [nilobj baz];
+   if (p.x != 0.0 || p.y != 0.0 || p.z != 0.0)
+     abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/gcc/tree-cfg.c gcc-10.4.0/gcc/tree-cfg.c
*** gcc-10.3.0/gcc/tree-cfg.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-cfg.c	Tue Jun 28 08:54:30 2022
*************** verify_gimple_assign_ternary (gassign *s
*** 4243,4252 ****
        /* Fallthrough.  */
      case COND_EXPR:
        if (!is_gimple_val (rhs1)
! 	  && verify_gimple_comparison (TREE_TYPE (rhs1),
! 				       TREE_OPERAND (rhs1, 0),
! 				       TREE_OPERAND (rhs1, 1),
! 				       TREE_CODE (rhs1)))
  	return true;
        if (!useless_type_conversion_p (lhs_type, rhs2_type)
  	  || !useless_type_conversion_p (lhs_type, rhs3_type))
--- 4243,4253 ----
        /* Fallthrough.  */
      case COND_EXPR:
        if (!is_gimple_val (rhs1)
! 	  && (!is_gimple_condexpr (rhs1)
! 	      || verify_gimple_comparison (TREE_TYPE (rhs1),
! 					   TREE_OPERAND (rhs1, 0),
! 					   TREE_OPERAND (rhs1, 1),
! 					   TREE_CODE (rhs1))))
  	return true;
        if (!useless_type_conversion_p (lhs_type, rhs2_type)
  	  || !useless_type_conversion_p (lhs_type, rhs3_type))
diff -Nrcpad gcc-10.3.0/gcc/tree-data-ref.c gcc-10.4.0/gcc/tree-data-ref.c
*** gcc-10.3.0/gcc/tree-data-ref.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-data-ref.c	Tue Jun 28 08:54:30 2022
*************** print_lambda_vector (FILE * outfile, lam
*** 391,397 ****
    int i;
  
    for (i = 0; i < n; i++)
!     fprintf (outfile, "%3d ", (int)vector[i]);
    fprintf (outfile, "\n");
  }
  
--- 391,397 ----
    int i;
  
    for (i = 0; i < n; i++)
!     fprintf (outfile, HOST_WIDE_INT_PRINT_DEC " ", vector[i]);
    fprintf (outfile, "\n");
  }
  
*************** create_intersect_range_checks_index (cla
*** 1891,1898 ****
  
    bool waw_or_war_p = (alias_pair.flags & ~(DR_ALIAS_WAR | DR_ALIAS_WAW)) == 0;
  
!   unsigned int i;
!   for (i = 0; i < DR_NUM_DIMENSIONS (dr_a.dr); i++)
      {
        tree access1 = DR_ACCESS_FN (dr_a.dr, i);
        tree access2 = DR_ACCESS_FN (dr_b.dr, i);
--- 1891,1898 ----
  
    bool waw_or_war_p = (alias_pair.flags & ~(DR_ALIAS_WAR | DR_ALIAS_WAW)) == 0;
  
!   int found = -1;
!   for (unsigned int i = 0; i < DR_NUM_DIMENSIONS (dr_a.dr); i++)
      {
        tree access1 = DR_ACCESS_FN (dr_a.dr, i);
        tree access2 = DR_ACCESS_FN (dr_b.dr, i);
*************** create_intersect_range_checks_index (cla
*** 1908,2062 ****
  
  	  return false;
  	}
!       /* The two indices must have the same step.  */
!       if (!operand_equal_p (CHREC_RIGHT (access1), CHREC_RIGHT (access2), 0))
  	return false;
  
!       tree idx_step = CHREC_RIGHT (access1);
!       /* Index must have const step, otherwise DR_STEP won't be constant.  */
!       gcc_assert (TREE_CODE (idx_step) == INTEGER_CST);
!       /* Index must evaluate in the same direction as DR.  */
!       gcc_assert (!neg_step || tree_int_cst_sign_bit (idx_step) == 1);
  
!       tree min1 = CHREC_LEFT (access1);
!       tree min2 = CHREC_LEFT (access2);
!       if (!types_compatible_p (TREE_TYPE (min1), TREE_TYPE (min2)))
! 	return false;
  
!       /* Ideally, alias can be checked against loop's control IV, but we
! 	 need to prove linear mapping between control IV and reference
! 	 index.  Although that should be true, we check against (array)
! 	 index of data reference.  Like segment length, index length is
! 	 linear function of the number of iterations with index_step as
! 	 the coefficient, i.e, niter_len * idx_step.  */
!       offset_int abs_idx_step = offset_int::from (wi::to_wide (idx_step),
! 						  SIGNED);
!       if (neg_step)
! 	abs_idx_step = -abs_idx_step;
!       poly_offset_int idx_len1 = abs_idx_step * niter_len1;
!       poly_offset_int idx_len2 = abs_idx_step * niter_len2;
!       poly_offset_int idx_access1 = abs_idx_step * niter_access1;
!       poly_offset_int idx_access2 = abs_idx_step * niter_access2;
  
!       gcc_assert (known_ge (idx_len1, 0)
! 		  && known_ge (idx_len2, 0)
! 		  && known_ge (idx_access1, 0)
! 		  && known_ge (idx_access2, 0));
  
!       /* Each access has the following pattern, with lengths measured
! 	 in units of INDEX:
  
! 	      <-- idx_len -->
! 	      <--- A: -ve step --->
! 	      +-----+-------+-----+-------+-----+
! 	      | n-1 | ..... |  0  | ..... | n-1 |
! 	      +-----+-------+-----+-------+-----+
! 			    <--- B: +ve step --->
! 			    <-- idx_len -->
! 			    |
! 			   min
  
! 	 where "n" is the number of scalar iterations covered by the segment
! 	 and where each access spans idx_access units.
  
! 	 A is the range of bytes accessed when the step is negative,
! 	 B is the range when the step is positive.
  
! 	 When checking for general overlap, we need to test whether
! 	 the range:
  
! 	   [min1 + low_offset1, min2 + high_offset1 + idx_access1 - 1]
  
! 	 overlaps:
  
! 	   [min2 + low_offset2, min2 + high_offset2 + idx_access2 - 1]
  
! 	 where:
  
! 	    low_offsetN = +ve step ? 0 : -idx_lenN;
! 	   high_offsetN = +ve step ? idx_lenN : 0;
  
! 	 This is equivalent to testing whether:
  
! 	   min1 + low_offset1 <= min2 + high_offset2 + idx_access2 - 1
! 	   && min2 + low_offset2 <= min1 + high_offset1 + idx_access1 - 1
  
! 	 Converting this into a single test, there is an overlap if:
  
! 	   0 <= min2 - min1 + bias <= limit
  
! 	 where  bias = high_offset2 + idx_access2 - 1 - low_offset1
! 	       limit = (high_offset1 - low_offset1 + idx_access1 - 1)
! 		     + (high_offset2 - low_offset2 + idx_access2 - 1)
! 	  i.e. limit = idx_len1 + idx_access1 - 1 + idx_len2 + idx_access2 - 1
  
! 	 Combining the tests requires limit to be computable in an unsigned
! 	 form of the index type; if it isn't, we fall back to the usual
! 	 pointer-based checks.
  
! 	 We can do better if DR_B is a write and if DR_A and DR_B are
! 	 well-ordered in both the original and the new code (see the
! 	 comment above the DR_ALIAS_* flags for details).  In this case
! 	 we know that for each i in [0, n-1], the write performed by
! 	 access i of DR_B occurs after access numbers j<=i of DR_A in
! 	 both the original and the new code.  Any write or anti
! 	 dependencies wrt those DR_A accesses are therefore maintained.
  
! 	 We just need to make sure that each individual write in DR_B does not
! 	 overlap any higher-indexed access in DR_A; such DR_A accesses happen
! 	 after the DR_B access in the original code but happen before it in
! 	 the new code.
  
! 	 We know the steps for both accesses are equal, so by induction, we
! 	 just need to test whether the first write of DR_B overlaps a later
! 	 access of DR_A.  In other words, we need to move min1 along by
! 	 one iteration:
  
! 	   min1' = min1 + idx_step
  
! 	 and use the ranges:
  
! 	   [min1' + low_offset1', min1' + high_offset1' + idx_access1 - 1]
  
! 	 and:
  
! 	   [min2, min2 + idx_access2 - 1]
  
! 	 where:
  
! 	    low_offset1' = +ve step ? 0 : -(idx_len1 - |idx_step|)
! 	   high_offset1' = +ve_step ? idx_len1 - |idx_step| : 0.  */
!       if (waw_or_war_p)
! 	idx_len1 -= abs_idx_step;
  
!       poly_offset_int limit = idx_len1 + idx_access1 - 1 + idx_access2 - 1;
!       if (!waw_or_war_p)
! 	limit += idx_len2;
  
!       tree utype = unsigned_type_for (TREE_TYPE (min1));
!       if (!wi::fits_to_tree_p (limit, utype))
! 	return false;
  
!       poly_offset_int low_offset1 = neg_step ? -idx_len1 : 0;
!       poly_offset_int high_offset2 = neg_step || waw_or_war_p ? 0 : idx_len2;
!       poly_offset_int bias = high_offset2 + idx_access2 - 1 - low_offset1;
!       /* Equivalent to adding IDX_STEP to MIN1.  */
!       if (waw_or_war_p)
! 	bias -= wi::to_offset (idx_step);
  
!       tree subject = fold_build2 (MINUS_EXPR, utype,
! 				  fold_convert (utype, min2),
! 				  fold_convert (utype, min1));
!       subject = fold_build2 (PLUS_EXPR, utype, subject,
! 			     wide_int_to_tree (utype, bias));
!       tree part_cond_expr = fold_build2 (GT_EXPR, boolean_type_node, subject,
! 					 wide_int_to_tree (utype, limit));
!       if (*cond_expr)
! 	*cond_expr = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
! 				  *cond_expr, part_cond_expr);
!       else
! 	*cond_expr = part_cond_expr;
!     }
    if (dump_enabled_p ())
      {
        if (waw_or_war_p)
--- 1908,2073 ----
  
  	  return false;
  	}
!       if (found >= 0)
  	return false;
+       found = i;
+     }
  
!   /* Ought not to happen in practice, since if all accesses are equal then the
!      alias should be decidable at compile time.  */
!   if (found < 0)
!     return false;
  
!   /* The two indices must have the same step.  */
!   tree access1 = DR_ACCESS_FN (dr_a.dr, found);
!   tree access2 = DR_ACCESS_FN (dr_b.dr, found);
!   if (!operand_equal_p (CHREC_RIGHT (access1), CHREC_RIGHT (access2), 0))
!     return false;
  
!   tree idx_step = CHREC_RIGHT (access1);
!   /* Index must have const step, otherwise DR_STEP won't be constant.  */
!   gcc_assert (TREE_CODE (idx_step) == INTEGER_CST);
!   /* Index must evaluate in the same direction as DR.  */
!   gcc_assert (!neg_step || tree_int_cst_sign_bit (idx_step) == 1);
  
!   tree min1 = CHREC_LEFT (access1);
!   tree min2 = CHREC_LEFT (access2);
!   if (!types_compatible_p (TREE_TYPE (min1), TREE_TYPE (min2)))
!     return false;
  
!   /* Ideally, alias can be checked against loop's control IV, but we
!      need to prove linear mapping between control IV and reference
!      index.  Although that should be true, we check against (array)
!      index of data reference.  Like segment length, index length is
!      linear function of the number of iterations with index_step as
!      the coefficient, i.e, niter_len * idx_step.  */
!   offset_int abs_idx_step = offset_int::from (wi::to_wide (idx_step),
! 					      SIGNED);
!   if (neg_step)
!     abs_idx_step = -abs_idx_step;
!   poly_offset_int idx_len1 = abs_idx_step * niter_len1;
!   poly_offset_int idx_len2 = abs_idx_step * niter_len2;
!   poly_offset_int idx_access1 = abs_idx_step * niter_access1;
!   poly_offset_int idx_access2 = abs_idx_step * niter_access2;
  
!   gcc_assert (known_ge (idx_len1, 0)
! 	      && known_ge (idx_len2, 0)
! 	      && known_ge (idx_access1, 0)
! 	      && known_ge (idx_access2, 0));
  
!   /* Each access has the following pattern, with lengths measured
!      in units of INDEX:
  
! 	  <-- idx_len -->
! 	  <--- A: -ve step --->
! 	  +-----+-------+-----+-------+-----+
! 	  | n-1 | ..... |  0  | ..... | n-1 |
! 	  +-----+-------+-----+-------+-----+
! 			<--- B: +ve step --->
! 			<-- idx_len -->
! 			|
! 		       min
  
!      where "n" is the number of scalar iterations covered by the segment
!      and where each access spans idx_access units.
  
!      A is the range of bytes accessed when the step is negative,
!      B is the range when the step is positive.
  
!      When checking for general overlap, we need to test whether
!      the range:
  
!        [min1 + low_offset1, min1 + high_offset1 + idx_access1 - 1]
  
!      overlaps:
  
!        [min2 + low_offset2, min2 + high_offset2 + idx_access2 - 1]
  
!      where:
  
! 	low_offsetN = +ve step ? 0 : -idx_lenN;
!        high_offsetN = +ve step ? idx_lenN : 0;
  
!      This is equivalent to testing whether:
  
!        min1 + low_offset1 <= min2 + high_offset2 + idx_access2 - 1
!        && min2 + low_offset2 <= min1 + high_offset1 + idx_access1 - 1
  
!      Converting this into a single test, there is an overlap if:
  
!        0 <= min2 - min1 + bias <= limit
  
!      where  bias = high_offset2 + idx_access2 - 1 - low_offset1
! 	   limit = (high_offset1 - low_offset1 + idx_access1 - 1)
! 		 + (high_offset2 - low_offset2 + idx_access2 - 1)
!       i.e. limit = idx_len1 + idx_access1 - 1 + idx_len2 + idx_access2 - 1
  
!      Combining the tests requires limit to be computable in an unsigned
!      form of the index type; if it isn't, we fall back to the usual
!      pointer-based checks.
  
!      We can do better if DR_B is a write and if DR_A and DR_B are
!      well-ordered in both the original and the new code (see the
!      comment above the DR_ALIAS_* flags for details).  In this case
!      we know that for each i in [0, n-1], the write performed by
!      access i of DR_B occurs after access numbers j<=i of DR_A in
!      both the original and the new code.  Any write or anti
!      dependencies wrt those DR_A accesses are therefore maintained.
  
!      We just need to make sure that each individual write in DR_B does not
!      overlap any higher-indexed access in DR_A; such DR_A accesses happen
!      after the DR_B access in the original code but happen before it in
!      the new code.
  
!      We know the steps for both accesses are equal, so by induction, we
!      just need to test whether the first write of DR_B overlaps a later
!      access of DR_A.  In other words, we need to move min1 along by
!      one iteration:
  
!        min1' = min1 + idx_step
  
!      and use the ranges:
  
!        [min1' + low_offset1', min1' + high_offset1' + idx_access1 - 1]
  
!      and:
  
!        [min2, min2 + idx_access2 - 1]
  
!      where:
  
! 	low_offset1' = +ve step ? 0 : -(idx_len1 - |idx_step|)
!        high_offset1' = +ve_step ? idx_len1 - |idx_step| : 0.  */
!   if (waw_or_war_p)
!     idx_len1 -= abs_idx_step;
  
!   poly_offset_int limit = idx_len1 + idx_access1 - 1 + idx_access2 - 1;
!   if (!waw_or_war_p)
!     limit += idx_len2;
  
!   tree utype = unsigned_type_for (TREE_TYPE (min1));
!   if (!wi::fits_to_tree_p (limit, utype))
!     return false;
! 
!   poly_offset_int low_offset1 = neg_step ? -idx_len1 : 0;
!   poly_offset_int high_offset2 = neg_step || waw_or_war_p ? 0 : idx_len2;
!   poly_offset_int bias = high_offset2 + idx_access2 - 1 - low_offset1;
!   /* Equivalent to adding IDX_STEP to MIN1.  */
!   if (waw_or_war_p)
!     bias -= wi::to_offset (idx_step);
! 
!   tree subject = fold_build2 (MINUS_EXPR, utype,
! 			      fold_convert (utype, min2),
! 			      fold_convert (utype, min1));
!   subject = fold_build2 (PLUS_EXPR, utype, subject,
! 			 wide_int_to_tree (utype, bias));
!   tree part_cond_expr = fold_build2 (GT_EXPR, boolean_type_node, subject,
! 				     wide_int_to_tree (utype, limit));
!   if (*cond_expr)
!     *cond_expr = fold_build2 (TRUTH_AND_EXPR, boolean_type_node,
! 			      *cond_expr, part_cond_expr);
!   else
!     *cond_expr = part_cond_expr;
    if (dump_enabled_p ())
      {
        if (waw_or_war_p)
*************** build_classic_dist_vector_1 (struct data
*** 4816,4821 ****
--- 4827,4834 ----
  	  non_affine_dependence_relation (ddr);
  	  return false;
  	}
+       else
+ 	*init_b = true;
      }
  
    return true;
*************** compute_affine_dependence (struct data_d
*** 5311,5319 ****
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "(compute_affine_dependence\n");
!       fprintf (dump_file, "  stmt_a: ");
        print_gimple_stmt (dump_file, DR_STMT (dra), 0, TDF_SLIM);
!       fprintf (dump_file, "  stmt_b: ");
        print_gimple_stmt (dump_file, DR_STMT (drb), 0, TDF_SLIM);
      }
  
--- 5324,5336 ----
    if (dump_file && (dump_flags & TDF_DETAILS))
      {
        fprintf (dump_file, "(compute_affine_dependence\n");
!       fprintf (dump_file, "  ref_a: ");
!       print_generic_expr (dump_file, DR_REF (dra));
!       fprintf (dump_file, ", stmt_a: ");
        print_gimple_stmt (dump_file, DR_STMT (dra), 0, TDF_SLIM);
!       fprintf (dump_file, "  ref_b: ");
!       print_generic_expr (dump_file, DR_REF (drb));
!       fprintf (dump_file, ", stmt_b: ");
        print_gimple_stmt (dump_file, DR_STMT (drb), 0, TDF_SLIM);
      }
  
diff -Nrcpad gcc-10.3.0/gcc/tree-eh.c gcc-10.4.0/gcc/tree-eh.c
*** gcc-10.3.0/gcc/tree-eh.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-eh.c	Tue Jun 28 08:54:30 2022
*************** operation_could_trap_helper_p (enum tree
*** 2462,2474 ****
      case FLOOR_MOD_EXPR:
      case ROUND_MOD_EXPR:
      case TRUNC_MOD_EXPR:
-     case RDIV_EXPR:
-       if (honor_snans)
- 	return true;
-       if (fp_operation)
- 	return flag_trapping_math;
        if (!TREE_CONSTANT (divisor) || integer_zerop (divisor))
          return true;
        return false;
  
      case LT_EXPR:
--- 2462,2496 ----
      case FLOOR_MOD_EXPR:
      case ROUND_MOD_EXPR:
      case TRUNC_MOD_EXPR:
        if (!TREE_CONSTANT (divisor) || integer_zerop (divisor))
          return true;
+       if (TREE_CODE (divisor) == VECTOR_CST)
+ 	{
+ 	  /* Inspired by initializer_each_zero_or_onep.  */
+ 	  unsigned HOST_WIDE_INT nelts = vector_cst_encoded_nelts (divisor);
+ 	  if (VECTOR_CST_STEPPED_P (divisor)
+ 	      && !TYPE_VECTOR_SUBPARTS (TREE_TYPE (divisor))
+ 		    .is_constant (&nelts))
+ 	    return true;
+ 	  for (unsigned int i = 0; i < nelts; ++i)
+ 	    {
+ 	      tree elt = vector_cst_elt (divisor, i);
+ 	      if (integer_zerop (elt))
+ 		return true;
+ 	    }
+ 	}
+       return false;
+ 
+     case RDIV_EXPR:
+       if (fp_operation)
+ 	{
+ 	  if (honor_snans)
+ 	    return true;
+ 	  return flag_trapping_math;
+ 	}
+       /* Fixed point operations also use RDIV_EXPR.  */
+       if (!TREE_CONSTANT (divisor) || fixed_zerop (divisor))
+ 	return true;
        return false;
  
      case LT_EXPR:
diff -Nrcpad gcc-10.3.0/gcc/tree-inline.c gcc-10.4.0/gcc/tree-inline.c
*** gcc-10.3.0/gcc/tree-inline.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-inline.c	Tue Jun 28 08:54:30 2022
*************** copy_bb (copy_body_data *id, basic_block
*** 2101,2127 ****
  	      tree p;
  	      gcall *new_call;
  	      vec<tree> argarray;
! 	      size_t nargs = gimple_call_num_args (id->call_stmt);
! 	      size_t n;
  
  	      for (p = DECL_ARGUMENTS (id->src_fn); p; p = DECL_CHAIN (p))
! 		nargs--;
  
  	      /* Create the new array of arguments.  */
! 	      n = nargs + gimple_call_num_args (call_stmt);
  	      argarray.create (n);
  	      argarray.safe_grow_cleared (n);
  
  	      /* Copy all the arguments before '...'  */
! 	      memcpy (argarray.address (),
! 		      gimple_call_arg_ptr (call_stmt, 0),
! 		      gimple_call_num_args (call_stmt) * sizeof (tree));
  
  	      /* Append the arguments passed in '...'  */
! 	      memcpy (argarray.address () + gimple_call_num_args (call_stmt),
! 		      gimple_call_arg_ptr (id->call_stmt, 0)
! 		      + (gimple_call_num_args (id->call_stmt) - nargs),
! 		      nargs * sizeof (tree));
  
  	      new_call = gimple_build_call_vec (gimple_call_fn (call_stmt),
  						argarray);
--- 2101,2135 ----
  	      tree p;
  	      gcall *new_call;
  	      vec<tree> argarray;
! 	      size_t nargs_caller = gimple_call_num_args (id->call_stmt);
! 	      size_t nargs = nargs_caller;
  
  	      for (p = DECL_ARGUMENTS (id->src_fn); p; p = DECL_CHAIN (p))
! 		{
! 		  /* Avoid crashing on invalid IL that doesn't have a
! 		     varargs function or that passes not enough arguments.  */
! 		  if (nargs == 0)
! 		    break;
! 		  nargs--;
! 		}
  
  	      /* Create the new array of arguments.  */
! 	      size_t nargs_callee = gimple_call_num_args (call_stmt);
! 	      size_t n = nargs + nargs_callee;
  	      argarray.create (n);
  	      argarray.safe_grow_cleared (n);
  
  	      /* Copy all the arguments before '...'  */
! 	      if (nargs_callee)
! 		memcpy (argarray.address (),
! 			gimple_call_arg_ptr (call_stmt, 0),
! 			nargs_callee * sizeof (tree));
  
  	      /* Append the arguments passed in '...'  */
! 	      if (nargs)
! 		memcpy (argarray.address () + nargs_callee,
! 			gimple_call_arg_ptr (id->call_stmt, 0)
! 			+ (nargs_caller - nargs), nargs * sizeof (tree));
  
  	      new_call = gimple_build_call_vec (gimple_call_fn (call_stmt),
  						argarray);
*************** copy_bb (copy_body_data *id, basic_block
*** 2132,2137 ****
--- 2140,2146 ----
  		 GF_CALL_VA_ARG_PACK.  */
  	      gimple_call_copy_flags (new_call, call_stmt);
  	      gimple_call_set_va_arg_pack (new_call, false);
+ 	      gimple_call_set_fntype (new_call, gimple_call_fntype (call_stmt));
  	      /* location includes block.  */
  	      gimple_set_location (new_call, gimple_location (stmt));
  	      gimple_call_set_lhs (new_call, gimple_call_lhs (call_stmt));
diff -Nrcpad gcc-10.3.0/gcc/tree-loop-distribution.c gcc-10.4.0/gcc/tree-loop-distribution.c
*** gcc-10.3.0/gcc/tree-loop-distribution.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-loop-distribution.c	Tue Jun 28 08:54:30 2022
*************** along with GCC; see the file COPYING3.
*** 115,120 ****
--- 115,121 ----
  #include "tree-vectorizer.h"
  #include "tree-eh.h"
  #include "gimple-fold.h"
+ #include "tree-affine.h"
  
  
  #define MAX_DATAREFS_NUM \
*************** generate_memcpy_builtin (class loop *loo
*** 1212,1217 ****
--- 1213,1230 ----
      kind = BUILT_IN_MEMCPY;
    else
      kind = BUILT_IN_MEMMOVE;
+   /* Try harder if we're copying a constant size.  */
+   if (kind == BUILT_IN_MEMMOVE && poly_int_tree_p (nb_bytes))
+     {
+       aff_tree asrc, adest;
+       tree_to_aff_combination (src, ptr_type_node, &asrc);
+       tree_to_aff_combination (dest, ptr_type_node, &adest);
+       aff_combination_scale (&adest, -1);
+       aff_combination_add (&asrc, &adest);
+       if (aff_comb_cannot_overlap_p (&asrc, wi::to_poly_widest (nb_bytes),
+ 				     wi::to_poly_widest (nb_bytes)))
+ 	kind = BUILT_IN_MEMCPY;
+     }
  
    dest = force_gimple_operand_gsi (&gsi, dest, true, NULL_TREE,
  				   false, GSI_CONTINUE_LINKING);
*************** loop_distribution::classify_builtin_ldst
*** 1759,1769 ****
    /* Now check that if there is a dependence.  */
    ddr_p ddr = get_data_dependence (rdg, src_dr, dst_dr);
  
!   /* Classify as memcpy if no dependence between load and store.  */
    if (DDR_ARE_DEPENDENT (ddr) == chrec_known)
      {
        partition->builtin = alloc_builtin (dst_dr, src_dr, base, src_base, size);
!       partition->kind = PKIND_MEMCPY;
        return;
      }
  
--- 1772,1782 ----
    /* Now check that if there is a dependence.  */
    ddr_p ddr = get_data_dependence (rdg, src_dr, dst_dr);
  
!   /* Classify as memmove if no dependence between load and store.  */
    if (DDR_ARE_DEPENDENT (ddr) == chrec_known)
      {
        partition->builtin = alloc_builtin (dst_dr, src_dr, base, src_base, size);
!       partition->kind = PKIND_MEMMOVE;
        return;
      }
  
*************** loop_distribution::distribute_loop (clas
*** 3151,3161 ****
  void loop_distribution::bb_top_order_init (void)
  {
    int rpo_num;
!   int *rpo = XNEWVEC (int, last_basic_block_for_fn (cfun));
  
    bb_top_order_index = XNEWVEC (int, last_basic_block_for_fn (cfun));
    bb_top_order_index_size = last_basic_block_for_fn (cfun);
!   rpo_num = pre_and_rev_post_order_compute_fn (cfun, NULL, rpo, true);
    for (int i = 0; i < rpo_num; i++)
      bb_top_order_index[rpo[i]] = i;
  
--- 3164,3182 ----
  void loop_distribution::bb_top_order_init (void)
  {
    int rpo_num;
!   int *rpo = XNEWVEC (int, n_basic_blocks_for_fn (cfun) - NUM_FIXED_BLOCKS);
!   edge entry = single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun));
!   bitmap exit_bbs = BITMAP_ALLOC (NULL);
  
    bb_top_order_index = XNEWVEC (int, last_basic_block_for_fn (cfun));
    bb_top_order_index_size = last_basic_block_for_fn (cfun);
! 
!   entry->flags &= ~EDGE_DFS_BACK;
!   bitmap_set_bit (exit_bbs, EXIT_BLOCK);
!   rpo_num = rev_post_order_and_mark_dfs_back_seme (cfun, entry, exit_bbs, true,
! 						   rpo, NULL);
!   BITMAP_FREE (exit_bbs);
! 
    for (int i = 0; i < rpo_num; i++)
      bb_top_order_index[rpo[i]] = i;
  
*************** find_seed_stmts_for_distribution (class
*** 3181,3186 ****
--- 3202,3217 ----
    /* Initialize the worklist with stmts we seed the partitions with.  */
    for (unsigned i = 0; i < loop->num_nodes; ++i)
      {
+       /* In irreducible sub-regions we don't know how to redirect
+ 	 conditions, so fail.  See PR100492.  */
+       if (bbs[i]->flags & BB_IRREDUCIBLE_LOOP)
+ 	{
+ 	  if (dump_file && (dump_flags & TDF_DETAILS))
+ 	    fprintf (dump_file, "loop %d contains an irreducible region.\n",
+ 		     loop->num);
+ 	  work_list->truncate (0);
+ 	  break;
+ 	}
        for (gphi_iterator gsi = gsi_start_phis (bbs[i]);
  	   !gsi_end_p (gsi); gsi_next (&gsi))
  	{
diff -Nrcpad gcc-10.3.0/gcc/tree-nested.c gcc-10.4.0/gcc/tree-nested.c
*** gcc-10.3.0/gcc/tree-nested.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-nested.c	Tue Jun 28 08:54:30 2022
*************** get_frame_field (struct nesting_info *in
*** 933,938 ****
--- 933,939 ----
      }
  
    x = build3 (COMPONENT_REF, TREE_TYPE (field), x, field, NULL_TREE);
+   TREE_THIS_VOLATILE (x) = TREE_THIS_VOLATILE (field);
    return x;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/tree-nrv.c gcc-10.4.0/gcc/tree-nrv.c
*** gcc-10.3.0/gcc/tree-nrv.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-nrv.c	Tue Jun 28 08:54:30 2022
*************** pass_nrv::execute (function *fun)
*** 236,254 ****
        fprintf (dump_file, "\n");
      }
  
-   /* At this point we know that all the return statements return the
-      same local which has suitable attributes for NRV.   Copy debugging
-      information from FOUND to RESULT if it will be useful.  But don't set
-      DECL_ABSTRACT_ORIGIN to point at another function.  */
-   if (!DECL_IGNORED_P (found)
-       && !(DECL_ABSTRACT_ORIGIN (found)
- 	   && DECL_CONTEXT (DECL_ABSTRACT_ORIGIN (found)) != current_function_decl))
-     {
-       DECL_NAME (result) = DECL_NAME (found);
-       DECL_SOURCE_LOCATION (result) = DECL_SOURCE_LOCATION (found);
-       DECL_ABSTRACT_ORIGIN (result) = DECL_ABSTRACT_ORIGIN (found);
-     }
- 
    TREE_ADDRESSABLE (result) |= TREE_ADDRESSABLE (found);
  
    /* Now walk through the function changing all references to VAR to be
--- 236,241 ----
diff -Nrcpad gcc-10.3.0/gcc/tree-predcom.c gcc-10.4.0/gcc/tree-predcom.c
*** gcc-10.3.0/gcc/tree-predcom.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-predcom.c	Tue Jun 28 08:54:30 2022
*************** static gphi *
*** 1254,1260 ****
  find_looparound_phi (class loop *loop, dref ref, dref root)
  {
    tree name, init, init_ref;
-   gphi *phi = NULL;
    gimple *init_stmt;
    edge latch = loop_latch_edge (loop);
    struct data_reference init_dr;
--- 1254,1259 ----
*************** find_looparound_phi (class loop *loop, d
*** 1272,1285 ****
    if (!name)
      return NULL;
  
    for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
      {
!       phi = psi.phi ();
!       if (PHI_ARG_DEF_FROM_EDGE (phi, latch) == name)
  	break;
      }
! 
!   if (gsi_end_p (psi))
      return NULL;
  
    init = PHI_ARG_DEF_FROM_EDGE (phi, loop_preheader_edge (loop));
--- 1271,1289 ----
    if (!name)
      return NULL;
  
+   tree entry_vuse = NULL_TREE;
+   gphi *phi = NULL;
    for (psi = gsi_start_phis (loop->header); !gsi_end_p (psi); gsi_next (&psi))
      {
!       gphi *p = psi.phi ();
!       if (PHI_ARG_DEF_FROM_EDGE (p, latch) == name)
! 	phi = p;
!       else if (virtual_operand_p (gimple_phi_result (p)))
! 	entry_vuse = PHI_ARG_DEF_FROM_EDGE (p, loop_preheader_edge (loop));
!       if (phi && entry_vuse)
  	break;
      }
!   if (!phi || !entry_vuse)
      return NULL;
  
    init = PHI_ARG_DEF_FROM_EDGE (phi, loop_preheader_edge (loop));
*************** find_looparound_phi (class loop *loop, d
*** 1307,1312 ****
--- 1311,1340 ----
    if (!valid_initializer_p (&init_dr, ref->distance + 1, root->ref))
      return NULL;
  
+   /* Make sure nothing clobbers the location we re-use the initial value
+      from.  */
+   if (entry_vuse != gimple_vuse (init_stmt))
+     {
+       ao_ref ref;
+       ao_ref_init (&ref, init_ref);
+       unsigned limit = param_sccvn_max_alias_queries_per_access;
+       tree vdef = entry_vuse;
+       do
+ 	{
+ 	  gimple *def = SSA_NAME_DEF_STMT (vdef);
+ 	  if (limit-- == 0 || gimple_code (def) == GIMPLE_PHI)
+ 	    return NULL;
+ 	  if (stmt_may_clobber_ref_p_1 (def, &ref))
+ 	    /* When the stmt is an assign to init_ref we could in theory
+ 	       use its RHS for the initial value of the looparound PHI
+ 	       we replace in prepare_initializers_chain, but we have
+ 	       no convenient place to store this info at the moment.  */
+ 	    return NULL;
+ 	  vdef = gimple_vuse (def);
+ 	}
+       while (vdef != gimple_vuse (init_stmt));
+     }
+ 
    return phi;
  }
  
diff -Nrcpad gcc-10.3.0/gcc/tree-sra.c gcc-10.4.0/gcc/tree-sra.c
*** gcc-10.3.0/gcc/tree-sra.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-sra.c	Tue Jun 28 08:54:30 2022
*************** totally_scalarize_subtree (struct access
*** 3265,3270 ****
--- 3265,3272 ----
  	      continue;
  
  	    HOST_WIDE_INT pos = root->offset + int_bit_position (fld);
+ 	    if (pos + fsize > root->offset + root->size)
+ 	      return false;
  	    enum total_sra_field_state
  	      state = total_should_skip_creating_access (root,
  							 &last_seen_sibling,
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-dom.c gcc-10.4.0/gcc/tree-ssa-dom.c
*** gcc-10.3.0/gcc/tree-ssa-dom.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-dom.c	Tue Jun 28 08:54:30 2022
*************** pass_dominator::execute (function *fun)
*** 695,701 ****
       gcc.dg/tree-ssa/pr21417.c can't be threaded if loop preheader is
       missing.  We should improve jump threading in future then
       LOOPS_HAVE_PREHEADERS won't be needed here.  */
!   loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES);
  
    /* Initialize the value-handle array.  */
    threadedge_initialize_values ();
--- 695,702 ----
       gcc.dg/tree-ssa/pr21417.c can't be threaded if loop preheader is
       missing.  We should improve jump threading in future then
       LOOPS_HAVE_PREHEADERS won't be needed here.  */
!   loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES
! 		       | LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS);
  
    /* Initialize the value-handle array.  */
    threadedge_initialize_values ();
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-forwprop.c gcc-10.4.0/gcc/tree-ssa-forwprop.c
*** gcc-10.3.0/gcc/tree-ssa-forwprop.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-forwprop.c	Tue Jun 28 08:54:30 2022
*************** simplify_vector_constructor (gimple_stmt
*** 2403,2408 ****
--- 2403,2417 ----
  			 ? VEC_UNPACK_FLOAT_HI_EXPR
  			 : VEC_UNPACK_HI_EXPR);
  
+ 	  /* Conversions between DFP and FP have no special tree code
+ 	     but we cannot handle those since all relevant vector conversion
+ 	     optabs only have a single mode.  */
+ 	  if (CONVERT_EXPR_CODE_P (conv_code)
+ 	      && FLOAT_TYPE_P (TREE_TYPE (type))
+ 	      && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (type))
+ 		  != DECIMAL_FLOAT_TYPE_P (TREE_TYPE (conv_src_type))))
+ 	    return false;
+ 
  	  if (CONVERT_EXPR_CODE_P (conv_code)
  	      && (2 * TYPE_PRECISION (TREE_TYPE (TREE_TYPE (orig[0])))
  		  == TYPE_PRECISION (TREE_TYPE (type)))
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-loop-im.c gcc-10.4.0/gcc/tree-ssa-loop-im.c
*** gcc-10.3.0/gcc/tree-ssa-loop-im.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-loop-im.c	Tue Jun 28 08:54:30 2022
*************** move_computations_worker (basic_block bb
*** 1170,1183 ****
  					  COND_EXPR, t, arg0, arg1);
  	  todo |= TODO_cleanup_cfg;
  	}
!       if (INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_lhs (new_stmt)))
! 	  && (!ALWAYS_EXECUTED_IN (bb)
! 	      || (ALWAYS_EXECUTED_IN (bb) != level
! 		  && !flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level))))
! 	{
! 	  tree lhs = gimple_assign_lhs (new_stmt);
! 	  SSA_NAME_RANGE_INFO (lhs) = NULL;
! 	}
        gsi_insert_on_edge (loop_preheader_edge (level), new_stmt);
        remove_phi_node (&bsi, false);
      }
--- 1170,1179 ----
  					  COND_EXPR, t, arg0, arg1);
  	  todo |= TODO_cleanup_cfg;
  	}
!       if (!ALWAYS_EXECUTED_IN (bb)
! 	  || (ALWAYS_EXECUTED_IN (bb) != level
! 	      && !flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level)))
! 	reset_flow_sensitive_info (gimple_assign_lhs (new_stmt));
        gsi_insert_on_edge (loop_preheader_edge (level), new_stmt);
        remove_phi_node (&bsi, false);
      }
*************** move_computations_worker (basic_block bb
*** 1240,1253 ****
        gsi_remove (&bsi, false);
        if (gimple_has_lhs (stmt)
  	  && TREE_CODE (gimple_get_lhs (stmt)) == SSA_NAME
- 	  && INTEGRAL_TYPE_P (TREE_TYPE (gimple_get_lhs (stmt)))
  	  && (!ALWAYS_EXECUTED_IN (bb)
  	      || !(ALWAYS_EXECUTED_IN (bb) == level
  		   || flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level))))
! 	{
! 	  tree lhs = gimple_get_lhs (stmt);
! 	  SSA_NAME_RANGE_INFO (lhs) = NULL;
! 	}
        /* In case this is a stmt that is not unconditionally executed
           when the target loop header is executed and the stmt may
  	 invoke undefined integer or pointer overflow rewrite it to
--- 1236,1245 ----
        gsi_remove (&bsi, false);
        if (gimple_has_lhs (stmt)
  	  && TREE_CODE (gimple_get_lhs (stmt)) == SSA_NAME
  	  && (!ALWAYS_EXECUTED_IN (bb)
  	      || !(ALWAYS_EXECUTED_IN (bb) == level
  		   || flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level))))
! 	reset_flow_sensitive_info (gimple_get_lhs (stmt));
        /* In case this is a stmt that is not unconditionally executed
           when the target loop header is executed and the stmt may
  	 invoke undefined integer or pointer overflow rewrite it to
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-math-opts.c gcc-10.4.0/gcc/tree-ssa-math-opts.c
*** gcc-10.3.0/gcc/tree-ssa-math-opts.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-math-opts.c	Tue Jun 28 08:54:30 2022
*************** powi_cost (HOST_WIDE_INT n)
*** 1328,1334 ****
      return 0;
  
    /* Ignore the reciprocal when calculating the cost.  */
!   val = (n < 0) ? -n : n;
  
    /* Initialize the exponent cache.  */
    memset (cache, 0, POWI_TABLE_SIZE * sizeof (bool));
--- 1328,1334 ----
      return 0;
  
    /* Ignore the reciprocal when calculating the cost.  */
!   val = absu_hwi (n);
  
    /* Initialize the exponent cache.  */
    memset (cache, 0, POWI_TABLE_SIZE * sizeof (bool));
*************** powi_cost (HOST_WIDE_INT n)
*** 1361,1367 ****
  
  static tree
  powi_as_mults_1 (gimple_stmt_iterator *gsi, location_t loc, tree type,
! 		 HOST_WIDE_INT n, tree *cache)
  {
    tree op0, op1, ssa_target;
    unsigned HOST_WIDE_INT digit;
--- 1361,1367 ----
  
  static tree
  powi_as_mults_1 (gimple_stmt_iterator *gsi, location_t loc, tree type,
! 		 unsigned HOST_WIDE_INT n, tree *cache)
  {
    tree op0, op1, ssa_target;
    unsigned HOST_WIDE_INT digit;
*************** powi_as_mults (gimple_stmt_iterator *gsi
*** 1414,1420 ****
    memset (cache, 0,  sizeof (cache));
    cache[1] = arg0;
  
!   result = powi_as_mults_1 (gsi, loc, type, (n < 0) ? -n : n, cache);
    if (n >= 0)
      return result;
  
--- 1414,1420 ----
    memset (cache, 0,  sizeof (cache));
    cache[1] = arg0;
  
!   result = powi_as_mults_1 (gsi, loc, type, absu_hwi (n), cache);
    if (n >= 0)
      return result;
  
*************** static tree
*** 1438,1448 ****
  gimple_expand_builtin_powi (gimple_stmt_iterator *gsi, location_t loc, 
  			    tree arg0, HOST_WIDE_INT n)
  {
!   /* Avoid largest negative number.  */
!   if (n != -n
!       && ((n >= -1 && n <= 2)
! 	  || (optimize_function_for_speed_p (cfun)
! 	      && powi_cost (n) <= POWI_MAX_MULTS)))
      return powi_as_mults (gsi, loc, arg0, n);
  
    return NULL_TREE;
--- 1438,1446 ----
  gimple_expand_builtin_powi (gimple_stmt_iterator *gsi, location_t loc, 
  			    tree arg0, HOST_WIDE_INT n)
  {
!   if ((n >= -1 && n <= 2)
!       || (optimize_function_for_speed_p (cfun)
! 	  && powi_cost (n) <= POWI_MAX_MULTS))
      return powi_as_mults (gsi, loc, arg0, n);
  
    return NULL_TREE;
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-phiopt.c gcc-10.4.0/gcc/tree-ssa-phiopt.c
*** gcc-10.3.0/gcc/tree-ssa-phiopt.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-phiopt.c	Tue Jun 28 08:54:30 2022
*************** factor_out_conditional_conversion (edge
*** 465,470 ****
--- 465,473 ----
        if (!is_gimple_reg_type (TREE_TYPE (new_arg0)))
  	return NULL;
      }
+   if (TREE_CODE (new_arg0) == SSA_NAME
+       && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_arg0))
+     return NULL;
  
    if (TREE_CODE (arg1) == SSA_NAME)
      {
*************** factor_out_conditional_conversion (edge
*** 479,484 ****
--- 482,490 ----
        new_arg1 = gimple_assign_rhs1 (arg1_def_stmt);
        if (convert_code == VIEW_CONVERT_EXPR)
  	new_arg1 = TREE_OPERAND (new_arg1, 0);
+       if (TREE_CODE (new_arg1) == SSA_NAME
+ 	  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (new_arg1))
+ 	return NULL;
      }
    else
      {
*************** conditional_replacement (basic_block con
*** 764,772 ****
    if ((integer_zerop (arg0) && integer_onep (arg1))
        || (integer_zerop (arg1) && integer_onep (arg0)))
      neg = false;
    else if ((integer_zerop (arg0) && integer_all_onesp (arg1))
  	   || (integer_zerop (arg1) && integer_all_onesp (arg0)))
!     neg = true;
    else
      return false;
  
--- 770,781 ----
    if ((integer_zerop (arg0) && integer_onep (arg1))
        || (integer_zerop (arg1) && integer_onep (arg0)))
      neg = false;
+   /* For signed one bit types, the negation is not needed and
+      should be avoided and is the same as 1 case for non-signed
+      one bit types.  */
    else if ((integer_zerop (arg0) && integer_all_onesp (arg1))
  	   || (integer_zerop (arg1) && integer_all_onesp (arg0)))
!     neg = TYPE_PRECISION (TREE_TYPE (arg0)) != 1;
    else
      return false;
  
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-pre.c gcc-10.4.0/gcc/tree-ssa-pre.c
*** gcc-10.3.0/gcc/tree-ssa-pre.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-pre.c	Tue Jun 28 08:54:30 2022
*************** prune_clobbered_mems (bitmap_set_t set,
*** 1980,1985 ****
--- 1980,1992 ----
  			  && value_dies_in_block_x (expr, block))))
  		to_remove = i;
  	    }
+ 	  /* If the REFERENCE may trap make sure the block does not contain
+ 	     a possible exit point.
+ 	     ???  This is overly conservative if we translate AVAIL_OUT
+ 	     as the available expression might be after the exit point.  */
+ 	  if (BB_MAY_NOTRETURN (block)
+ 	      && vn_reference_may_trap (ref))
+ 	    to_remove = i;
  	}
        else if (expr->kind == NARY)
  	{
*************** do_pre_regular_insertion (basic_block bl
*** 3312,3318 ****
  	  /* If all edges produce the same value and that value is
  	     an invariant, then the PHI has the same value on all
  	     edges.  Note this.  */
! 	  else if (!cant_insert && all_same)
  	    {
  	      gcc_assert (edoubleprime->kind == CONSTANT
  			  || edoubleprime->kind == NAME);
--- 3319,3329 ----
  	  /* If all edges produce the same value and that value is
  	     an invariant, then the PHI has the same value on all
  	     edges.  Note this.  */
! 	  else if (!cant_insert
! 		   && all_same
! 		   && (edoubleprime->kind != NAME
! 		       || !SSA_NAME_OCCURS_IN_ABNORMAL_PHI
! 			     (PRE_EXPR_NAME (edoubleprime))))
  	    {
  	      gcc_assert (edoubleprime->kind == CONSTANT
  			  || edoubleprime->kind == NAME);
*************** compute_avail (void)
*** 4034,4039 ****
--- 4045,4060 ----
  		      if (ref->set == set
  			  || alias_set_subset_of (set, ref->set))
  			;
+ 		      else if (ref1->opcode != ref2->opcode
+ 			       || (ref1->opcode != MEM_REF
+ 				   && ref1->opcode != TARGET_MEM_REF))
+ 			{
+ 			  /* With mismatching base opcodes or bases
+ 			     other than MEM_REF or TARGET_MEM_REF we
+ 			     can't do any easy TBAA adjustment.  */
+ 			  operands.release ();
+ 			  continue;
+ 			}
  		      else if (alias_set_subset_of (ref->set, set))
  			{
  			  ref->set = set;
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-propagate.c gcc-10.4.0/gcc/tree-ssa-propagate.c
*** gcc-10.3.0/gcc/tree-ssa-propagate.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-propagate.c	Tue Jun 28 08:54:30 2022
*************** substitute_and_fold_engine::substitute_a
*** 1254,1263 ****
  }
  
  
! /* Return true if we may propagate ORIG into DEST, false otherwise.  */
  
  bool
! may_propagate_copy (tree dest, tree orig)
  {
    tree type_d = TREE_TYPE (dest);
    tree type_o = TREE_TYPE (orig);
--- 1254,1265 ----
  }
  
  
! /* Return true if we may propagate ORIG into DEST, false otherwise.
!    If DEST_NOT_PHI_ARG_P is true then assume the propagation does
!    not happen into a PHI argument which relaxes some constraints.  */
  
  bool
! may_propagate_copy (tree dest, tree orig, bool dest_not_phi_arg_p)
  {
    tree type_d = TREE_TYPE (dest);
    tree type_o = TREE_TYPE (orig);
*************** may_propagate_copy (tree dest, tree orig
*** 1277,1284 ****
  	   && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig))
      return false;
    /* Similarly if DEST flows in from an abnormal edge then the copy cannot be
!      propagated.  */
!   else if (TREE_CODE (dest) == SSA_NAME
  	   && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (dest))
      return false;
  
--- 1279,1288 ----
  	   && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (orig))
      return false;
    /* Similarly if DEST flows in from an abnormal edge then the copy cannot be
!      propagated.  If we know we do not propagate into a PHI argument this
!      does not apply.  */
!   else if (!dest_not_phi_arg_p
! 	   && TREE_CODE (dest) == SSA_NAME
  	   && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (dest))
      return false;
  
*************** may_propagate_copy_into_stmt (gimple *de
*** 1312,1320 ****
       for the expression, so we delegate to may_propagate_copy.  */
  
    if (gimple_assign_single_p (dest))
!     return may_propagate_copy (gimple_assign_rhs1 (dest), orig);
    else if (gswitch *dest_swtch = dyn_cast <gswitch *> (dest))
!     return may_propagate_copy (gimple_switch_index (dest_swtch), orig);
  
    /* In other cases, the expression is not materialized, so there
       is no destination to pass to may_propagate_copy.  On the other
--- 1316,1324 ----
       for the expression, so we delegate to may_propagate_copy.  */
  
    if (gimple_assign_single_p (dest))
!     return may_propagate_copy (gimple_assign_rhs1 (dest), orig, true);
    else if (gswitch *dest_swtch = dyn_cast <gswitch *> (dest))
!     return may_propagate_copy (gimple_switch_index (dest_swtch), orig, true);
  
    /* In other cases, the expression is not materialized, so there
       is no destination to pass to may_propagate_copy.  On the other
*************** may_propagate_copy_into_asm (tree dest A
*** 1352,1376 ****
  }
  
  
! /* Common code for propagate_value and replace_exp.
  
!    Replace use operand OP_P with VAL.  FOR_PROPAGATION indicates if the
!    replacement is done to propagate a value or not.  */
  
! static void
! replace_exp_1 (use_operand_p op_p, tree val,
!     	       bool for_propagation ATTRIBUTE_UNUSED)
! {
!   if (flag_checking)
!     {
!       tree op = USE_FROM_PTR (op_p);
!       gcc_assert (!(for_propagation
! 		  && TREE_CODE (op) == SSA_NAME
! 		  && TREE_CODE (val) == SSA_NAME
! 		  && !may_propagate_copy (op, val)));
!     }
  
!   if (TREE_CODE (val) == SSA_NAME)
      SET_USE (op_p, val);
    else
      SET_USE (op_p, unshare_expr (val));
--- 1356,1374 ----
  }
  
  
! /* Replace *OP_P with value VAL (assumed to be a constant or another SSA_NAME).
  
!    Use this version when not const/copy propagating values.  For example,
!    PRE uses this version when building expressions as they would appear
!    in specific blocks taking into account actions of PHI nodes.
  
!    The statement in which an expression has been replaced should be
!    folded using fold_stmt_inplace.  */
  
! void
! replace_exp (use_operand_p op_p, tree val)
! {
!   if (TREE_CODE (val) == SSA_NAME || CONSTANT_CLASS_P (val))
      SET_USE (op_p, val);
    else
      SET_USE (op_p, unshare_expr (val));
*************** replace_exp_1 (use_operand_p op_p, tree
*** 1386,1407 ****
  void
  propagate_value (use_operand_p op_p, tree val)
  {
!   replace_exp_1 (op_p, val, true);
! }
! 
! /* Replace *OP_P with value VAL (assumed to be a constant or another SSA_NAME).
! 
!    Use this version when not const/copy propagating values.  For example,
!    PRE uses this version when building expressions as they would appear
!    in specific blocks taking into account actions of PHI nodes.
! 
!    The statement in which an expression has been replaced should be
!    folded using fold_stmt_inplace.  */
! 
! void
! replace_exp (use_operand_p op_p, tree val)
! {
!   replace_exp_1 (op_p, val, false);
  }
  
  
--- 1384,1393 ----
  void
  propagate_value (use_operand_p op_p, tree val)
  {
!   if (flag_checking)
!     gcc_assert (may_propagate_copy (USE_FROM_PTR (op_p), val,
! 				    !is_a <gphi *> (USE_STMT (op_p))));
!   replace_exp (op_p, val);
  }
  
  
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-propagate.h gcc-10.4.0/gcc/tree-ssa-propagate.h
*** gcc-10.3.0/gcc/tree-ssa-propagate.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-propagate.h	Tue Jun 28 08:54:30 2022
*************** extern void move_ssa_defining_stmt_for_d
*** 66,72 ****
  extern bool update_gimple_call (gimple_stmt_iterator *, tree, int, ...);
  extern bool update_call_from_tree (gimple_stmt_iterator *, tree);
  extern bool stmt_makes_single_store (gimple *);
! extern bool may_propagate_copy (tree, tree);
  extern bool may_propagate_copy_into_stmt (gimple *, tree);
  extern bool may_propagate_copy_into_asm (tree);
  extern void propagate_value (use_operand_p, tree);
--- 66,72 ----
  extern bool update_gimple_call (gimple_stmt_iterator *, tree, int, ...);
  extern bool update_call_from_tree (gimple_stmt_iterator *, tree);
  extern bool stmt_makes_single_store (gimple *);
! extern bool may_propagate_copy (tree, tree, bool = false);
  extern bool may_propagate_copy_into_stmt (gimple *, tree);
  extern bool may_propagate_copy_into_asm (tree);
  extern void propagate_value (use_operand_p, tree);
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-reassoc.c gcc-10.4.0/gcc/tree-ssa-reassoc.c
*** gcc-10.3.0/gcc/tree-ssa-reassoc.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-reassoc.c	Tue Jun 28 08:54:30 2022
*************** swap_ops_for_binary_stmt (vec<operand_en
*** 4798,4814 ****
  }
  
  /* If definition of RHS1 or RHS2 dominates STMT, return the later of those
!    two definitions, otherwise return STMT.  */
  
  static inline gimple *
! find_insert_point (gimple *stmt, tree rhs1, tree rhs2)
  {
    if (TREE_CODE (rhs1) == SSA_NAME
        && reassoc_stmt_dominates_stmt_p (stmt, SSA_NAME_DEF_STMT (rhs1)))
!     stmt = SSA_NAME_DEF_STMT (rhs1);
    if (TREE_CODE (rhs2) == SSA_NAME
        && reassoc_stmt_dominates_stmt_p (stmt, SSA_NAME_DEF_STMT (rhs2)))
!     stmt = SSA_NAME_DEF_STMT (rhs2);
    return stmt;
  }
  
--- 4798,4823 ----
  }
  
  /* If definition of RHS1 or RHS2 dominates STMT, return the later of those
!    two definitions, otherwise return STMT.  Sets INSERT_BEFORE to indicate
!    whether RHS1 op RHS2 can be inserted before or needs to be inserted
!    after the returned stmt.  */
  
  static inline gimple *
! find_insert_point (gimple *stmt, tree rhs1, tree rhs2, bool &insert_before)
  {
+   insert_before = true;
    if (TREE_CODE (rhs1) == SSA_NAME
        && reassoc_stmt_dominates_stmt_p (stmt, SSA_NAME_DEF_STMT (rhs1)))
!     {
!       stmt = SSA_NAME_DEF_STMT (rhs1);
!       insert_before = false;
!     }
    if (TREE_CODE (rhs2) == SSA_NAME
        && reassoc_stmt_dominates_stmt_p (stmt, SSA_NAME_DEF_STMT (rhs2)))
!     {
!       stmt = SSA_NAME_DEF_STMT (rhs2);
!       insert_before = false;
!     }
    return stmt;
  }
  
*************** insert_stmt_before_use (gimple *stmt, gi
*** 4820,4826 ****
    gcc_assert (is_gimple_assign (stmt_to_insert));
    tree rhs1 = gimple_assign_rhs1 (stmt_to_insert);
    tree rhs2 = gimple_assign_rhs2 (stmt_to_insert);
!   gimple *insert_point = find_insert_point (stmt, rhs1, rhs2);
    gimple_stmt_iterator gsi = gsi_for_stmt (insert_point);
    gimple_set_uid (stmt_to_insert, gimple_uid (insert_point));
  
--- 4829,4836 ----
    gcc_assert (is_gimple_assign (stmt_to_insert));
    tree rhs1 = gimple_assign_rhs1 (stmt_to_insert);
    tree rhs2 = gimple_assign_rhs2 (stmt_to_insert);
!   bool insert_before;
!   gimple *insert_point = find_insert_point (stmt, rhs1, rhs2, insert_before);
    gimple_stmt_iterator gsi = gsi_for_stmt (insert_point);
    gimple_set_uid (stmt_to_insert, gimple_uid (insert_point));
  
*************** insert_stmt_before_use (gimple *stmt, gi
*** 4828,4834 ****
       the point where operand rhs1 or rhs2 is defined. In this case,
       stmt_to_insert has to be inserted afterwards. This would
       only happen when the stmt insertion point is flexible. */
!   if (stmt == insert_point)
      gsi_insert_before (&gsi, stmt_to_insert, GSI_NEW_STMT);
    else
      insert_stmt_after (stmt_to_insert, insert_point);
--- 4838,4844 ----
       the point where operand rhs1 or rhs2 is defined. In this case,
       stmt_to_insert has to be inserted afterwards. This would
       only happen when the stmt insertion point is flexible. */
!   if (insert_before)
      gsi_insert_before (&gsi, stmt_to_insert, GSI_NEW_STMT);
    else
      insert_stmt_after (stmt_to_insert, insert_point);
*************** rewrite_expr_tree (gimple *stmt, enum tr
*** 4887,4908 ****
  	     return lhs), force creation of a new SSA_NAME.  */
  	  if (changed || ((rhs1 != oe2->op || rhs2 != oe1->op) && opindex))
  	    {
  	      gimple *insert_point
! 		= find_insert_point (stmt, oe1->op, oe2->op);
  	      lhs = make_ssa_name (TREE_TYPE (lhs));
  	      stmt
  		= gimple_build_assign (lhs, rhs_code,
  				       oe1->op, oe2->op);
  	      gimple_set_uid (stmt, uid);
  	      gimple_set_visited (stmt, true);
! 	      if (insert_point == gsi_stmt (gsi))
  		gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
  	      else
  		insert_stmt_after (stmt, insert_point);
  	    }
  	  else
  	    {
! 	      gcc_checking_assert (find_insert_point (stmt, oe1->op, oe2->op)
  				   == stmt);
  	      gimple_assign_set_rhs1 (stmt, oe1->op);
  	      gimple_assign_set_rhs2 (stmt, oe2->op);
--- 4897,4921 ----
  	     return lhs), force creation of a new SSA_NAME.  */
  	  if (changed || ((rhs1 != oe2->op || rhs2 != oe1->op) && opindex))
  	    {
+ 	      bool insert_before;
  	      gimple *insert_point
! 		= find_insert_point (stmt, oe1->op, oe2->op, insert_before);
  	      lhs = make_ssa_name (TREE_TYPE (lhs));
  	      stmt
  		= gimple_build_assign (lhs, rhs_code,
  				       oe1->op, oe2->op);
  	      gimple_set_uid (stmt, uid);
  	      gimple_set_visited (stmt, true);
! 	      if (insert_before)
  		gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
  	      else
  		insert_stmt_after (stmt, insert_point);
  	    }
  	  else
  	    {
! 	      bool insert_before;
! 	      gcc_checking_assert (find_insert_point (stmt, oe1->op, oe2->op,
! 						      insert_before)
  				   == stmt);
  	      gimple_assign_set_rhs1 (stmt, oe1->op);
  	      gimple_assign_set_rhs2 (stmt, oe2->op);
*************** rewrite_expr_tree (gimple *stmt, enum tr
*** 4958,4978 ****
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
  	  unsigned int uid = gimple_uid (stmt);
! 	  gimple *insert_point = find_insert_point (stmt, new_rhs1, oe->op);
  
  	  lhs = make_ssa_name (TREE_TYPE (lhs));
  	  stmt = gimple_build_assign (lhs, rhs_code,
  				      new_rhs1, oe->op);
  	  gimple_set_uid (stmt, uid);
  	  gimple_set_visited (stmt, true);
! 	  if (insert_point == gsi_stmt (gsi))
  	    gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
  	  else
  	    insert_stmt_after (stmt, insert_point);
  	}
        else
  	{
! 	  gcc_checking_assert (find_insert_point (stmt, new_rhs1, oe->op)
  			       == stmt);
  	  gimple_assign_set_rhs1 (stmt, new_rhs1);
  	  gimple_assign_set_rhs2 (stmt, oe->op);
--- 4971,4995 ----
  	{
  	  gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
  	  unsigned int uid = gimple_uid (stmt);
! 	  bool insert_before;
! 	  gimple *insert_point = find_insert_point (stmt, new_rhs1, oe->op,
! 						    insert_before);
  
  	  lhs = make_ssa_name (TREE_TYPE (lhs));
  	  stmt = gimple_build_assign (lhs, rhs_code,
  				      new_rhs1, oe->op);
  	  gimple_set_uid (stmt, uid);
  	  gimple_set_visited (stmt, true);
! 	  if (insert_before)
  	    gsi_insert_before (&gsi, stmt, GSI_SAME_STMT);
  	  else
  	    insert_stmt_after (stmt, insert_point);
  	}
        else
  	{
! 	  bool insert_before;
! 	  gcc_checking_assert (find_insert_point (stmt, new_rhs1, oe->op,
! 						  insert_before)
  			       == stmt);
  	  gimple_assign_set_rhs1 (stmt, new_rhs1);
  	  gimple_assign_set_rhs2 (stmt, oe->op);
*************** repropagate_negates (void)
*** 5582,5591 ****
    FOR_EACH_VEC_ELT (plus_negates, i, negate)
      {
        gimple *user = get_single_immediate_use (negate);
- 
        if (!user || !is_gimple_assign (user))
  	continue;
  
        /* The negate operand can be either operand of a PLUS_EXPR
  	 (it can be the LHS if the RHS is a constant for example).
  
--- 5599,5612 ----
    FOR_EACH_VEC_ELT (plus_negates, i, negate)
      {
        gimple *user = get_single_immediate_use (negate);
        if (!user || !is_gimple_assign (user))
  	continue;
  
+       tree negateop = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (negate));
+       if (TREE_CODE (negateop) == SSA_NAME
+ 	  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (negateop))
+ 	continue;
+ 
        /* The negate operand can be either operand of a PLUS_EXPR
  	 (it can be the LHS if the RHS is a constant for example).
  
*************** repropagate_negates (void)
*** 5608,5616 ****
  	  if (gimple_assign_rhs2 (user) == negate)
  	    {
  	      tree rhs1 = gimple_assign_rhs1 (user);
- 	      tree rhs2 = gimple_assign_rhs1 (SSA_NAME_DEF_STMT (negate));
  	      gimple_stmt_iterator gsi = gsi_for_stmt (user);
! 	      gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, rhs1, rhs2);
  	      update_stmt (user);
  	    }
  	}
--- 5629,5637 ----
  	  if (gimple_assign_rhs2 (user) == negate)
  	    {
  	      tree rhs1 = gimple_assign_rhs1 (user);
  	      gimple_stmt_iterator gsi = gsi_for_stmt (user);
! 	      gimple_assign_set_rhs_with_ops (&gsi, MINUS_EXPR, rhs1,
! 					      negateop);
  	      update_stmt (user);
  	    }
  	}
*************** repropagate_negates (void)
*** 5619,5639 ****
  	  if (gimple_assign_rhs1 (user) == negate)
  	    {
  	      /* We have
! 	           x = -a
  		   y = x - b
  		 which we transform into
! 		   x = a + b
  		   y = -x .
  		 This pushes down the negate which we possibly can merge
  		 into some other operation, hence insert it into the
  		 plus_negates vector.  */
  	      gimple *feed = SSA_NAME_DEF_STMT (negate);
- 	      tree a = gimple_assign_rhs1 (feed);
  	      tree b = gimple_assign_rhs2 (user);
  	      gimple_stmt_iterator gsi = gsi_for_stmt (feed);
  	      gimple_stmt_iterator gsi2 = gsi_for_stmt (user);
  	      tree x = make_ssa_name (TREE_TYPE (gimple_assign_lhs (feed)));
! 	      gimple *g = gimple_build_assign (x, PLUS_EXPR, a, b);
  	      gsi_insert_before (&gsi2, g, GSI_SAME_STMT);
  	      gimple_assign_set_rhs_with_ops (&gsi2, NEGATE_EXPR, x);
  	      user = gsi_stmt (gsi2);
--- 5640,5659 ----
  	  if (gimple_assign_rhs1 (user) == negate)
  	    {
  	      /* We have
! 		   x = -negateop
  		   y = x - b
  		 which we transform into
! 		   x = negateop + b
  		   y = -x .
  		 This pushes down the negate which we possibly can merge
  		 into some other operation, hence insert it into the
  		 plus_negates vector.  */
  	      gimple *feed = SSA_NAME_DEF_STMT (negate);
  	      tree b = gimple_assign_rhs2 (user);
  	      gimple_stmt_iterator gsi = gsi_for_stmt (feed);
  	      gimple_stmt_iterator gsi2 = gsi_for_stmt (user);
  	      tree x = make_ssa_name (TREE_TYPE (gimple_assign_lhs (feed)));
! 	      gimple *g = gimple_build_assign (x, PLUS_EXPR, negateop, b);
  	      gsi_insert_before (&gsi2, g, GSI_SAME_STMT);
  	      gimple_assign_set_rhs_with_ops (&gsi2, NEGATE_EXPR, x);
  	      user = gsi_stmt (gsi2);
*************** repropagate_negates (void)
*** 5644,5656 ****
  	    }
  	  else
  	    {
! 	      /* Transform "x = -a; y = b - x" into "y = b + a", getting
! 	         rid of one operation.  */
! 	      gimple *feed = SSA_NAME_DEF_STMT (negate);
! 	      tree a = gimple_assign_rhs1 (feed);
  	      tree rhs1 = gimple_assign_rhs1 (user);
  	      gimple_stmt_iterator gsi = gsi_for_stmt (user);
! 	      gimple_assign_set_rhs_with_ops (&gsi, PLUS_EXPR, rhs1, a);
  	      update_stmt (gsi_stmt (gsi));
  	    }
  	}
--- 5664,5674 ----
  	    }
  	  else
  	    {
! 	      /* Transform "x = -negateop; y = b - x" into "y = b + negateop",
! 		 getting rid of one operation.  */
  	      tree rhs1 = gimple_assign_rhs1 (user);
  	      gimple_stmt_iterator gsi = gsi_for_stmt (user);
! 	      gimple_assign_set_rhs_with_ops (&gsi, PLUS_EXPR, rhs1, negateop);
  	      update_stmt (gsi_stmt (gsi));
  	    }
  	}
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-sccvn.c gcc-10.4.0/gcc/tree-ssa-sccvn.c
*** gcc-10.3.0/gcc/tree-ssa-sccvn.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-sccvn.c	Tue Jun 28 08:54:30 2022
*************** vuse_ssa_val (tree x)
*** 492,498 ****
    return x;
  }
  
! /* Similar to the above but used as callback for walk_non_aliases_vuses
     and thus should stop at unvisited VUSE to not walk across region
     boundaries.  */
  
--- 492,498 ----
    return x;
  }
  
! /* Similar to the above but used as callback for walk_non_aliased_vuses
     and thus should stop at unvisited VUSE to not walk across region
     boundaries.  */
  
*************** vn_reference_eq (const_vn_reference_t co
*** 738,743 ****
--- 738,744 ----
        vn_reference_op_t vro1, vro2;
        vn_reference_op_s tem1, tem2;
        bool deref1 = false, deref2 = false;
+       bool reverse1 = false, reverse2 = false;
        for (; vr1->operands.iterate (i, &vro1); i++)
  	{
  	  if (vro1->opcode == MEM_REF)
*************** vn_reference_eq (const_vn_reference_t co
*** 745,750 ****
--- 746,752 ----
  	  /* Do not look through a storage order barrier.  */
  	  else if (vro1->opcode == VIEW_CONVERT_EXPR && vro1->reverse)
  	    return false;
+ 	  reverse1 |= vro1->reverse;
  	  if (known_eq (vro1->off, -1))
  	    break;
  	  off1 += vro1->off;
*************** vn_reference_eq (const_vn_reference_t co
*** 756,766 ****
  	  /* Do not look through a storage order barrier.  */
  	  else if (vro2->opcode == VIEW_CONVERT_EXPR && vro2->reverse)
  	    return false;
  	  if (known_eq (vro2->off, -1))
  	    break;
  	  off2 += vro2->off;
  	}
!       if (maybe_ne (off1, off2))
  	return false;
        if (deref1 && vro1->opcode == ADDR_EXPR)
  	{
--- 758,769 ----
  	  /* Do not look through a storage order barrier.  */
  	  else if (vro2->opcode == VIEW_CONVERT_EXPR && vro2->reverse)
  	    return false;
+ 	  reverse2 |= vro2->reverse;
  	  if (known_eq (vro2->off, -1))
  	    break;
  	  off2 += vro2->off;
  	}
!       if (maybe_ne (off1, off2) || reverse1 != reverse2)
  	return false;
        if (deref1 && vro1->opcode == ADDR_EXPR)
  	{
*************** copy_reference_ops_from_ref (tree ref, v
*** 857,862 ****
--- 860,868 ----
  	  temp.type = NULL_TREE;
  	  temp.op0 = TREE_OPERAND (ref, 1);
  	  temp.op1 = TREE_OPERAND (ref, 2);
+ 	  temp.reverse = (AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (ref, 0)))
+ 			  && TYPE_REVERSE_STORAGE_ORDER
+ 			       (TREE_TYPE (TREE_OPERAND (ref, 0))));
  	  {
  	    tree this_offset = component_ref_field_offset (ref);
  	    if (this_offset
*************** copy_reference_ops_from_ref (tree ref, v
*** 905,910 ****
--- 911,919 ----
  				       * vn_ref_op_align_unit (&temp));
  		off.to_shwi (&temp.off);
  	      }
+ 	    temp.reverse = (AGGREGATE_TYPE_P (TREE_TYPE (TREE_OPERAND (ref, 0)))
+ 			    && TYPE_REVERSE_STORAGE_ORDER
+ 				 (TREE_TYPE (TREE_OPERAND (ref, 0))));
  	  }
  	  break;
  	case VAR_DECL:
*************** contains_storage_order_barrier_p (vec<vn
*** 1518,1530 ****
    return false;
  }
  
  /* Transform any SSA_NAME's in a vector of vn_reference_op_s
     structures into their value numbers.  This is done in-place, and
     the vector passed in is returned.  *VALUEIZED_ANYTHING will specify
     whether any operands were valueized.  */
  
! static vec<vn_reference_op_s> 
! valueize_refs_1 (vec<vn_reference_op_s> orig, bool *valueized_anything,
  		 bool with_avail = false)
  {
    vn_reference_op_t vro;
--- 1527,1559 ----
    return false;
  }
  
+ /* Return true if OPS represent an access with reverse storage order.  */
+ 
+ static bool
+ reverse_storage_order_for_component_p (vec<vn_reference_op_s> ops)
+ {
+   unsigned i = 0;
+   if (ops[i].opcode == REALPART_EXPR || ops[i].opcode == IMAGPART_EXPR)
+     ++i;
+   switch (ops[i].opcode)
+     {
+     case ARRAY_REF:
+     case COMPONENT_REF:
+     case BIT_FIELD_REF:
+     case MEM_REF:
+       return ops[i].reverse;
+     default:
+       return false;
+     }
+ }
+ 
  /* Transform any SSA_NAME's in a vector of vn_reference_op_s
     structures into their value numbers.  This is done in-place, and
     the vector passed in is returned.  *VALUEIZED_ANYTHING will specify
     whether any operands were valueized.  */
  
! static void
! valueize_refs_1 (vec<vn_reference_op_s> *orig, bool *valueized_anything,
  		 bool with_avail = false)
  {
    vn_reference_op_t vro;
*************** valueize_refs_1 (vec<vn_reference_op_s>
*** 1532,1538 ****
  
    *valueized_anything = false;
  
!   FOR_EACH_VEC_ELT (orig, i, vro)
      {
        if (vro->opcode == SSA_NAME
  	  || (vro->op0 && TREE_CODE (vro->op0) == SSA_NAME))
--- 1561,1567 ----
  
    *valueized_anything = false;
  
!   FOR_EACH_VEC_ELT (*orig, i, vro)
      {
        if (vro->opcode == SSA_NAME
  	  || (vro->op0 && TREE_CODE (vro->op0) == SSA_NAME))
*************** valueize_refs_1 (vec<vn_reference_op_s>
*** 1571,1586 ****
        if (i > 0
  	  && vro->op0
  	  && TREE_CODE (vro->op0) == ADDR_EXPR
! 	  && orig[i - 1].opcode == MEM_REF)
  	{
! 	  if (vn_reference_fold_indirect (&orig, &i))
  	    *valueized_anything = true;
  	}
        else if (i > 0
  	       && vro->opcode == SSA_NAME
! 	       && orig[i - 1].opcode == MEM_REF)
  	{
! 	  if (vn_reference_maybe_forwprop_address (&orig, &i))
  	    *valueized_anything = true;
  	}
        /* If it transforms a non-constant ARRAY_REF into a constant
--- 1600,1615 ----
        if (i > 0
  	  && vro->op0
  	  && TREE_CODE (vro->op0) == ADDR_EXPR
! 	  && (*orig)[i - 1].opcode == MEM_REF)
  	{
! 	  if (vn_reference_fold_indirect (orig, &i))
  	    *valueized_anything = true;
  	}
        else if (i > 0
  	       && vro->opcode == SSA_NAME
! 	       && (*orig)[i - 1].opcode == MEM_REF)
  	{
! 	  if (vn_reference_maybe_forwprop_address (orig, &i))
  	    *valueized_anything = true;
  	}
        /* If it transforms a non-constant ARRAY_REF into a constant
*************** valueize_refs_1 (vec<vn_reference_op_s>
*** 1598,1612 ****
  	  off.to_shwi (&vro->off);
  	}
      }
- 
-   return orig;
  }
  
! static vec<vn_reference_op_s> 
! valueize_refs (vec<vn_reference_op_s> orig)
  {
    bool tem;
!   return valueize_refs_1 (orig, &tem);
  }
  
  static vec<vn_reference_op_s> shared_lookup_references;
--- 1627,1639 ----
  	  off.to_shwi (&vro->off);
  	}
      }
  }
  
! static void
! valueize_refs (vec<vn_reference_op_s> *orig)
  {
    bool tem;
!   valueize_refs_1 (orig, &tem);
  }
  
  static vec<vn_reference_op_s> shared_lookup_references;
*************** valueize_shared_reference_ops_from_ref (
*** 1623,1630 ****
      return vNULL;
    shared_lookup_references.truncate (0);
    copy_reference_ops_from_ref (ref, &shared_lookup_references);
!   shared_lookup_references = valueize_refs_1 (shared_lookup_references,
! 					      valueized_anything);
    return shared_lookup_references;
  }
  
--- 1650,1656 ----
      return vNULL;
    shared_lookup_references.truncate (0);
    copy_reference_ops_from_ref (ref, &shared_lookup_references);
!   valueize_refs_1 (&shared_lookup_references, valueized_anything);
    return shared_lookup_references;
  }
  
*************** valueize_shared_reference_ops_from_call
*** 1639,1645 ****
      return vNULL;
    shared_lookup_references.truncate (0);
    copy_reference_ops_from_call (call, &shared_lookup_references);
!   shared_lookup_references = valueize_refs (shared_lookup_references);
    return shared_lookup_references;
  }
  
--- 1665,1671 ----
      return vNULL;
    shared_lookup_references.truncate (0);
    copy_reference_ops_from_call (call, &shared_lookup_references);
!   valueize_refs (&shared_lookup_references);
    return shared_lookup_references;
  }
  
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 2490,2496 ****
        if (*disambiguate_only <= TR_VALUEIZE_AND_DISAMBIGUATE)
  	{
  	  copy_reference_ops_from_ref (lhs, &lhs_ops);
! 	  lhs_ops = valueize_refs_1 (lhs_ops, &valueized_anything, true);
  	}
        vn_context_bb = saved_rpo_bb;
        ao_ref_init (&lhs_ref, lhs);
--- 2516,2522 ----
        if (*disambiguate_only <= TR_VALUEIZE_AND_DISAMBIGUATE)
  	{
  	  copy_reference_ops_from_ref (lhs, &lhs_ops);
! 	  valueize_refs_1 (&lhs_ops, &valueized_anything, true);
  	}
        vn_context_bb = saved_rpo_bb;
        ao_ref_init (&lhs_ref, lhs);
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 2835,2840 ****
--- 2861,2867 ----
       routines to extract the assigned bits.  */
    else if (known_eq (ref->size, maxsize)
  	   && is_gimple_reg_type (vr->type)
+ 	   && !reverse_storage_order_for_component_p (vr->operands)
  	   && !contains_storage_order_barrier_p (vr->operands)
  	   && gimple_assign_single_p (def_stmt)
  	   && CHAR_BIT == 8
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 2986,2991 ****
--- 3013,3019 ----
       to access pieces from or we can combine to a larger entity.  */
    else if (known_eq (ref->size, maxsize)
  	   && is_gimple_reg_type (vr->type)
+ 	   && !reverse_storage_order_for_component_p (vr->operands)
  	   && !contains_storage_order_barrier_p (vr->operands)
  	   && gimple_assign_single_p (def_stmt)
  	   && TREE_CODE (gimple_assign_rhs1 (def_stmt)) == SSA_NAME)
*************** vn_reference_lookup_3 (ao_ref *ref, tree
*** 3167,3173 ****
  	vr->operands.truncate (i + 1 + rhs.length ());
        FOR_EACH_VEC_ELT (rhs, j, vro)
  	vr->operands[i + 1 + j] = *vro;
!       vr->operands = valueize_refs (vr->operands);
        if (old == shared_lookup_references)
  	shared_lookup_references = vr->operands;
        vr->hashcode = vn_reference_compute_hash (vr);
--- 3195,3201 ----
  	vr->operands.truncate (i + 1 + rhs.length ());
        FOR_EACH_VEC_ELT (rhs, j, vro)
  	vr->operands[i + 1 + j] = *vro;
!       valueize_refs (&vr->operands);
        if (old == shared_lookup_references)
  	shared_lookup_references = vr->operands;
        vr->hashcode = vn_reference_compute_hash (vr);
*************** vn_reference_lookup_pieces (tree vuse, a
*** 3460,3467 ****
  	  operands.address (),
  	  sizeof (vn_reference_op_s)
  	  * operands.length ());
!   vr1.operands = operands = shared_lookup_references
!     = valueize_refs (shared_lookup_references);
    vr1.type = type;
    vr1.set = set;
    vr1.base_set = base_set;
--- 3488,3496 ----
  	  operands.address (),
  	  sizeof (vn_reference_op_s)
  	  * operands.length ());
!   bool valueized_p;
!   valueize_refs_1 (&shared_lookup_references, &valueized_p);
!   vr1.operands = shared_lookup_references;
    vr1.type = type;
    vr1.set = set;
    vr1.base_set = base_set;
*************** vn_reference_lookup_pieces (tree vuse, a
*** 3477,3489 ****
        ao_ref r;
        unsigned limit = param_sccvn_max_alias_queries_per_access;
        vn_walk_cb_data data (&vr1, NULL_TREE, NULL, kind, true, NULL_TREE);
        if (ao_ref_init_from_vn_reference (&r, set, base_set, type,
! 					 vr1.operands))
  	*vnresult
  	  = ((vn_reference_t)
  	     walk_non_aliased_vuses (&r, vr1.vuse, true, vn_reference_lookup_2,
  				     vn_reference_lookup_3, vuse_valueize,
  				     limit, &data));
        gcc_checking_assert (vr1.operands == shared_lookup_references);
      }
  
--- 3506,3536 ----
        ao_ref r;
        unsigned limit = param_sccvn_max_alias_queries_per_access;
        vn_walk_cb_data data (&vr1, NULL_TREE, NULL, kind, true, NULL_TREE);
+       vec<vn_reference_op_s> ops_for_ref;
+       if (!valueized_p)
+ 	ops_for_ref = vr1.operands;
+       else
+ 	{
+ 	  /* For ao_ref_from_mem we have to ensure only available SSA names
+ 	     end up in base and the only convenient way to make this work
+ 	     for PRE is to re-valueize with that in mind.  */
+ 	  ops_for_ref.create (operands.length ());
+ 	  ops_for_ref.quick_grow (operands.length ());
+ 	  memcpy (ops_for_ref.address (),
+ 		  operands.address (),
+ 		  sizeof (vn_reference_op_s)
+ 		  * operands.length ());
+ 	  valueize_refs_1 (&ops_for_ref, &valueized_p, true);
+ 	}
        if (ao_ref_init_from_vn_reference (&r, set, base_set, type,
! 					 ops_for_ref))
  	*vnresult
  	  = ((vn_reference_t)
  	     walk_non_aliased_vuses (&r, vr1.vuse, true, vn_reference_lookup_2,
  				     vn_reference_lookup_3, vuse_valueize,
  				     limit, &data));
+       if (ops_for_ref != shared_lookup_references)
+ 	ops_for_ref.release ();
        gcc_checking_assert (vr1.operands == shared_lookup_references);
      }
  
*************** vn_reference_lookup (tree op, tree vuse,
*** 3512,3525 ****
  {
    vec<vn_reference_op_s> operands;
    struct vn_reference_s vr1;
!   bool valuezied_anything;
  
    if (vnresult)
      *vnresult = NULL;
  
    vr1.vuse = vuse_ssa_val (vuse);
    vr1.operands = operands
!     = valueize_shared_reference_ops_from_ref (op, &valuezied_anything);
    vr1.type = TREE_TYPE (op);
    ao_ref op_ref;
    ao_ref_init (&op_ref, op);
--- 3559,3572 ----
  {
    vec<vn_reference_op_s> operands;
    struct vn_reference_s vr1;
!   bool valueized_anything;
  
    if (vnresult)
      *vnresult = NULL;
  
    vr1.vuse = vuse_ssa_val (vuse);
    vr1.operands = operands
!     = valueize_shared_reference_ops_from_ref (op, &valueized_anything);
    vr1.type = TREE_TYPE (op);
    ao_ref op_ref;
    ao_ref_init (&op_ref, op);
*************** vn_reference_lookup (tree op, tree vuse,
*** 3535,3545 ****
        vn_reference_t wvnresult;
        ao_ref r;
        unsigned limit = param_sccvn_max_alias_queries_per_access;
        /* Make sure to use a valueized reference if we valueized anything.
           Otherwise preserve the full reference for advanced TBAA.  */
!       if (!valuezied_anything
  	  || !ao_ref_init_from_vn_reference (&r, vr1.set, vr1.base_set,
! 					     vr1.type, vr1.operands))
  	ao_ref_init (&r, op);
        vn_walk_cb_data data (&vr1, r.ref ? NULL_TREE : op,
  			    last_vuse_ptr, kind, tbaa_p, mask);
--- 3582,3599 ----
        vn_reference_t wvnresult;
        ao_ref r;
        unsigned limit = param_sccvn_max_alias_queries_per_access;
+       auto_vec<vn_reference_op_s> ops_for_ref;
+       if (valueized_anything)
+ 	{
+ 	  copy_reference_ops_from_ref (op, &ops_for_ref);
+ 	  bool tem;
+ 	  valueize_refs_1 (&ops_for_ref, &tem, true);
+ 	}
        /* Make sure to use a valueized reference if we valueized anything.
           Otherwise preserve the full reference for advanced TBAA.  */
!       if (!valueized_anything
  	  || !ao_ref_init_from_vn_reference (&r, vr1.set, vr1.base_set,
! 					     vr1.type, ops_for_ref))
  	ao_ref_init (&r, op);
        vn_walk_cb_data data (&vr1, r.ref ? NULL_TREE : op,
  			    last_vuse_ptr, kind, tbaa_p, mask);
*************** vn_reference_insert_pieces (tree vuse, a
*** 3667,3673 ****
    vr1 = XOBNEW (&vn_tables_obstack, vn_reference_s);
    vr1->value_id = value_id;
    vr1->vuse = vuse_ssa_val (vuse);
!   vr1->operands = valueize_refs (operands);
    vr1->type = type;
    vr1->punned = false;
    vr1->set = set;
--- 3721,3728 ----
    vr1 = XOBNEW (&vn_tables_obstack, vn_reference_s);
    vr1->value_id = value_id;
    vr1->vuse = vuse_ssa_val (vuse);
!   vr1->operands = operands;
!   valueize_refs (&vr1->operands);
    vr1->type = type;
    vr1->punned = false;
    vr1->set = set;
*************** vn_nary_op_insert_pieces_predicated (uns
*** 4105,4111 ****
  }
  
  static bool
! dominated_by_p_w_unex (basic_block bb1, basic_block bb2);
  
  static tree
  vn_nary_op_get_predicated_value (vn_nary_op_t vno, basic_block bb)
--- 4160,4166 ----
  }
  
  static bool
! dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool);
  
  static tree
  vn_nary_op_get_predicated_value (vn_nary_op_t vno, basic_block bb)
*************** vn_nary_op_get_predicated_value (vn_nary
*** 4114,4122 ****
      return vno->u.result;
    for (vn_pval *val = vno->u.values; val; val = val->next)
      for (unsigned i = 0; i < val->n; ++i)
!       if (dominated_by_p_w_unex (bb,
! 			  BASIC_BLOCK_FOR_FN
! 			    (cfun, val->valid_dominated_by_p[i])))
  	return val->result;
    return NULL_TREE;
  }
--- 4169,4180 ----
      return vno->u.result;
    for (vn_pval *val = vno->u.values; val; val = val->next)
      for (unsigned i = 0; i < val->n; ++i)
!       /* Do not handle backedge executability optimistically since
! 	 when figuring out whether to iterate we do not consider
! 	 changed predication.  */
!       if (dominated_by_p_w_unex
! 	    (bb, BASIC_BLOCK_FOR_FN (cfun, val->valid_dominated_by_p[i]),
! 	     false))
  	return val->result;
    return NULL_TREE;
  }
*************** vn_phi_insert (gimple *phi, tree result,
*** 4401,4410 ****
  
  
  /* Return true if BB1 is dominated by BB2 taking into account edges
!    that are not executable.  */
  
  static bool
! dominated_by_p_w_unex (basic_block bb1, basic_block bb2)
  {
    edge_iterator ei;
    edge e;
--- 4459,4469 ----
  
  
  /* Return true if BB1 is dominated by BB2 taking into account edges
!    that are not executable.  When ALLOW_BACK is false consider not
!    executable backedges as executable.  */
  
  static bool
! dominated_by_p_w_unex (basic_block bb1, basic_block bb2, bool allow_back)
  {
    edge_iterator ei;
    edge e;
*************** dominated_by_p_w_unex (basic_block bb1,
*** 4421,4427 ****
      {
        edge prede = NULL;
        FOR_EACH_EDGE (e, ei, bb1->preds)
! 	if (e->flags & EDGE_EXECUTABLE)
  	  {
  	    if (prede)
  	      {
--- 4480,4487 ----
      {
        edge prede = NULL;
        FOR_EACH_EDGE (e, ei, bb1->preds)
! 	if ((e->flags & EDGE_EXECUTABLE)
! 	    || (!allow_back && (e->flags & EDGE_DFS_BACK)))
  	  {
  	    if (prede)
  	      {
*************** dominated_by_p_w_unex (basic_block bb1,
*** 4443,4449 ****
    /* Iterate to the single executable bb2 successor.  */
    edge succe = NULL;
    FOR_EACH_EDGE (e, ei, bb2->succs)
!     if (e->flags & EDGE_EXECUTABLE)
        {
  	if (succe)
  	  {
--- 4503,4510 ----
    /* Iterate to the single executable bb2 successor.  */
    edge succe = NULL;
    FOR_EACH_EDGE (e, ei, bb2->succs)
!     if ((e->flags & EDGE_EXECUTABLE)
! 	|| (!allow_back && (e->flags & EDGE_DFS_BACK)))
        {
  	if (succe)
  	  {
*************** dominated_by_p_w_unex (basic_block bb1,
*** 4461,4467 ****
  	{
  	  FOR_EACH_EDGE (e, ei, succe->dest->preds)
  	    if (e != succe
! 		&& (e->flags & EDGE_EXECUTABLE))
  	      {
  		succe = NULL;
  		break;
--- 4522,4529 ----
  	{
  	  FOR_EACH_EDGE (e, ei, succe->dest->preds)
  	    if (e != succe
! 		&& ((e->flags & EDGE_EXECUTABLE)
! 		    || (!allow_back && (e->flags & EDGE_DFS_BACK))))
  	      {
  		succe = NULL;
  		break;
*************** eliminate_dom_walker::eliminate_stmt (ba
*** 6190,6196 ****
  	   at the definition are also available at uses.  */
  	sprime = eliminate_avail (gimple_bb (SSA_NAME_DEF_STMT (use)), use);
        if (sprime && sprime != use
! 	  && may_propagate_copy (use, sprime)
  	  /* We substitute into debug stmts to avoid excessive
  	     debug temporaries created by removed stmts, but we need
  	     to avoid doing so for inserted sprimes as we never want
--- 6252,6258 ----
  	   at the definition are also available at uses.  */
  	sprime = eliminate_avail (gimple_bb (SSA_NAME_DEF_STMT (use)), use);
        if (sprime && sprime != use
! 	  && may_propagate_copy (use, sprime, true)
  	  /* We substitute into debug stmts to avoid excessive
  	     debug temporaries created by removed stmts, but we need
  	     to avoid doing so for inserted sprimes as we never want
*************** rpo_elim::eliminate_avail (basic_block b
*** 6758,6764 ****
  	     may also be able to "pre-compute" (bits of) the next immediate
  	     (non-)dominator during the RPO walk when marking edges as
  	     executable.  */
! 	  if (dominated_by_p_w_unex (bb, abb))
  	    {
  	      tree leader = ssa_name (av->leader);
  	      /* Prevent eliminations that break loop-closed SSA.  */
--- 6820,6826 ----
  	     may also be able to "pre-compute" (bits of) the next immediate
  	     (non-)dominator during the RPO walk when marking edges as
  	     executable.  */
! 	  if (dominated_by_p_w_unex (bb, abb, true))
  	    {
  	      tree leader = ssa_name (av->leader);
  	      /* Prevent eliminations that break loop-closed SSA.  */
*************** do_rpo_vn (function *fn, edge entry, bit
*** 7351,7361 ****
      e->flags &= ~EDGE_DFS_BACK;
  
    int *rpo = XNEWVEC (int, n_basic_blocks_for_fn (fn) - NUM_FIXED_BLOCKS);
    int n = rev_post_order_and_mark_dfs_back_seme
!     (fn, entry, exit_bbs, !loops_state_satisfies_p (LOOPS_NEED_FIXUP), rpo);
!   /* rev_post_order_and_mark_dfs_back_seme fills RPO in reverse order.  */
!   for (int i = 0; i < n / 2; ++i)
!     std::swap (rpo[i], rpo[n-i-1]);
  
    if (!do_region)
      BITMAP_FREE (exit_bbs);
--- 7413,7421 ----
      e->flags &= ~EDGE_DFS_BACK;
  
    int *rpo = XNEWVEC (int, n_basic_blocks_for_fn (fn) - NUM_FIXED_BLOCKS);
+   auto_vec<std::pair<int, int> > toplevel_scc_extents;
    int n = rev_post_order_and_mark_dfs_back_seme
!     (fn, entry, exit_bbs, true, rpo, !iterate ? &toplevel_scc_extents : NULL);
  
    if (!do_region)
      BITMAP_FREE (exit_bbs);
*************** do_rpo_vn (function *fn, edge entry, bit
*** 7433,7444 ****
    vn_valueize = rpo_vn_valueize;
  
    /* Initialize the unwind state and edge/BB executable state.  */
!   bool need_max_rpo_iterate = false;
    for (int i = 0; i < n; ++i)
      {
        basic_block bb = BASIC_BLOCK_FOR_FN (fn, rpo[i]);
        rpo_state[i].visited = 0;
        rpo_state[i].max_rpo = i;
        bb->flags &= ~BB_EXECUTABLE;
        bool has_backedges = false;
        edge e;
--- 7493,7512 ----
    vn_valueize = rpo_vn_valueize;
  
    /* Initialize the unwind state and edge/BB executable state.  */
!   unsigned curr_scc = 0;
    for (int i = 0; i < n; ++i)
      {
        basic_block bb = BASIC_BLOCK_FOR_FN (fn, rpo[i]);
        rpo_state[i].visited = 0;
        rpo_state[i].max_rpo = i;
+       if (!iterate && curr_scc < toplevel_scc_extents.length ())
+ 	{
+ 	  if (i >= toplevel_scc_extents[curr_scc].first
+ 	      && i <= toplevel_scc_extents[curr_scc].second)
+ 	    rpo_state[i].max_rpo = toplevel_scc_extents[curr_scc].second;
+ 	  if (i == toplevel_scc_extents[curr_scc].second)
+ 	    curr_scc++;
+ 	}
        bb->flags &= ~BB_EXECUTABLE;
        bool has_backedges = false;
        edge e;
*************** do_rpo_vn (function *fn, edge entry, bit
*** 7450,7500 ****
  	  e->flags &= ~EDGE_EXECUTABLE;
  	  if (iterate || e == entry || (skip_entry_phis && bb == entry->dest))
  	    continue;
- 	  if (bb_to_rpo[e->src->index] > i)
- 	    {
- 	      rpo_state[i].max_rpo = MAX (rpo_state[i].max_rpo,
- 					  bb_to_rpo[e->src->index]);
- 	      need_max_rpo_iterate = true;
- 	    }
- 	  else
- 	    rpo_state[i].max_rpo
- 	      = MAX (rpo_state[i].max_rpo,
- 		     rpo_state[bb_to_rpo[e->src->index]].max_rpo);
  	}
        rpo_state[i].iterate = iterate && has_backedges;
      }
    entry->flags |= EDGE_EXECUTABLE;
    entry->dest->flags |= BB_EXECUTABLE;
  
-   /* When there are irreducible regions the simplistic max_rpo computation
-      above for the case of backedges doesn't work and we need to iterate
-      until there are no more changes.  */
-   unsigned nit = 0;
-   while (need_max_rpo_iterate)
-     {
-       nit++;
-       need_max_rpo_iterate = false;
-       for (int i = 0; i < n; ++i)
- 	{
- 	  basic_block bb = BASIC_BLOCK_FOR_FN (fn, rpo[i]);
- 	  edge e;
- 	  edge_iterator ei;
- 	  FOR_EACH_EDGE (e, ei, bb->preds)
- 	    {
- 	      if (e == entry || (skip_entry_phis && bb == entry->dest))
- 		continue;
- 	      int max_rpo = MAX (rpo_state[i].max_rpo,
- 				 rpo_state[bb_to_rpo[e->src->index]].max_rpo);
- 	      if (rpo_state[i].max_rpo != max_rpo)
- 		{
- 		  rpo_state[i].max_rpo = max_rpo;
- 		  need_max_rpo_iterate = true;
- 		}
- 	    }
- 	}
-     }
-   statistics_histogram_event (cfun, "RPO max_rpo iterations", nit);
- 
    /* As heuristic to improve compile-time we handle only the N innermost
       loops and the outermost one optimistically.  */
    if (iterate)
--- 7518,7529 ----
diff -Nrcpad gcc-10.3.0/gcc/tree-ssa-structalias.c gcc-10.4.0/gcc/tree-ssa-structalias.c
*** gcc-10.3.0/gcc/tree-ssa-structalias.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-ssa-structalias.c	Tue Jun 28 08:54:30 2022
*************** ipa_pta_execute (void)
*** 8134,8143 ****
    FOR_EACH_DEFINED_FUNCTION (node)
      {
        varinfo_t vi;
!       /* Nodes without a body are not interesting.  Especially do not
!          visit clones at this point for now - we get duplicate decls
! 	 there for inline clones at least.  */
!       if (!node->has_gimple_body_p () || node->inlined_to)
  	continue;
        node->get_body ();
  
--- 8134,8145 ----
    FOR_EACH_DEFINED_FUNCTION (node)
      {
        varinfo_t vi;
!       /* Nodes without a body in this partition are not interesting.
! 	 Especially do not visit clones at this point for now - we
! 	 get duplicate decls there for inline clones at least.  */
!       if (!node->has_gimple_body_p ()
! 	  || node->in_other_partition
! 	  || node->inlined_to)
  	continue;
        node->get_body ();
  
*************** ipa_pta_execute (void)
*** 8215,8222 ****
        struct function *func;
        basic_block bb;
  
!       /* Nodes without a body are not interesting.  */
!       if (!node->has_gimple_body_p () || node->clone_of)
  	continue;
  
        if (dump_file)
--- 8217,8226 ----
        struct function *func;
        basic_block bb;
  
!       /* Nodes without a body in this partition are not interesting.  */
!       if (!node->has_gimple_body_p ()
! 	  || node->in_other_partition
! 	  || node->clone_of)
  	continue;
  
        if (dump_file)
*************** ipa_pta_execute (void)
*** 8345,8352 ****
        unsigned i;
        basic_block bb;
  
!       /* Nodes without a body are not interesting.  */
!       if (!node->has_gimple_body_p () || node->clone_of)
  	continue;
  
        fn = DECL_STRUCT_FUNCTION (node->decl);
--- 8349,8358 ----
        unsigned i;
        basic_block bb;
  
!       /* Nodes without a body in this partition are not interesting.  */
!       if (!node->has_gimple_body_p ()
! 	  || node->in_other_partition
! 	  || node->clone_of)
  	continue;
  
        fn = DECL_STRUCT_FUNCTION (node->decl);
diff -Nrcpad gcc-10.3.0/gcc/tree-switch-conversion.c gcc-10.4.0/gcc/tree-switch-conversion.c
*** gcc-10.3.0/gcc/tree-switch-conversion.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-switch-conversion.c	Tue Jun 28 08:54:30 2022
*************** case_bit_test::cmp (const void *p1, cons
*** 1493,1499 ****
  
  void
  bit_test_cluster::emit (tree index_expr, tree index_type,
! 			tree, basic_block default_bb, location_t)
  {
    case_bit_test test[m_max_case_bit_tests] = { {} };
    unsigned int i, j, k;
--- 1493,1499 ----
  
  void
  bit_test_cluster::emit (tree index_expr, tree index_type,
! 			tree, basic_block default_bb, location_t loc)
  {
    case_bit_test test[m_max_case_bit_tests] = { {} };
    unsigned int i, j, k;
*************** bit_test_cluster::emit (tree index_expr,
*** 1587,1595 ****
    gsi = gsi_last_bb (m_case_bb);
  
    /* idx = (unsigned)x - minval.  */
!   idx = fold_convert (unsigned_index_type, index_expr);
!   idx = fold_build2 (MINUS_EXPR, unsigned_index_type, idx,
! 		     fold_convert (unsigned_index_type, minval));
    idx = force_gimple_operand_gsi (&gsi, idx,
  				  /*simple=*/true, NULL_TREE,
  				  /*before=*/true, GSI_SAME_STMT);
--- 1587,1595 ----
    gsi = gsi_last_bb (m_case_bb);
  
    /* idx = (unsigned)x - minval.  */
!   idx = fold_convert_loc (loc, unsigned_index_type, index_expr);
!   idx = fold_build2_loc (loc, MINUS_EXPR, unsigned_index_type, idx,
! 			 fold_convert_loc (loc, unsigned_index_type, minval));
    idx = force_gimple_operand_gsi (&gsi, idx,
  				  /*simple=*/true, NULL_TREE,
  				  /*before=*/true, GSI_SAME_STMT);
*************** bit_test_cluster::emit (tree index_expr,
*** 1602,1618 ****
  				    fold_convert (unsigned_index_type, range),
  				    /*simple=*/true, NULL_TREE,
  				    /*before=*/true, GSI_SAME_STMT);
!       tmp = fold_build2 (GT_EXPR, boolean_type_node, idx, range);
        basic_block new_bb
  	= hoist_edge_and_branch_if_true (&gsi, tmp, default_bb,
! 					 profile_probability::unlikely ());
        gsi = gsi_last_bb (new_bb);
      }
  
    /* csui = (1 << (word_mode) idx) */
    csui = make_ssa_name (word_type_node);
!   tmp = fold_build2 (LSHIFT_EXPR, word_type_node, word_mode_one,
! 		     fold_convert (word_type_node, idx));
    tmp = force_gimple_operand_gsi (&gsi, tmp,
  				  /*simple=*/false, NULL_TREE,
  				  /*before=*/true, GSI_SAME_STMT);
--- 1602,1618 ----
  				    fold_convert (unsigned_index_type, range),
  				    /*simple=*/true, NULL_TREE,
  				    /*before=*/true, GSI_SAME_STMT);
!       tmp = fold_build2_loc (loc, GT_EXPR, boolean_type_node, idx, range);
        basic_block new_bb
  	= hoist_edge_and_branch_if_true (&gsi, tmp, default_bb,
! 					 profile_probability::unlikely (), loc);
        gsi = gsi_last_bb (new_bb);
      }
  
    /* csui = (1 << (word_mode) idx) */
    csui = make_ssa_name (word_type_node);
!   tmp = fold_build2_loc (loc, LSHIFT_EXPR, word_type_node, word_mode_one,
! 			 fold_convert_loc (loc, word_type_node, idx));
    tmp = force_gimple_operand_gsi (&gsi, tmp,
  				  /*simple=*/false, NULL_TREE,
  				  /*before=*/true, GSI_SAME_STMT);
*************** bit_test_cluster::emit (tree index_expr,
*** 1630,1642 ****
  							 bt_range);
        bt_range -= test[k].bits;
        tmp = wide_int_to_tree (word_type_node, test[k].mask);
!       tmp = fold_build2 (BIT_AND_EXPR, word_type_node, csui, tmp);
        tmp = force_gimple_operand_gsi (&gsi, tmp,
  				      /*simple=*/true, NULL_TREE,
  				      /*before=*/true, GSI_SAME_STMT);
!       tmp = fold_build2 (NE_EXPR, boolean_type_node, tmp, word_mode_zero);
        basic_block new_bb
! 	= hoist_edge_and_branch_if_true (&gsi, tmp, test[k].target_bb, prob);
        gsi = gsi_last_bb (new_bb);
      }
  
--- 1630,1644 ----
  							 bt_range);
        bt_range -= test[k].bits;
        tmp = wide_int_to_tree (word_type_node, test[k].mask);
!       tmp = fold_build2_loc (loc, BIT_AND_EXPR, word_type_node, csui, tmp);
        tmp = force_gimple_operand_gsi (&gsi, tmp,
  				      /*simple=*/true, NULL_TREE,
  				      /*before=*/true, GSI_SAME_STMT);
!       tmp = fold_build2_loc (loc, NE_EXPR, boolean_type_node,
! 			     tmp, word_mode_zero);
        basic_block new_bb
! 	= hoist_edge_and_branch_if_true (&gsi, tmp, test[k].target_bb,
! 					 prob, loc);
        gsi = gsi_last_bb (new_bb);
      }
  
*************** bit_test_cluster::emit (tree index_expr,
*** 1666,1672 ****
  basic_block
  bit_test_cluster::hoist_edge_and_branch_if_true (gimple_stmt_iterator *gsip,
  						 tree cond, basic_block case_bb,
! 						 profile_probability prob)
  {
    tree tmp;
    gcond *cond_stmt;
--- 1668,1675 ----
  basic_block
  bit_test_cluster::hoist_edge_and_branch_if_true (gimple_stmt_iterator *gsip,
  						 tree cond, basic_block case_bb,
! 						 profile_probability prob,
! 						 location_t loc)
  {
    tree tmp;
    gcond *cond_stmt;
*************** bit_test_cluster::hoist_edge_and_branch_
*** 1680,1685 ****
--- 1683,1689 ----
    tmp = force_gimple_operand_gsi (gsip, cond, /*simple=*/true, NULL,
  				  /*before=*/true, GSI_SAME_STMT);
    cond_stmt = gimple_build_cond_from_tree (tmp, NULL_TREE, NULL_TREE);
+   gimple_set_location (cond_stmt, loc);
    gsi_insert_before (gsip, cond_stmt, GSI_SAME_STMT);
  
    e_false = split_block (split_bb, cond_stmt);
diff -Nrcpad gcc-10.3.0/gcc/tree-switch-conversion.h gcc-10.4.0/gcc/tree-switch-conversion.h
*** gcc-10.3.0/gcc/tree-switch-conversion.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-switch-conversion.h	Tue Jun 28 08:54:30 2022
*************** public:
*** 409,415 ****
    static basic_block hoist_edge_and_branch_if_true (gimple_stmt_iterator *gsip,
  						    tree cond,
  						    basic_block case_bb,
! 						    profile_probability prob);
  
    /* True when the jump table handles an entire switch statement.  */
    bool m_handles_entire_switch;
--- 409,416 ----
    static basic_block hoist_edge_and_branch_if_true (gimple_stmt_iterator *gsip,
  						    tree cond,
  						    basic_block case_bb,
! 						    profile_probability prob,
! 						    location_t);
  
    /* True when the jump table handles an entire switch statement.  */
    bool m_handles_entire_switch;
diff -Nrcpad gcc-10.3.0/gcc/tree-vect-data-refs.c gcc-10.4.0/gcc/tree-vect-data-refs.c
*** gcc-10.3.0/gcc/tree-vect-data-refs.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-vect-data-refs.c	Tue Jun 28 08:54:30 2022
*************** vect_prune_runtime_alias_test_list (loop
*** 3457,3465 ****
    /* Step values are irrelevant for aliasing if the number of vector
       iterations is equal to the number of scalar iterations (which can
       happen for fully-SLP loops).  */
!   bool ignore_step_p = known_eq (LOOP_VINFO_VECT_FACTOR (loop_vinfo), 1U);
  
!   if (!ignore_step_p)
      {
        /* Convert the checks for nonzero steps into bound tests.  */
        tree value;
--- 3457,3465 ----
    /* Step values are irrelevant for aliasing if the number of vector
       iterations is equal to the number of scalar iterations (which can
       happen for fully-SLP loops).  */
!   bool vf_one_p = known_eq (LOOP_VINFO_VECT_FACTOR (loop_vinfo), 1U);
  
!   if (!vf_one_p)
      {
        /* Convert the checks for nonzero steps into bound tests.  */
        tree value;
*************** vect_prune_runtime_alias_test_list (loop
*** 3512,3517 ****
--- 3512,3522 ----
  
        bool preserves_scalar_order_p
  	= vect_preserves_scalar_order_p (dr_info_a, dr_info_b);
+       bool ignore_step_p
+ 	  = (vf_one_p
+ 	     && (preserves_scalar_order_p
+ 		 || operand_equal_p (DR_STEP (dr_info_a->dr),
+ 				     DR_STEP (dr_info_b->dr))));
  
        /* Skip the pair if inter-iteration dependencies are irrelevant
  	 and intra-iteration dependencies are guaranteed to be honored.  */
*************** vect_create_addr_base_for_vector_ref (st
*** 4645,4651 ****
  
    if (DR_PTR_INFO (dr)
        && TREE_CODE (addr_base) == SSA_NAME
!       && !SSA_NAME_PTR_INFO (addr_base))
      {
        vect_duplicate_ssa_name_ptr_info (addr_base, dr_info);
        if (offset || byte_offset)
--- 4650,4657 ----
  
    if (DR_PTR_INFO (dr)
        && TREE_CODE (addr_base) == SSA_NAME
!       /* We should only duplicate pointer info to newly created SSA names.  */
!       && SSA_NAME_VAR (addr_base) == dest)
      {
        vect_duplicate_ssa_name_ptr_info (addr_base, dr_info);
        if (offset || byte_offset)
diff -Nrcpad gcc-10.3.0/gcc/tree-vect-loop-manip.c gcc-10.4.0/gcc/tree-vect-loop-manip.c
*** gcc-10.3.0/gcc/tree-vect-loop-manip.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-vect-loop-manip.c	Tue Jun 28 08:54:30 2022
*************** vect_update_inits_of_drs (loop_vec_info
*** 1760,1766 ****
    FOR_EACH_VEC_ELT (datarefs, i, dr)
      {
        dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
!       if (!STMT_VINFO_GATHER_SCATTER_P (dr_info->stmt))
  	vect_update_init_of_dr (dr_info, niters, code);
      }
  }
--- 1760,1767 ----
    FOR_EACH_VEC_ELT (datarefs, i, dr)
      {
        dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
!       if (!STMT_VINFO_GATHER_SCATTER_P (dr_info->stmt)
! 	  && !STMT_VINFO_SIMD_LANE_ACCESS_P (dr_info->stmt))
  	vect_update_init_of_dr (dr_info, niters, code);
      }
  }
*************** vect_loop_versioning (loop_vec_info loop
*** 3383,3389 ****
  	outermost = superloop_at_depth (loop, 1);
        /* And avoid applying versioning on non-perfect nests.  */
        while (loop_to_version != outermost
! 	     && single_exit (loop_outer (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
  		 || vect_loop_vectorized_call (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
--- 3384,3391 ----
  	outermost = superloop_at_depth (loop, 1);
        /* And avoid applying versioning on non-perfect nests.  */
        while (loop_to_version != outermost
! 	     && (e = single_exit (loop_outer (loop_to_version)))
! 	     && !(e->flags & EDGE_COMPLEX)
  	     && (!loop_outer (loop_to_version)->inner->next
  		 || vect_loop_vectorized_call (loop_to_version))
  	     && (!loop_outer (loop_to_version)->inner->next
diff -Nrcpad gcc-10.3.0/gcc/tree-vect-loop.c gcc-10.4.0/gcc/tree-vect-loop.c
*** gcc-10.3.0/gcc/tree-vect-loop.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-vect-loop.c	Tue Jun 28 08:54:30 2022
*************** vect_is_simple_reduction (loop_vec_info
*** 3236,3241 ****
--- 3236,3252 ----
        return def_stmt_info;
      }
  
+   /* When the inner loop of a double reduction ends up with more than
+      one loop-closed PHI we have failed to classify alternate such
+      PHIs as double reduction, leading to wrong code.  See PR103237.  */
+   if (inner_loop_of_double_reduc && lcphis.length () != 1)
+     {
+       if (dump_enabled_p ())
+ 	dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ 			 "unhandle double reduction\n");
+       return NULL;
+     }
+ 
    /* If this isn't a nested cycle or if the nested cycle reduction value
       is used ouside of the inner loop we cannot handle uses of the reduction
       value.  */
*************** maybe_set_vectorized_backedge_value (loo
*** 8415,8420 ****
--- 8426,8432 ----
      if (gphi *phi = dyn_cast <gphi *> (USE_STMT (use_p)))
        if (gimple_bb (phi)->loop_father->header == gimple_bb (phi)
  	  && (phi_info = loop_vinfo->lookup_stmt (phi))
+ 	  && STMT_VINFO_RELEVANT_P (phi_info)
  	  && VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (phi_info))
  	  && STMT_VINFO_REDUC_TYPE (phi_info) != FOLD_LEFT_REDUCTION
  	  && STMT_VINFO_REDUC_TYPE (phi_info) != EXTRACT_LAST_REDUCTION)
*************** vect_transform_loop (loop_vec_info loop_
*** 8936,8942 ****
  	   !gsi_end_p (gsi); gsi_next (&gsi))
  	{
  	  gcall *call = dyn_cast <gcall *> (gsi_stmt (gsi));
! 	  if (call && gimple_call_internal_p (call, IFN_MASK_LOAD))
  	    {
  	      tree lhs = gimple_get_lhs (call);
  	      if (!VECTOR_TYPE_P (TREE_TYPE (lhs)))
--- 8948,8957 ----
  	   !gsi_end_p (gsi); gsi_next (&gsi))
  	{
  	  gcall *call = dyn_cast <gcall *> (gsi_stmt (gsi));
! 	  if (!call || !gimple_call_internal_p (call))
! 	    continue;
! 	  internal_fn ifn = gimple_call_internal_fn (call);
! 	  if (ifn == IFN_MASK_LOAD)
  	    {
  	      tree lhs = gimple_get_lhs (call);
  	      if (!VECTOR_TYPE_P (TREE_TYPE (lhs)))
*************** vect_transform_loop (loop_vec_info loop_
*** 8946,8951 ****
--- 8961,8977 ----
  		  gsi_replace (&gsi, new_stmt, true);
  		}
  	    }
+ 	  else if (conditional_internal_fn_code (ifn) != ERROR_MARK)
+ 	    {
+ 	      tree lhs = gimple_get_lhs (call);
+ 	      if (!VECTOR_TYPE_P (TREE_TYPE (lhs)))
+ 		{
+ 		  tree else_arg
+ 		    = gimple_call_arg (call, gimple_call_num_args (call) - 1);
+ 		  gimple *new_stmt = gimple_build_assign (lhs, else_arg);
+ 		  gsi_replace (&gsi, new_stmt, true);
+ 		}
+ 	    }
  	}
      }				/* BBs in loop */
  
diff -Nrcpad gcc-10.3.0/gcc/tree-vect-slp.c gcc-10.4.0/gcc/tree-vect-slp.c
*** gcc-10.3.0/gcc/tree-vect-slp.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-vect-slp.c	Tue Jun 28 08:54:30 2022
*************** vect_build_slp_tree_1 (unsigned char *sw
*** 969,999 ****
  	      continue;
  	    }
  
! 	  if (need_same_oprnds)
  	    {
! 	      tree other_op1 = (call_stmt
! 				? gimple_call_arg (call_stmt, 1)
! 				: gimple_assign_rhs2 (stmt));
! 	      if (!operand_equal_p (first_op1, other_op1, 0))
  		{
  		  if (dump_enabled_p ())
  		    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				     "Build SLP failed: different shift "
! 				     "arguments in %G", stmt);
  		  /* Mismatch.  */
  		  continue;
  		}
  	    }
  
! 	  if (!load_p && rhs_code == CALL_EXPR)
  	    {
! 	      if (!compatible_calls_p (as_a <gcall *> (stmts[0]->stmt),
! 				       as_a <gcall *> (stmt)))
  		{
  		  if (dump_enabled_p ())
  		    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				     "Build SLP failed: different calls in %G",
! 				     stmt);
  		  /* Mismatch.  */
  		  continue;
  		}
--- 969,999 ----
  	      continue;
  	    }
  
! 	  if (!load_p && rhs_code == CALL_EXPR)
  	    {
! 	      if (!compatible_calls_p (as_a <gcall *> (stmts[0]->stmt),
! 				       as_a <gcall *> (stmt)))
  		{
  		  if (dump_enabled_p ())
  		    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				     "Build SLP failed: different calls in %G",
! 				     stmt);
  		  /* Mismatch.  */
  		  continue;
  		}
  	    }
  
! 	  if (need_same_oprnds)
  	    {
! 	      tree other_op1 = (call_stmt
! 				? gimple_call_arg (call_stmt, 1)
! 				: gimple_assign_rhs2 (stmt));
! 	      if (!operand_equal_p (first_op1, other_op1, 0))
  		{
  		  if (dump_enabled_p ())
  		    dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				     "Build SLP failed: different shift "
! 				     "arguments in %G", stmt);
  		  /* Mismatch.  */
  		  continue;
  		}
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 1515,1520 ****
--- 1515,1524 ----
  	      }
  	  if (dump_enabled_p ())
  	    dump_printf (MSG_NOTE, "\n");
+ 	  /* After swapping some operands we lost track whether an
+ 	     operand has any pattern defs so be conservative here.  */
+ 	  if (oprnds_info[0]->any_pattern || oprnds_info[1]->any_pattern)
+ 	    oprnds_info[0]->any_pattern = oprnds_info[1]->any_pattern = true;
  	  /* And try again with scratch 'matches' ... */
  	  bool *tem = XALLOCAVEC (bool, group_size);
  	  if ((child = vect_build_slp_tree (vinfo, oprnd_info->def_stmts,
*************** vect_make_slp_decision (loop_vec_info lo
*** 2566,2704 ****
  }
  
  
! /* Find stmts that must be both vectorized and SLPed (since they feed stmts that
!    can't be SLPed) in the tree rooted at NODE.  Mark such stmts as HYBRID.  */
! 
! static void
! vect_detect_hybrid_slp_stmts (slp_tree node, unsigned i, slp_vect_type stype,
! 			      hash_map<slp_tree, unsigned> &visited)
  {
!   stmt_vec_info stmt_vinfo = SLP_TREE_SCALAR_STMTS (node)[i];
!   imm_use_iterator imm_iter;
!   gimple *use_stmt;
!   stmt_vec_info use_vinfo;
!   slp_tree child;
!   loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
!   int j;
! 
!   /* We need to union stype over the incoming graph edges but we still
!      want to limit recursion to stay O(N+E).  */
!   unsigned visited_cnt = ++visited.get_or_insert (node);
!   gcc_assert (visited_cnt <= node->refcnt);
!   bool only_edge = (visited_cnt != node->refcnt);
! 
!   /* Propagate hybrid down the SLP tree.  */
!   if (stype == hybrid)
!     ;
!   else if (HYBRID_SLP_STMT (stmt_vinfo))
!     stype = hybrid;
!   else if (!only_edge)
!     {
!       /* Check if a pure SLP stmt has uses in non-SLP stmts.  */
!       gcc_checking_assert (PURE_SLP_STMT (stmt_vinfo));
!       /* If we get a pattern stmt here we have to use the LHS of the
!          original stmt for immediate uses.  */
!       gimple *stmt = vect_orig_stmt (stmt_vinfo)->stmt;
!       tree def;
!       if (gimple_code (stmt) == GIMPLE_PHI)
! 	def = gimple_phi_result (stmt);
!       else
! 	def = SINGLE_SSA_TREE_OPERAND (stmt, SSA_OP_DEF);
!       if (def)
! 	FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, def)
! 	  {
! 	    use_vinfo = loop_vinfo->lookup_stmt (use_stmt);
! 	    if (!use_vinfo)
! 	      continue;
! 	    use_vinfo = vect_stmt_to_vectorize (use_vinfo);
! 	    if (!STMT_SLP_TYPE (use_vinfo)
! 		&& (STMT_VINFO_RELEVANT (use_vinfo)
! 		    || VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (use_vinfo)))
! 		&& !(gimple_code (use_stmt) == GIMPLE_PHI
! 		     && STMT_VINFO_DEF_TYPE (use_vinfo) == vect_reduction_def))
! 	      {
! 		if (dump_enabled_p ())
! 		  dump_printf_loc (MSG_NOTE, vect_location, "use of SLP "
! 				   "def in non-SLP stmt: %G", use_stmt);
! 		stype = hybrid;
! 	      }
! 	  }
!     }
! 
!   if (stype == hybrid
!       && !HYBRID_SLP_STMT (stmt_vinfo))
!     {
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location, "marking hybrid: %G",
! 			 stmt_vinfo->stmt);
!       STMT_SLP_TYPE (stmt_vinfo) = hybrid;
!     }
! 
!   if (!only_edge)
!     FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), j, child)
!       if (SLP_TREE_DEF_TYPE (child) != vect_external_def
! 	  && SLP_TREE_DEF_TYPE (child) != vect_constant_def)
! 	vect_detect_hybrid_slp_stmts (child, i, stype, visited);
! }
  
! /* Helpers for vect_detect_hybrid_slp walking pattern stmt uses.  */
  
  static tree
! vect_detect_hybrid_slp_1 (tree *tp, int *, void *data)
  {
    walk_stmt_info *wi = (walk_stmt_info *)data;
!   loop_vec_info loop_vinfo = (loop_vec_info) wi->info;
  
    if (wi->is_lhs)
      return NULL_TREE;
  
!   stmt_vec_info def_stmt_info = loop_vinfo->lookup_def (*tp);
!   if (def_stmt_info && PURE_SLP_STMT (def_stmt_info))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location, "marking hybrid: %G",
  			 def_stmt_info->stmt);
        STMT_SLP_TYPE (def_stmt_info) = hybrid;
      }
  
    return NULL_TREE;
  }
  
- static tree
- vect_detect_hybrid_slp_2 (gimple_stmt_iterator *gsi, bool *handled,
- 			  walk_stmt_info *wi)
- {
-   loop_vec_info loop_vinfo = (loop_vec_info) wi->info;
-   stmt_vec_info use_vinfo = loop_vinfo->lookup_stmt (gsi_stmt (*gsi));
-   /* If the stmt is in a SLP instance then this isn't a reason
-      to mark use definitions in other SLP instances as hybrid.  */
-   if (! STMT_SLP_TYPE (use_vinfo)
-       && (STMT_VINFO_RELEVANT (use_vinfo)
- 	  || VECTORIZABLE_CYCLE_DEF (STMT_VINFO_DEF_TYPE (use_vinfo)))
-       && ! (gimple_code (gsi_stmt (*gsi)) == GIMPLE_PHI
- 	    && STMT_VINFO_DEF_TYPE (use_vinfo) == vect_reduction_def))
-     ;
-   else
-     *handled = true;
-   return NULL_TREE;
- }
- 
  /* Find stmts that must be both vectorized and SLPed.  */
  
  void
  vect_detect_hybrid_slp (loop_vec_info loop_vinfo)
  {
-   unsigned int i;
-   vec<slp_instance> slp_instances = LOOP_VINFO_SLP_INSTANCES (loop_vinfo);
-   slp_instance instance;
- 
    DUMP_VECT_SCOPE ("vect_detect_hybrid_slp");
  
!   /* First walk all pattern stmt in the loop and mark defs of uses as
!      hybrid because immediate uses in them are not recorded.  */
!   for (i = 0; i < LOOP_VINFO_LOOP (loop_vinfo)->num_nodes; ++i)
      {
        basic_block bb = LOOP_VINFO_BBS (loop_vinfo)[i];
        for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
  	   gsi_next (&gsi))
  	{
--- 2570,2631 ----
  }
  
  
! /* Private data for vect_detect_hybrid_slp.  */
! struct vdhs_data
  {
!   loop_vec_info loop_vinfo;
!   vec<stmt_vec_info> *worklist;
! };
  
! /* Walker for walk_gimple_op.  */
  
  static tree
! vect_detect_hybrid_slp (tree *tp, int *, void *data)
  {
    walk_stmt_info *wi = (walk_stmt_info *)data;
!   vdhs_data *dat = (vdhs_data *)wi->info;
  
    if (wi->is_lhs)
      return NULL_TREE;
  
!   stmt_vec_info def_stmt_info = dat->loop_vinfo->lookup_def (*tp);
!   if (!def_stmt_info)
!     return NULL_TREE;
!   def_stmt_info = vect_stmt_to_vectorize (def_stmt_info);
!   if (PURE_SLP_STMT (def_stmt_info))
      {
        if (dump_enabled_p ())
  	dump_printf_loc (MSG_NOTE, vect_location, "marking hybrid: %G",
  			 def_stmt_info->stmt);
        STMT_SLP_TYPE (def_stmt_info) = hybrid;
+       dat->worklist->safe_push (def_stmt_info);
      }
  
    return NULL_TREE;
  }
  
  /* Find stmts that must be both vectorized and SLPed.  */
  
  void
  vect_detect_hybrid_slp (loop_vec_info loop_vinfo)
  {
    DUMP_VECT_SCOPE ("vect_detect_hybrid_slp");
  
!   /* All stmts participating in SLP are marked pure_slp, all other
!      stmts are loop_vect.
!      First collect all loop_vect stmts into a worklist.  */
!   auto_vec<stmt_vec_info> worklist;
!   for (unsigned i = 0; i < LOOP_VINFO_LOOP (loop_vinfo)->num_nodes; ++i)
      {
        basic_block bb = LOOP_VINFO_BBS (loop_vinfo)[i];
+       for (gphi_iterator gsi = gsi_start_phis (bb); !gsi_end_p (gsi);
+ 	   gsi_next (&gsi))
+ 	{
+ 	  gphi *phi = gsi.phi ();
+ 	  stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (phi);
+ 	  if (!STMT_SLP_TYPE (stmt_info) && STMT_VINFO_RELEVANT (stmt_info))
+ 	    worklist.safe_push (stmt_info);
+ 	}
        for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);
  	   gsi_next (&gsi))
  	{
*************** vect_detect_hybrid_slp (loop_vec_info lo
*** 2706,2741 ****
  	  stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (stmt);
  	  if (STMT_VINFO_IN_PATTERN_P (stmt_info))
  	    {
! 	      walk_stmt_info wi;
! 	      memset (&wi, 0, sizeof (wi));
! 	      wi.info = loop_vinfo;
! 	      gimple_stmt_iterator gsi2
! 		= gsi_for_stmt (STMT_VINFO_RELATED_STMT (stmt_info)->stmt);
! 	      walk_gimple_stmt (&gsi2, vect_detect_hybrid_slp_2,
! 				vect_detect_hybrid_slp_1, &wi);
! 	      walk_gimple_seq (STMT_VINFO_PATTERN_DEF_SEQ (stmt_info),
! 			       vect_detect_hybrid_slp_2,
! 			       vect_detect_hybrid_slp_1, &wi);
  	    }
  	}
      }
  
!   /* Then walk the SLP instance trees marking stmts with uses in
!      non-SLP stmts as hybrid, also propagating hybrid down the
!      SLP tree, collecting the above info on-the-fly.  */
!   for (unsigned j = 0;; ++j)
      {
!       hash_map<slp_tree, unsigned> visited;
!       bool any = false;
!       FOR_EACH_VEC_ELT (slp_instances, i, instance)
! 	if (j < SLP_INSTANCE_GROUP_SIZE (instance))
! 	  {
! 	    any = true;
! 	    vect_detect_hybrid_slp_stmts (SLP_INSTANCE_TREE (instance),
! 					  j, pure_slp, visited);
! 	  }
!       if (!any)
! 	break;
      }
  }
  
--- 2633,2672 ----
  	  stmt_vec_info stmt_info = loop_vinfo->lookup_stmt (stmt);
  	  if (STMT_VINFO_IN_PATTERN_P (stmt_info))
  	    {
! 	      for (gimple_stmt_iterator gsi2
! 		     = gsi_start (STMT_VINFO_PATTERN_DEF_SEQ (stmt_info));
! 		   !gsi_end_p (gsi2); gsi_next (&gsi2))
! 		{
! 		  stmt_vec_info patt_info
! 		    = loop_vinfo->lookup_stmt (gsi_stmt (gsi2));
! 		  if (!STMT_SLP_TYPE (patt_info)
! 		      && STMT_VINFO_RELEVANT (patt_info))
! 		    worklist.safe_push (patt_info);
! 		}
! 	      stmt_info = STMT_VINFO_RELATED_STMT (stmt_info);
  	    }
+ 	  if (!STMT_SLP_TYPE (stmt_info) && STMT_VINFO_RELEVANT (stmt_info))
+ 	    worklist.safe_push (stmt_info);
  	}
      }
  
!   /* Now we have a worklist of non-SLP stmts, follow use->def chains and
!      mark any SLP vectorized stmt as hybrid.
!      ???  We're visiting def stmts N times (once for each non-SLP and
!      once for each hybrid-SLP use).  */
!   walk_stmt_info wi;
!   vdhs_data dat;
!   dat.worklist = &worklist;
!   dat.loop_vinfo = loop_vinfo;
!   memset (&wi, 0, sizeof (wi));
!   wi.info = (void *)&dat;
!   while (!worklist.is_empty ())
      {
!       stmt_vec_info stmt_info = worklist.pop ();
!       /* Since SSA operands are not set up for pattern stmts we need
! 	 to use walk_gimple_op.  */
!       wi.is_lhs = 0;
!       walk_gimple_op (stmt_info->stmt, vect_detect_hybrid_slp, &wi);
      }
  }
  
diff -Nrcpad gcc-10.3.0/gcc/tree-vect-stmts.c gcc-10.4.0/gcc/tree-vect-stmts.c
*** gcc-10.3.0/gcc/tree-vect-stmts.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree-vect-stmts.c	Tue Jun 28 08:54:30 2022
*************** vectorizable_store (stmt_vec_info stmt_i
*** 8368,8373 ****
--- 8368,8374 ----
  		  && TREE_CODE (dataref_ptr) == SSA_NAME)
  		set_ptr_info_alignment (get_ptr_info (dataref_ptr), align,
  					misalign);
+ 	      align = least_bit_hwi (misalign | align);
  
  	      if (memory_access_type == VMAT_CONTIGUOUS_REVERSE)
  		{
*************** vectorizable_store (stmt_vec_info stmt_i
*** 8389,8395 ****
  	      /* Arguments are ready.  Create the new vector stmt.  */
  	      if (final_mask)
  		{
- 		  align = least_bit_hwi (misalign | align);
  		  tree ptr = build_int_cst (ref_type, align * BITS_PER_UNIT);
  		  gcall *call
  		    = gimple_build_call_internal (IFN_MASK_STORE, 4,
--- 8390,8395 ----
*************** vectorizable_store (stmt_vec_info stmt_i
*** 8408,8421 ****
  					  : build_int_cst (ref_type, 0));
  		  if (aligned_access_p (first_dr_info))
  		    ;
- 		  else if (DR_MISALIGNMENT (first_dr_info) == -1)
- 		    TREE_TYPE (data_ref)
- 		      = build_aligned_type (TREE_TYPE (data_ref),
- 					    align * BITS_PER_UNIT);
  		  else
  		    TREE_TYPE (data_ref)
  		      = build_aligned_type (TREE_TYPE (data_ref),
! 					    TYPE_ALIGN (elem_type));
  		  vect_copy_ref_info (data_ref, DR_REF (first_dr_info->dr));
  		  gassign *new_stmt
  		    = gimple_build_assign (data_ref, vec_oprnd);
--- 8408,8417 ----
  					  : build_int_cst (ref_type, 0));
  		  if (aligned_access_p (first_dr_info))
  		    ;
  		  else
  		    TREE_TYPE (data_ref)
  		      = build_aligned_type (TREE_TYPE (data_ref),
! 					    align * BITS_PER_UNIT);
  		  vect_copy_ref_info (data_ref, DR_REF (first_dr_info->dr));
  		  gassign *new_stmt
  		    = gimple_build_assign (data_ref, vec_oprnd);
*************** vectorizable_load (stmt_vec_info stmt_in
*** 9567,9576 ****
  			&& TREE_CODE (dataref_ptr) == SSA_NAME)
  		      set_ptr_info_alignment (get_ptr_info (dataref_ptr),
  					      align, misalign);
  
  		    if (final_mask)
  		      {
- 			align = least_bit_hwi (misalign | align);
  			tree ptr = build_int_cst (ref_type,
  						  align * BITS_PER_UNIT);
  			gcall *call
--- 9563,9572 ----
  			&& TREE_CODE (dataref_ptr) == SSA_NAME)
  		      set_ptr_info_alignment (get_ptr_info (dataref_ptr),
  					      align, misalign);
+ 		    align = least_bit_hwi (misalign | align);
  
  		    if (final_mask)
  		      {
  			tree ptr = build_int_cst (ref_type,
  						  align * BITS_PER_UNIT);
  			gcall *call
*************** vectorizable_load (stmt_vec_info stmt_in
*** 9621,9634 ****
  			  = fold_build2 (MEM_REF, ltype, dataref_ptr, offset);
  			if (alignment_support_scheme == dr_aligned)
  			  ;
- 			else if (DR_MISALIGNMENT (first_dr_info) == -1)
- 			  TREE_TYPE (data_ref)
- 			    = build_aligned_type (TREE_TYPE (data_ref),
- 						  align * BITS_PER_UNIT);
  			else
  			  TREE_TYPE (data_ref)
  			    = build_aligned_type (TREE_TYPE (data_ref),
! 						  TYPE_ALIGN (elem_type));
  			if (ltype != vectype)
  			  {
  			    vect_copy_ref_info (data_ref,
--- 9617,9626 ----
  			  = fold_build2 (MEM_REF, ltype, dataref_ptr, offset);
  			if (alignment_support_scheme == dr_aligned)
  			  ;
  			else
  			  TREE_TYPE (data_ref)
  			    = build_aligned_type (TREE_TYPE (data_ref),
! 						  align * BITS_PER_UNIT);
  			if (ltype != vectype)
  			  {
  			    vect_copy_ref_info (data_ref,
diff -Nrcpad gcc-10.3.0/gcc/tree.c gcc-10.4.0/gcc/tree.c
*** gcc-10.3.0/gcc/tree.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree.c	Tue Jun 28 08:54:30 2022
*************** build_opaque_vector_type (tree innertype
*** 10982,10994 ****
  
  /* Return the value of element I of VECTOR_CST T as a wide_int.  */
  
! wide_int
  vector_cst_int_elt (const_tree t, unsigned int i)
  {
    /* First handle elements that are directly encoded.  */
    unsigned int encoded_nelts = vector_cst_encoded_nelts (t);
    if (i < encoded_nelts)
!     return wi::to_wide (VECTOR_CST_ENCODED_ELT (t, i));
  
    /* Identify the pattern that contains element I and work out the index of
       the last encoded element for that pattern.  */
--- 10982,10994 ----
  
  /* Return the value of element I of VECTOR_CST T as a wide_int.  */
  
! static poly_wide_int
  vector_cst_int_elt (const_tree t, unsigned int i)
  {
    /* First handle elements that are directly encoded.  */
    unsigned int encoded_nelts = vector_cst_encoded_nelts (t);
    if (i < encoded_nelts)
!     return wi::to_poly_wide (VECTOR_CST_ENCODED_ELT (t, i));
  
    /* Identify the pattern that contains element I and work out the index of
       the last encoded element for that pattern.  */
*************** vector_cst_int_elt (const_tree t, unsign
*** 10999,11011 ****
  
    /* If there are no steps, the final encoded value is the right one.  */
    if (!VECTOR_CST_STEPPED_P (t))
!     return wi::to_wide (VECTOR_CST_ENCODED_ELT (t, final_i));
  
    /* Otherwise work out the value from the last two encoded elements.  */
    tree v1 = VECTOR_CST_ENCODED_ELT (t, final_i - npatterns);
    tree v2 = VECTOR_CST_ENCODED_ELT (t, final_i);
!   wide_int diff = wi::to_wide (v2) - wi::to_wide (v1);
!   return wi::to_wide (v2) + (count - 2) * diff;
  }
  
  /* Return the value of element I of VECTOR_CST T.  */
--- 10999,11011 ----
  
    /* If there are no steps, the final encoded value is the right one.  */
    if (!VECTOR_CST_STEPPED_P (t))
!     return wi::to_poly_wide (VECTOR_CST_ENCODED_ELT (t, final_i));
  
    /* Otherwise work out the value from the last two encoded elements.  */
    tree v1 = VECTOR_CST_ENCODED_ELT (t, final_i - npatterns);
    tree v2 = VECTOR_CST_ENCODED_ELT (t, final_i);
!   poly_wide_int diff = wi::to_poly_wide (v2) - wi::to_poly_wide (v1);
!   return wi::to_poly_wide (v2) + (count - 2) * diff;
  }
  
  /* Return the value of element I of VECTOR_CST T.  */
*************** walk_tree_1 (tree *tp, walk_tree_fn func
*** 12191,12197 ****
  	case OMP_CLAUSE_BIND:
  	case OMP_CLAUSE_AUTO:
  	case OMP_CLAUSE_SEQ:
- 	case OMP_CLAUSE_TILE:
  	case OMP_CLAUSE__SIMT_:
  	case OMP_CLAUSE_IF_PRESENT:
  	case OMP_CLAUSE_FINALIZE:
--- 12191,12196 ----
*************** walk_tree_1 (tree *tp, walk_tree_fn func
*** 12203,12208 ****
--- 12202,12208 ----
  	  WALK_SUBTREE_TAIL (OMP_CLAUSE_CHAIN (*tp));
  
  	case OMP_CLAUSE_COLLAPSE:
+ 	case OMP_CLAUSE_TILE:
  	  {
  	    int i;
  	    for (i = 0; i < 3; i++)
diff -Nrcpad gcc-10.3.0/gcc/tree.h gcc-10.4.0/gcc/tree.h
*** gcc-10.3.0/gcc/tree.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/tree.h	Tue Jun 28 08:54:30 2022
*************** extern tree first_field (const_tree);
*** 4714,4720 ****
  extern bool initializer_zerop (const_tree, bool * = NULL);
  extern bool initializer_each_zero_or_onep (const_tree);
  
- extern wide_int vector_cst_int_elt (const_tree, unsigned int);
  extern tree vector_cst_elt (const_tree, unsigned int);
  
  /* Given a vector VEC, return its first element if all elements are
--- 4714,4719 ----
diff -Nrcpad gcc-10.3.0/gcc/ubsan.c gcc-10.4.0/gcc/ubsan.c
*** gcc-10.3.0/gcc/ubsan.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/ubsan.c	Tue Jun 28 08:54:30 2022
*************** maybe_instrument_pointer_overflow (gimpl
*** 1440,1446 ****
    tree base;
    if (decl_p)
      {
!       if (DECL_REGISTER (inner))
  	return;
        base = inner;
        /* If BASE is a fixed size automatic variable or
--- 1440,1449 ----
    tree base;
    if (decl_p)
      {
!       if ((VAR_P (inner)
! 	   || TREE_CODE (inner) == PARM_DECL
! 	   || TREE_CODE (inner) == RESULT_DECL)
! 	  && DECL_REGISTER (inner))
  	return;
        base = inner;
        /* If BASE is a fixed size automatic variable or
*************** instrument_object_size (gimple_stmt_iter
*** 2104,2110 ****
    tree base;
    if (decl_p)
      {
!       if (DECL_REGISTER (inner))
  	return;
        base = inner;
      }
--- 2107,2118 ----
    tree base;
    if (decl_p)
      {
!       if ((VAR_P (inner)
! 	   || TREE_CODE (inner) == PARM_DECL
! 	   || TREE_CODE (inner) == RESULT_DECL)
! 	  && DECL_REGISTER (inner))
! 	return;
!       if (t == inner && !is_global_var (t))
  	return;
        base = inner;
      }
*************** instrument_object_size (gimple_stmt_iter
*** 2203,2208 ****
--- 2211,2221 ----
  	}
      }
  
+   if (DECL_P (base)
+       && decl_function_context (base) == current_function_decl
+       && !TREE_ADDRESSABLE (base))
+     mark_addressable (base);
+ 
    if (bos_stmt && gimple_call_builtin_p (bos_stmt, BUILT_IN_OBJECT_SIZE))
      ubsan_create_edge (bos_stmt);
  
diff -Nrcpad gcc-10.3.0/gcc/valtrack.c gcc-10.4.0/gcc/valtrack.c
*** gcc-10.3.0/gcc/valtrack.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/valtrack.c	Tue Jun 28 08:54:30 2022
*************** debug_lowpart_subreg (machine_mode outer
*** 559,565 ****
    rtx ret = simplify_gen_subreg (outer_mode, expr, inner_mode, offset);
    if (ret)
      return ret;
!   return gen_rtx_raw_SUBREG (outer_mode, expr, offset);
  }
  
  /* If UREGNO is referenced by any entry in DEBUG, emit a debug insn
--- 559,567 ----
    rtx ret = simplify_gen_subreg (outer_mode, expr, inner_mode, offset);
    if (ret)
      return ret;
!   if (GET_MODE (expr) != VOIDmode)
!     return gen_rtx_raw_SUBREG (outer_mode, expr, offset);
!   return NULL_RTX;
  }
  
  /* If UREGNO is referenced by any entry in DEBUG, emit a debug insn
diff -Nrcpad gcc-10.3.0/gcc/var-tracking.c gcc-10.4.0/gcc/var-tracking.c
*** gcc-10.3.0/gcc/var-tracking.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/var-tracking.c	Tue Jun 28 08:54:30 2022
*************** add_stores (rtx loc, const_rtx expr, voi
*** 6123,6129 ****
       on which register holds that VALUE in some instruction.  */
    if (!frame_pointer_needed
        && cfa_base_rtx
!       && cselib_sp_derived_value_p (v))
      {
        if (preserve)
  	preserve_value (v);
--- 6123,6130 ----
       on which register holds that VALUE in some instruction.  */
    if (!frame_pointer_needed
        && cfa_base_rtx
!       && cselib_sp_derived_value_p (v)
!       && loc == stack_pointer_rtx)
      {
        if (preserve)
  	preserve_value (v);
diff -Nrcpad gcc-10.3.0/gcc/varasm.c gcc-10.4.0/gcc/varasm.c
*** gcc-10.3.0/gcc/varasm.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/varasm.c	Tue Jun 28 08:54:30 2022
*************** narrowing_initializer_constant_valid_p (
*** 4455,4461 ****
      {
        tree inner = TREE_OPERAND (op0, 0);
        if (inner == error_mark_node
! 	  || ! INTEGRAL_MODE_P (TYPE_MODE (TREE_TYPE (inner)))
  	  || (GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (op0)))
  	      > GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (inner)))))
  	break;
--- 4455,4464 ----
      {
        tree inner = TREE_OPERAND (op0, 0);
        if (inner == error_mark_node
! 	  || ! INTEGRAL_TYPE_P (TREE_TYPE (op0))
! 	  || ! SCALAR_INT_MODE_P (TYPE_MODE (TREE_TYPE (op0)))
! 	  || ! INTEGRAL_TYPE_P (TREE_TYPE (inner))
! 	  || ! SCALAR_INT_MODE_P (TYPE_MODE (TREE_TYPE (inner)))
  	  || (GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (op0)))
  	      > GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (inner)))))
  	break;
*************** narrowing_initializer_constant_valid_p (
*** 4467,4473 ****
      {
        tree inner = TREE_OPERAND (op1, 0);
        if (inner == error_mark_node
! 	  || ! INTEGRAL_MODE_P (TYPE_MODE (TREE_TYPE (inner)))
  	  || (GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (op1)))
  	      > GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (inner)))))
  	break;
--- 4470,4479 ----
      {
        tree inner = TREE_OPERAND (op1, 0);
        if (inner == error_mark_node
! 	  || ! INTEGRAL_TYPE_P (TREE_TYPE (op1))
! 	  || ! SCALAR_INT_MODE_P (TYPE_MODE (TREE_TYPE (op1)))
! 	  || ! INTEGRAL_TYPE_P (TREE_TYPE (inner))
! 	  || ! SCALAR_INT_MODE_P (TYPE_MODE (TREE_TYPE (inner)))
  	  || (GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (op1)))
  	      > GET_MODE_SIZE (SCALAR_INT_TYPE_MODE (TREE_TYPE (inner)))))
  	break;
*************** output_constructor_regular_field (oc_loc
*** 5271,5284 ****
  	  && (!TYPE_DOMAIN (TREE_TYPE (local->field))
  	      || !TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (local->field)))))
  	{
! 	  fieldsize = array_size_for_constructor (local->val);
  	  /* Given a non-empty initialization, this field had better
  	     be last.  Given a flexible array member, the next field
  	     on the chain is a TYPE_DECL of the enclosing struct.  */
  	  const_tree next = DECL_CHAIN (local->field);
  	  gcc_assert (!fieldsize || !next || TREE_CODE (next) != FIELD_DECL);
- 	  tree size = TYPE_SIZE_UNIT (TREE_TYPE (local->val));
- 	  gcc_checking_assert (compare_tree_int (size, fieldsize) == 0);
  	}
        else
  	fieldsize = tree_to_uhwi (DECL_SIZE_UNIT (local->field));
--- 5277,5296 ----
  	  && (!TYPE_DOMAIN (TREE_TYPE (local->field))
  	      || !TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (local->field)))))
  	{
! 	  unsigned HOST_WIDE_INT fldsize
! 	    = array_size_for_constructor (local->val);
! 	  fieldsize = int_size_in_bytes (TREE_TYPE (local->val));
! 	  /* In most cases fieldsize == fldsize as the size of the initializer
! 	     determines how many elements the flexible array member has.  For
! 	     C++ fldsize can be smaller though, if the last or several last or
! 	     all initializers of the flexible array member have side-effects
! 	     and the FE splits them into dynamic initialization.  */
! 	  gcc_checking_assert (fieldsize >= fldsize);
  	  /* Given a non-empty initialization, this field had better
  	     be last.  Given a flexible array member, the next field
  	     on the chain is a TYPE_DECL of the enclosing struct.  */
  	  const_tree next = DECL_CHAIN (local->field);
  	  gcc_assert (!fieldsize || !next || TREE_CODE (next) != FIELD_DECL);
  	}
        else
  	fieldsize = tree_to_uhwi (DECL_SIZE_UNIT (local->field));
diff -Nrcpad gcc-10.3.0/gcc/vmsdbgout.c gcc-10.4.0/gcc/vmsdbgout.c
*** gcc-10.3.0/gcc/vmsdbgout.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/gcc/vmsdbgout.c	Tue Jun 28 08:54:30 2022
*************** static char text_end_label[MAX_ARTIFICIA
*** 365,377 ****
  #define ASM_OUTPUT_DEBUG_STRING(FILE,P)		\
    do						\
      {						\
!       register int slen = strlen (P);		\
!       register const char *p = (P);		\
!       register int i;				\
        fprintf (FILE, "\t.ascii \"");		\
        for (i = 0; i < slen; i++)		\
  	{					\
! 	  register int c = p[i];		\
  	  if (c == '\"' || c == '\\')		\
  	    putc ('\\', FILE);			\
  	  if (c >= ' ' && c < 0177)		\
--- 365,377 ----
  #define ASM_OUTPUT_DEBUG_STRING(FILE,P)		\
    do						\
      {						\
!       int slen = strlen (P);			\
!       const char *p = (P);			\
!       int i;					\
        fprintf (FILE, "\t.ascii \"");		\
        for (i = 0; i < slen; i++)		\
  	{					\
! 	  int c = p[i];				\
  	  if (c == '\"' || c == '\\')		\
  	    putc ('\\', FILE);			\
  	  if (c >= ' ' && c < 0177)		\
*************** vmsdbgout_end_epilogue (unsigned int lin
*** 1229,1235 ****
     a lexical block.  */
  
  static void
! vmsdbgout_begin_block (register unsigned line, register unsigned blocknum)
  {
    if (write_symbols == VMS_AND_DWARF2_DEBUG)
      (*dwarf2_debug_hooks.begin_block) (line, blocknum);
--- 1229,1235 ----
     a lexical block.  */
  
  static void
! vmsdbgout_begin_block (unsigned line, unsigned blocknum)
  {
    if (write_symbols == VMS_AND_DWARF2_DEBUG)
      (*dwarf2_debug_hooks.begin_block) (line, blocknum);
*************** vmsdbgout_begin_block (register unsigned
*** 1242,1248 ****
     lexical block.  */
  
  static void
! vmsdbgout_end_block (register unsigned line, register unsigned blocknum)
  {
    if (write_symbols == VMS_AND_DWARF2_DEBUG)
      (*dwarf2_debug_hooks.end_block) (line, blocknum);
--- 1242,1248 ----
     lexical block.  */
  
  static void
! vmsdbgout_end_block (unsigned line, unsigned blocknum)
  {
    if (write_symbols == VMS_AND_DWARF2_DEBUG)
      (*dwarf2_debug_hooks.end_block) (line, blocknum);
*************** static unsigned int
*** 1315,1322 ****
  lookup_filename (const char *file_name)
  {
    static unsigned int last_file_lookup_index = 0;
!   register char *fn;
!   register unsigned i;
    const char *fnam;
    long long cdt = 0;
    long ebk = 0;
--- 1315,1322 ----
  lookup_filename (const char *file_name)
  {
    static unsigned int last_file_lookup_index = 0;
!   char *fn;
!   unsigned i;
    const char *fnam;
    long long cdt = 0;
    long ebk = 0;
*************** vmsdbgout_write_source_line (unsigned li
*** 1405,1412 ****
  }
  
  static void
! vmsdbgout_source_line (register unsigned line, unsigned int column,
! 		       register const char *filename,
                         int discriminator, bool is_stmt)
  {
    if (write_symbols == VMS_AND_DWARF2_DEBUG)
--- 1405,1412 ----
  }
  
  static void
! vmsdbgout_source_line (unsigned line, unsigned int column,
! 		       const char *filename,
                         int discriminator, bool is_stmt)
  {
    if (write_symbols == VMS_AND_DWARF2_DEBUG)
diff -Nrcpad gcc-10.3.0/gnattools/ChangeLog gcc-10.4.0/gnattools/ChangeLog
*** gcc-10.3.0/gnattools/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gnattools/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/gotools/ChangeLog gcc-10.4.0/gotools/ChangeLog
*** gcc-10.3.0/gotools/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/gotools/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/include/ChangeLog gcc-10.4.0/include/ChangeLog
*** gcc-10.3.0/include/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/include/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/intl/ChangeLog gcc-10.4.0/intl/ChangeLog
*** gcc-10.3.0/intl/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/intl/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,17 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR jit/100096
+ 	* configure.ac: Add --enable-host-shared support.
+ 	* Makefile.in: Update copyright.  Add @PICFLAG@ to CFLAGS.
+ 	* configure: Regenerated.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/intl/Makefile.in gcc-10.4.0/intl/Makefile.in
*** gcc-10.3.0/intl/Makefile.in	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/intl/Makefile.in	Tue Jun 28 08:54:30 2022
***************
*** 1,5 ****
  # Makefile for directory with message catalog handling library of GNU gettext
! # Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify it
  # under the terms of the GNU Library General Public License as published
--- 1,5 ----
  # Makefile for directory with message catalog handling library of GNU gettext
! # Copyright (C) 1995-2021 Free Software Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify it
  # under the terms of the GNU Library General Public License as published
*************** RANLIB = @RANLIB@
*** 45,51 ****
  YACC = @INTLBISON@ -y -d
  YFLAGS = --name-prefix=__gettext
  CPPFLAGS = @CPPFLAGS@
! CFLAGS = @CFLAGS@
  LDFLAGS = @LDFLAGS@
  LIBS = @LIBS@
  DEFS = -DHAVE_CONFIG_H
--- 45,51 ----
  YACC = @INTLBISON@ -y -d
  YFLAGS = --name-prefix=__gettext
  CPPFLAGS = @CPPFLAGS@
! CFLAGS = @CFLAGS@ @PICFLAG@
  LDFLAGS = @LDFLAGS@
  LIBS = @LIBS@
  DEFS = -DHAVE_CONFIG_H
diff -Nrcpad gcc-10.3.0/intl/configure gcc-10.4.0/intl/configure
*** gcc-10.3.0/intl/configure	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/intl/configure	Tue Jun 28 08:54:30 2022
*************** ac_unique_file="gettext.c"
*** 622,627 ****
--- 622,628 ----
  ac_header_list=
  ac_subst_vars='LTLIBOBJS
  LIBOBJS
+ PICFLAG
  BISON3_NO
  BISON3_YES
  INCINTL
*************** with_included_gettext
*** 726,731 ****
--- 727,733 ----
  with_libintl_prefix
  with_libintl_type
  enable_maintainer_mode
+ enable_host_shared
  '
        ac_precious_vars='build_alias
  host_alias
*************** Optional Features:
*** 1350,1355 ****
--- 1352,1358 ----
    --disable-nls           do not use Native Language Support
    --disable-rpath         do not hardcode runtime library paths
    --enable-maintainer-mode enable rules only needed by maintainers
+   --enable-host-shared    build host code as shared libraries
  
  Optional Packages:
    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
*************** $as_echo "$ac_prog_version" >&6; }
*** 6814,6819 ****
--- 6817,6831 ----
  fi
  
  
+ 
+ # Check whether --enable-host-shared was given.
+ if test "${enable_host_shared+set}" = set; then :
+   enableval=$enable_host_shared; PICFLAG=-fPIC
+ else
+   PICFLAG=
+ fi
+ 
+ 
  
  ac_config_files="$ac_config_files Makefile config.intl"
  
diff -Nrcpad gcc-10.3.0/intl/configure.ac gcc-10.4.0/intl/configure.ac
*** gcc-10.3.0/intl/configure.ac	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/intl/configure.ac	Tue Jun 28 08:54:30 2022
*************** fi
*** 69,73 ****
--- 69,79 ----
  AC_SUBST(BISON3_YES)
  AC_SUBST(BISON3_NO)
  
+ AC_ARG_ENABLE(host-shared,
+ [AS_HELP_STRING([--enable-host-shared],
+ 		[build host code as shared libraries])],
+ [PICFLAG=-fPIC], [PICFLAG=])
+ AC_SUBST(PICFLAG)
+ 
  AC_CONFIG_FILES(Makefile config.intl)
  AC_OUTPUT
diff -Nrcpad gcc-10.3.0/libada/ChangeLog gcc-10.4.0/libada/ChangeLog
*** gcc-10.3.0/libada/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libada/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libatomic/ChangeLog gcc-10.4.0/libatomic/ChangeLog
*** gcc-10.3.0/libatomic/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libatomic/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libbacktrace/ChangeLog gcc-10.4.0/libbacktrace/ChangeLog
*** gcc-10.3.0/libbacktrace/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libbacktrace/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libcc1/ChangeLog gcc-10.4.0/libcc1/ChangeLog
*** gcc-10.3.0/libcc1/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libcc1/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,12 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-29  Iain Sandoe  <iainsandoe@Apollo-1-leo.local>
+ 
+ 	* Makefile.am: Switch mdynamic-no-pic to fPIC.
+ 	* Makefile.in: Regenerated.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libcc1/Makefile.am gcc-10.4.0/libcc1/Makefile.am
*** gcc-10.3.0/libcc1/Makefile.am	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcc1/Makefile.am	Tue Jun 28 08:54:30 2022
*************** AM_CXXFLAGS = $(WARN_FLAGS) $(WERROR) $(
*** 28,33 ****
--- 28,34 ----
  if DARWIN_DYNAMIC_LOOKUP
  AM_CXXFLAGS += -Wl,-undefined,dynamic_lookup
  endif
+ override CXXFLAGS := $(subst -mdynamic-no-pic,-fPIC,$(CXXFLAGS))
  override CXXFLAGS := $(filter-out -fsanitize=address,$(CXXFLAGS))
  override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS))
  # Can be simplified when libiberty becomes a normal convenience library.
diff -Nrcpad gcc-10.3.0/libcc1/Makefile.in gcc-10.4.0/libcc1/Makefile.in
*** gcc-10.3.0/libcc1/Makefile.in	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcc1/Makefile.in	Tue Jun 28 08:54:30 2022
*************** uninstall-am: uninstall-cc1libLTLIBRARIE
*** 802,807 ****
--- 802,808 ----
  
  .PRECIOUS: Makefile
  
+ override CXXFLAGS := $(subst -mdynamic-no-pic,-fPIC,$(CXXFLAGS))
  override CXXFLAGS := $(filter-out -fsanitize=address,$(CXXFLAGS))
  override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS))
  
diff -Nrcpad gcc-10.3.0/libcpp/ChangeLog gcc-10.4.0/libcpp/ChangeLog
*** gcc-10.3.0/libcpp/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libcpp/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,59 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-06-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/105732
+ 	* expr.c (_cpp_parse_expr): Handle CPP_PADDING by just another
+ 	token.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/104147
+ 	* macro.c (funlike_invocation_p): For padding prefer a token
+ 	with val.source non-NULL especially if it has PREV_WHITE set
+ 	on val.source->flags.  Add gcc_assert that CPP_PADDING tokens
+ 	don't have PREV_WHITE set in flags.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* directives.c (destringize_and_run): Push &pfile->avoid_paste
+ 	instead of a copy of pfile->directive_result for the CPP_PADDING
+ 	case.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR preprocessor/89971
+ 	* macro.c (replace_args): For ##__VA_OPT__, if __VA_OPT__ expands
+ 	to no tokens at all, drop PASTE_LEFT flag from the previous token.
+ 
+ 2021-05-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/100450
+ 	* lex.c (cpp_avoid_paste): Handle token1 CPP_PRAGMA like CPP_NAME.
+ 
+ 2021-04-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* include/line-map.h (IS_MACRO_LOC): Delete.
+ 	* line-map.c (linemap_location_from_macro_expansion_p): Test
+ 	LINEMAPS_MACRO_LOWEST_LOCATION of the linemap.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libcpp/directives.c gcc-10.4.0/libcpp/directives.c
*** gcc-10.3.0/libcpp/directives.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcpp/directives.c	Tue Jun 28 08:54:30 2022
*************** destringize_and_run (cpp_reader *pfile,
*** 1911,1918 ****
    else
      {
        count = 1;
!       toks = XNEW (cpp_token);
!       toks[0] = pfile->directive_result;
  
        /* If we handled the entire pragma internally, make sure we get the
  	 line number correct for the next token.  */
--- 1911,1917 ----
    else
      {
        count = 1;
!       toks = &pfile->avoid_paste;
  
        /* If we handled the entire pragma internally, make sure we get the
  	 line number correct for the next token.  */
diff -Nrcpad gcc-10.3.0/libcpp/expr.c gcc-10.4.0/libcpp/expr.c
*** gcc-10.3.0/libcpp/expr.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcpp/expr.c	Tue Jun 28 08:54:30 2022
*************** _cpp_parse_expr (cpp_reader *pfile, bool
*** 1340,1345 ****
--- 1340,1349 ----
  	    op.op = CPP_UMINUS;
  	  break;
  
+ 	case CPP_PADDING:
+ 	  lex_count--;
+ 	  continue;
+ 
  	default:
  	  if ((int) op.op <= (int) CPP_EQ || (int) op.op >= (int) CPP_PLUS_EQ)
  	    SYNTAX_ERROR2_AT (op.loc,
diff -Nrcpad gcc-10.3.0/libcpp/include/line-map.h gcc-10.4.0/libcpp/include/line-map.h
*** gcc-10.3.0/libcpp/include/line-map.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcpp/include/line-map.h	Tue Jun 28 08:54:30 2022
*************** struct GTY((tag ("2"))) line_map_macro :
*** 561,567 ****
  #define linemap_assert_fails(EXPR) (! (EXPR))
  #endif
  
! /* Get whether location LOC is an ad-hoc, ordinary or macro location.  */
  
  inline bool
  IS_ORDINARY_LOC (location_t loc)
--- 561,567 ----
  #define linemap_assert_fails(EXPR) (! (EXPR))
  #endif
  
! /* Get whether location LOC is an ordinary location.  */
  
  inline bool
  IS_ORDINARY_LOC (location_t loc)
*************** IS_ORDINARY_LOC (location_t loc)
*** 569,586 ****
    return loc < LINE_MAP_MAX_LOCATION;
  }
  
  inline bool
  IS_ADHOC_LOC (location_t loc)
  {
    return loc > MAX_LOCATION_T;
  }
  
- inline bool
- IS_MACRO_LOC (location_t loc)
- {
-   return !IS_ORDINARY_LOC (loc) && !IS_ADHOC_LOC (loc);
- }
- 
  /* Categorize line map kinds.  */
  
  inline bool
--- 569,582 ----
    return loc < LINE_MAP_MAX_LOCATION;
  }
  
+ /* Get whether location LOC is an ad-hoc location.  */
+ 
  inline bool
  IS_ADHOC_LOC (location_t loc)
  {
    return loc > MAX_LOCATION_T;
  }
  
  /* Categorize line map kinds.  */
  
  inline bool
diff -Nrcpad gcc-10.3.0/libcpp/lex.c gcc-10.4.0/libcpp/lex.c
*** gcc-10.3.0/libcpp/lex.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcpp/lex.c	Tue Jun 28 08:54:30 2022
*************** cpp_avoid_paste (cpp_reader *pfile, cons
*** 3485,3490 ****
--- 3485,3491 ----
      case CPP_DEREF:	return c == '*';
      case CPP_DOT:	return c == '.' || c == '%' || b == CPP_NUMBER;
      case CPP_HASH:	return c == '#' || c == '%'; /* Digraph form.  */
+     case CPP_PRAGMA:
      case CPP_NAME:	return ((b == CPP_NUMBER
  				 && name_p (pfile, &token2->val.str))
  				|| b == CPP_NAME
diff -Nrcpad gcc-10.3.0/libcpp/line-map.c gcc-10.4.0/libcpp/line-map.c
*** gcc-10.3.0/libcpp/line-map.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcpp/line-map.c	Tue Jun 28 08:54:30 2022
*************** linemap_location_from_macro_expansion_p
*** 1244,1250 ****
    if (IS_ADHOC_LOC (location))
      location = get_location_from_adhoc_loc (set, location);
  
!   return IS_MACRO_LOC (location);
  }
  
  /* Given two virtual locations *LOC0 and *LOC1, return the first
--- 1244,1250 ----
    if (IS_ADHOC_LOC (location))
      location = get_location_from_adhoc_loc (set, location);
  
!   return location >= LINEMAPS_MACRO_LOWEST_LOCATION (set);
  }
  
  /* Given two virtual locations *LOC0 and *LOC1, return the first
diff -Nrcpad gcc-10.3.0/libcpp/macro.c gcc-10.4.0/libcpp/macro.c
*** gcc-10.3.0/libcpp/macro.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libcpp/macro.c	Tue Jun 28 08:54:30 2022
*************** funlike_invocation_p (cpp_reader *pfile,
*** 1315,1322 ****
        token = cpp_get_token (pfile);
        if (token->type != CPP_PADDING)
  	break;
        if (padding == NULL
! 	  || (!(padding->flags & PREV_WHITE) && token->val.source == NULL))
  	padding = token;
      }
  
--- 1315,1325 ----
        token = cpp_get_token (pfile);
        if (token->type != CPP_PADDING)
  	break;
+       gcc_assert ((token->flags & PREV_WHITE) == 0);
        if (padding == NULL
! 	  || padding->val.source == NULL
! 	  || (!(padding->val.source->flags & PREV_WHITE)
! 	      && token->val.source == NULL))
  	padding = token;
      }
  
*************** replace_args (cpp_reader *pfile, cpp_has
*** 1991,1996 ****
--- 1994,2004 ----
  		  paste_flag = tokens_buff_last_token_ptr (buff);
  		}
  
+ 	      if (start && paste_flag == start && (*start)->flags & PASTE_LEFT)
+ 		/* If __VA_OPT__ expands to nothing (either because __VA_ARGS__
+ 		   is empty or because it is __VA_OPT__() ), drop PASTE_LEFT
+ 		   flag from previous token.  */
+ 		copy_paste_flag (pfile, start, &pfile->avoid_paste);
  	      if (src->flags & PASTE_LEFT)
  		{
  		  /* With a non-empty __VA_OPT__ on the LHS of ##, the last
diff -Nrcpad gcc-10.3.0/libcpp/po/ChangeLog gcc-10.4.0/libcpp/po/ChangeLog
*** gcc-10.3.0/libcpp/po/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libcpp/po/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libdecnumber/ChangeLog gcc-10.4.0/libdecnumber/ChangeLog
*** gcc-10.3.0/libdecnumber/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libdecnumber/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libffi/ChangeLog gcc-10.4.0/libffi/ChangeLog
*** gcc-10.3.0/libffi/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libffi/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,18 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* src/x86/ffi64.c (classify_argument): For FFI_TYPE_STRUCT set words
+ 	to number of words needed for type->size + byte_offset bytes rather
+ 	than just type->size bytes.  Compute pos before the loop and check
+ 	total size of the structure.
+ 	* testsuite/libffi.call/nested_struct12.c: New test.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libffi/src/x86/ffi64.c gcc-10.4.0/libffi/src/x86/ffi64.c
*** gcc-10.3.0/libffi/src/x86/ffi64.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libffi/src/x86/ffi64.c	Tue Jun 28 08:54:30 2022
*************** classify_argument (ffi_type *type, enum
*** 217,223 ****
      case FFI_TYPE_STRUCT:
        {
  	const size_t UNITS_PER_WORD = 8;
! 	size_t words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  	ffi_type **ptr;
  	int i;
  	enum x86_64_reg_class subclasses[MAX_CLASSES];
--- 217,224 ----
      case FFI_TYPE_STRUCT:
        {
  	const size_t UNITS_PER_WORD = 8;
! 	size_t words = (type->size + byte_offset + UNITS_PER_WORD - 1)
! 		       / UNITS_PER_WORD;
  	ffi_type **ptr;
  	int i;
  	enum x86_64_reg_class subclasses[MAX_CLASSES];
*************** classify_argument (ffi_type *type, enum
*** 241,256 ****
  	/* Merge the fields of structure.  */
  	for (ptr = type->elements; *ptr != NULL; ptr++)
  	  {
! 	    size_t num;
  
  	    byte_offset = ALIGN (byte_offset, (*ptr)->alignment);
  
  	    num = classify_argument (*ptr, subclasses, byte_offset % 8);
  	    if (num == 0)
  	      return 0;
! 	    for (i = 0; i < num; i++)
  	      {
- 		size_t pos = byte_offset / 8;
  		classes[i + pos] =
  		  merge_classes (subclasses[i], classes[i + pos]);
  	      }
--- 242,257 ----
  	/* Merge the fields of structure.  */
  	for (ptr = type->elements; *ptr != NULL; ptr++)
  	  {
! 	    size_t num, pos;
  
  	    byte_offset = ALIGN (byte_offset, (*ptr)->alignment);
  
  	    num = classify_argument (*ptr, subclasses, byte_offset % 8);
  	    if (num == 0)
  	      return 0;
! 	    pos = byte_offset / 8;
! 	    for (i = 0; i < num && (i + pos) < words; i++)
  	      {
  		classes[i + pos] =
  		  merge_classes (subclasses[i], classes[i + pos]);
  	      }
diff -Nrcpad gcc-10.3.0/libffi/testsuite/libffi.call/nested_struct12.c gcc-10.4.0/libffi/testsuite/libffi.call/nested_struct12.c
*** gcc-10.3.0/libffi/testsuite/libffi.call/nested_struct12.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libffi/testsuite/libffi.call/nested_struct12.c	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,107 ----
+ /* Area:	ffi_call, closure_call
+    Purpose:	Check structure passing.
+    Limitations:	none.
+    PR:		none.
+    Originator:	<jincheng@ca.ibm.com> and <jakub@redhat.com> 20210609	 */
+ 
+ /* { dg-do run } */
+ #include "ffitest.h"
+ 
+ typedef struct A {
+   float a, b;
+ } A;
+ 
+ typedef struct B {
+   float x;
+   struct A y;
+ } B;
+ 
+ B B_fn(float b0, struct B b1)
+ {
+   struct B result;
+ 
+   result.x = b0 + b1.x;
+   result.y.a = b0 + b1.y.a;
+   result.y.b = b0 + b1.y.b;
+ 
+   printf("%g %g %g %g: %g %g %g\n", b0, b1.x, b1.y.a, b1.y.b,
+ 	 result.x, result.y.a, result.y.b);
+ 
+   return result;
+ }
+ 
+ static void
+ B_gn(ffi_cif* cif __UNUSED__, void* resp, void** args,
+      void* userdata __UNUSED__)
+ {
+   float b0;
+   struct B b1;
+ 
+   b0 = *(float*)(args[0]);
+   b1 = *(struct B*)(args[1]);
+ 
+   *(B*)resp = B_fn(b0, b1);
+ }
+ 
+ int main (void)
+ {
+   ffi_cif cif;
+   void *code;
+   ffi_closure *pcl = ffi_closure_alloc(sizeof(ffi_closure), &code);
+   void* args_dbl[3];
+   ffi_type* cls_struct_fields[3];
+   ffi_type* cls_struct_fields1[3];
+   ffi_type cls_struct_type, cls_struct_type1;
+   ffi_type* dbl_arg_types[3];
+ 
+   float e_dbl = 12.125f;
+   struct B f_dbl = { 24.75f, { 31.625f, 32.25f } };
+ 
+   struct B res_dbl;
+ 
+   cls_struct_type.size = 0;
+   cls_struct_type.alignment = 0;
+   cls_struct_type.type = FFI_TYPE_STRUCT;
+   cls_struct_type.elements = cls_struct_fields;
+ 
+   cls_struct_type1.size = 0;
+   cls_struct_type1.alignment = 0;
+   cls_struct_type1.type = FFI_TYPE_STRUCT;
+   cls_struct_type1.elements = cls_struct_fields1;
+ 
+   cls_struct_fields[0] = &ffi_type_float;
+   cls_struct_fields[1] = &ffi_type_float;
+   cls_struct_fields[2] = NULL;
+ 
+   cls_struct_fields1[0] = &ffi_type_float;
+   cls_struct_fields1[1] = &cls_struct_type;
+   cls_struct_fields1[2] = NULL;
+ 
+ 
+   dbl_arg_types[0] = &ffi_type_float;
+   dbl_arg_types[1] = &cls_struct_type1;
+   dbl_arg_types[2] = NULL;
+ 
+   CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &cls_struct_type1,
+ 		     dbl_arg_types) == FFI_OK);
+ 
+   args_dbl[0] = &e_dbl;
+   args_dbl[1] = &f_dbl;
+   args_dbl[2] = NULL;
+ 
+   ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl);
+   /* { dg-output "12.125 24.75 31.625 32.25: 36.875 43.75 44.375" } */
+   CHECK( res_dbl.x == (e_dbl + f_dbl.x));
+   CHECK( res_dbl.y.a == (e_dbl + f_dbl.y.a));
+   CHECK( res_dbl.y.b == (e_dbl + f_dbl.y.b));
+ 
+   CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK);
+ 
+   res_dbl = ((B(*)(float, B))(code))(e_dbl, f_dbl);
+   /* { dg-output "\n12.125 24.75 31.625 32.25: 36.875 43.75 44.375" } */
+   CHECK( res_dbl.x == (e_dbl + f_dbl.x));
+   CHECK( res_dbl.y.a == (e_dbl + f_dbl.y.a));
+   CHECK( res_dbl.y.b == (e_dbl + f_dbl.y.b));
+ 
+   exit(0);
+ }
diff -Nrcpad gcc-10.3.0/libgcc/ChangeLog gcc-10.4.0/libgcc/ChangeLog
*** gcc-10.3.0/libgcc/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libgcc/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,141 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config.host: Add weak emutls crt to the extra_parts.
+ 	(*-*-darwin*): Add logic to build a shared unwinder library for
+ 	Darwin8-10.  Add shim declaration header to powerpc*-darwin builds.
+ 	* config/i386/darwin-lib.h (DECLARE_LIBRARY_RENAMES): Remove
+ 	workaround.
+ 	* config/libgcc-libsystem.ver: Add exclude list for the system-
+ 	provided unwinder.
+ 	* config/t-slibgcc-darwin: Bump SO version, remove stubs code.
+ 	Build a legacy libgcc_s.1 and the supporting pieces (all FAT libs).
+ 	* config/t-darwin-ehs: Add dependencies to the shared unwinder
+ 	objects.  Add dependency on unwind.h.
+ 	* config/t-darwin: Reorganise the EH fragments to place them for
+ 	inclusion in a shared EH lib.  Add libgcc_tm.h to the dependencies
+ 	for darwin10-unwind-find-enc-func.
+ 	* config/i386/libgcc-darwin.10.4.ver: Removed.
+ 	* config/i386/libgcc-darwin.10.5.ver: Removed.
+ 	* config/rs6000/libgcc-darwin.10.4.ver: Removed.
+ 	* config/rs6000/libgcc-darwin.10.5.ver: Removed.
+ 	* config/i386/t-darwin: Build legacy libgcc_s.1.
+ 	* config/rs6000/t-darwin: Likewise.
+ 	* config/rs6000/t-darwin-ehs: Remove dependency on the powerpc end
+ 	file.  Add darwin-fallback.o.
+ 	* config/darwin-unwind.ver: New file.
+ 	* config/i386/libgcc-darwin.ver: New file.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-11-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/t-darwin: Build weak-defined emutls objects.
+ 	* emutls.c (__emutls_get_address): Add optional attributes.
+ 	(__emutls_register_common): Likewise.
+ 	(EMUTLS_ATTR): New.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config.host: Use convenience library for Darwin10
+ 	unwinder shim.
+ 	* config/t-darwin: Build Darwin10 unwinder shim as a
+ 	convenience library.
+ 
+ 2022-05-16  Sebastian Pop  <spop@amazon.com>
+ 
+ 	PR target/105162
+ 	* config/aarch64/lse.S: Define BARRIER and handle memory MODEL 5.
+ 	* config/aarch64/t-lse: Add a 5th memory model for _sync functions.
+ 
+ 2022-02-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-07-15  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/morestack.S (R2_SAVE): Define.
+ 	(__morestack): Save and restore r2.  Set up r2 for called
+ 	functions.
+ 
+ 2022-02-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	Backported from master:
+ 	2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/rs6000/morestack.S,
+ 	* config/rs6000/tramp.S: Support __PCREL__ code.
+ 
+ 2021-10-27  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config.host (hppa*64*-*-linux*): Don't add pa/t-linux to
+ 	tmake_file.
+ 	* config/pa/linux-atomic.c: Define u8, u16 and u64 types.
+ 	Use them in FETCH_AND_OP_2, OP_AND_FETCH_2, COMPARE_AND_SWAP_2,
+ 	SYNC_LOCK_TEST_AND_SET_2 and SYNC_LOCK_RELEASE_1 macros.
+ 	* config/pa/t-linux64 (LIB1ASMSRC): New define.
+ 	(LIB1ASMFUNCS): Revise.
+ 	(HOST_LIBGCC2_CFLAGS): Add "-DLINUX=1".
+ 
+ 2021-08-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/value-unwind.h: Add missing runtime exception
+ 	paragraph.
+ 	* config/frv/frv-abi.h: Likewise.
+ 	* config/i386/value-unwind.h: Likewise.
+ 	* config/pa/pa64-hpux-lib.h: Likewise.
+ 
+ 2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2021-08-24  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102035
+ 	* config/arm/cmse_nonsecure_call.S (__gnu_cmse_nonsecure_call):
+ 	Add vlldm erratum work-around.
+ 
+ 2021-06-18  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	Backported from master:
+ 	2021-06-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	PR target/99939
+ 	* config/arm/cmse_nonsecure_call.S: Add	__ARM_FEATURE_MVE
+ 	macro.
+ 	* config/arm/t-arm: To link cmse.o and cmse_nonsecure_call.o
+ 	on passing -mcmse option.
+ 
+ 2021-04-27  Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/98952
+ 	* config/rs6000/tramp.S (__trampoline_setup, elfv1 #ifdef): Fix
+ 	trampoline size comparison in 32-bit by reversing test and
+ 	combining load immediate with compare.  Fix backported from trunk
+ 	change on 4/23, 886b6c1e8af502b69e3f318b9830b73b88215878.
+ 	(__trampoline_setup, elfv2 #ifdef): Fix trampoline size comparison
+ 	in 32-bit by reversing test and combining load immediate with
+ 	compare.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/97653
+ 	* config/rs6000/t-linux (IBM128_STATIC_OBJS): Fix spelling, use
+ 	$(objext) instead of $(object).  Use _floatunditf instead of
+ 	_floatunsditf.  Add tf <-> ti conversion objects.
+ 	(IBM128_SHARED_OBJS): Use proper substitution reference syntax.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libgcc/config/aarch64/lse.S gcc-10.4.0/libgcc/config/aarch64/lse.S
*** gcc-10.3.0/libgcc/config/aarch64/lse.S	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/aarch64/lse.S	Tue Jun 28 08:54:30 2022
*************** see the files COPYING3 and COPYING.RUNTI
*** 87,110 ****
--- 87,130 ----
  # define L
  # define M     0x000000
  # define N     0x000000
+ # define BARRIER
  #elif MODEL == 2
  # define SUFF  _acq
  # define A     a
  # define L
  # define M     0x400000
  # define N     0x800000
+ # define BARRIER
  #elif MODEL == 3
  # define SUFF  _rel
  # define A
  # define L     l
  # define M     0x008000
  # define N     0x400000
+ # define BARRIER
  #elif MODEL == 4
  # define SUFF  _acq_rel
  # define A     a
  # define L     l
  # define M     0x408000
  # define N     0xc00000
+ # define BARRIER
+ #elif MODEL == 5
+ # define SUFF  _sync
+ #ifdef L_swp
+ /* swp has _acq semantics.  */
+ #  define A    a
+ #  define L
+ #  define M    0x400000
+ #  define N    0x800000
+ #else
+ /* All other _sync functions have _seq semantics.  */
+ #  define A    a
+ #  define L    l
+ #  define M    0x408000
+ #  define N    0xc00000
+ #endif
+ # define BARRIER dmb		ish
  #else
  # error
  #endif
*************** see the files COPYING3 and COPYING.RUNTI
*** 127,133 ****
  #endif
  
  #define NAME(BASE)		glue4(__aarch64_, BASE, SIZE, SUFF)
! #define LDXR			glue4(ld, A, xr, S)
  #define STXR			glue4(st, L, xr, S)
  
  /* Temporary registers used.  Other than these, only the return value
--- 147,158 ----
  #endif
  
  #define NAME(BASE)		glue4(__aarch64_, BASE, SIZE, SUFF)
! #if MODEL == 5
! /* Drop A for _sync functions.  */
! # define LDXR			glue3(ld, xr, S)
! #else
! # define LDXR			glue4(ld, A, xr, S)
! #endif
  #define STXR			glue4(st, L, xr, S)
  
  /* Temporary registers used.  Other than these, only the return value
*************** STARTFN	NAME(cas)
*** 183,192 ****
  	bne		1f
  	STXR		w(tmp1), s(1), [x2]
  	cbnz		w(tmp1), 0b
! 1:	ret
  
  #else
! #define LDXP	glue3(ld, A, xp)
  #define STXP	glue3(st, L, xp)
  #ifdef HAVE_AS_LSE
  # define CASP	glue3(casp, A, L)	x0, x1, x2, x3, [x4]
--- 208,223 ----
  	bne		1f
  	STXR		w(tmp1), s(1), [x2]
  	cbnz		w(tmp1), 0b
! 1:	BARRIER
! 	ret
  
  #else
! #if MODEL == 5
! /* Drop A for _sync functions.  */
! # define LDXP	glue2(ld, xp)
! #else
! # define LDXP	glue3(ld, A, xp)
! #endif
  #define STXP	glue3(st, L, xp)
  #ifdef HAVE_AS_LSE
  # define CASP	glue3(casp, A, L)	x0, x1, x2, x3, [x4]
*************** STARTFN	NAME(cas)
*** 205,211 ****
  	bne		1f
  	STXP		w(tmp2), x2, x3, [x4]
  	cbnz		w(tmp2), 0b
! 1:	ret
  
  #endif
  
--- 236,243 ----
  	bne		1f
  	STXP		w(tmp2), x2, x3, [x4]
  	cbnz		w(tmp2), 0b
! 1:	BARRIER
! 	ret
  
  #endif
  
*************** STARTFN	NAME(swp)
*** 229,234 ****
--- 261,267 ----
  0:	LDXR		s(0), [x1]
  	STXR		w(tmp1), s(tmp0), [x1]
  	cbnz		w(tmp1), 0b
+ 	BARRIER
  	ret
  
  ENDFN	NAME(swp)
*************** STARTFN	NAME(LDNM)
*** 273,278 ****
--- 306,312 ----
  	OP		s(tmp1), s(0), s(tmp0)
  	STXR		w(tmp2), s(tmp1), [x1]
  	cbnz		w(tmp2), 0b
+ 	BARRIER
  	ret
  
  ENDFN	NAME(LDNM)
diff -Nrcpad gcc-10.3.0/libgcc/config/aarch64/t-lse gcc-10.4.0/libgcc/config/aarch64/t-lse
*** gcc-10.3.0/libgcc/config/aarch64/t-lse	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/aarch64/t-lse	Tue Jun 28 08:54:30 2022
***************
*** 18,30 ****
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! # Compare-and-swap has 5 sizes and 4 memory models.
  S0 := $(foreach s, 1 2 4 8 16, $(addsuffix _$(s), cas))
! O0 := $(foreach m, 1 2 3 4, $(addsuffix _$(m)$(objext), $(S0)))
  
! # Swap, Load-and-operate have 4 sizes and 4 memory models
  S1 := $(foreach s, 1 2 4 8, $(addsuffix _$(s), swp ldadd ldclr ldeor ldset))
! O1 := $(foreach m, 1 2 3 4, $(addsuffix _$(m)$(objext), $(S1)))
  
  LSE_OBJS := $(O0) $(O1)
  
--- 18,30 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! # Compare-and-swap has 5 sizes and 5 memory models.
  S0 := $(foreach s, 1 2 4 8 16, $(addsuffix _$(s), cas))
! O0 := $(foreach m, 1 2 3 4 5, $(addsuffix _$(m)$(objext), $(S0)))
  
! # Swap, Load-and-operate have 4 sizes and 5 memory models
  S1 := $(foreach s, 1 2 4 8, $(addsuffix _$(s), swp ldadd ldclr ldeor ldset))
! O1 := $(foreach m, 1 2 3 4 5, $(addsuffix _$(m)$(objext), $(S1)))
  
  LSE_OBJS := $(O0) $(O1)
  
diff -Nrcpad gcc-10.3.0/libgcc/config/aarch64/value-unwind.h gcc-10.4.0/libgcc/config/aarch64/value-unwind.h
*** gcc-10.3.0/libgcc/config/aarch64/value-unwind.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/aarch64/value-unwind.h	Tue Jun 28 08:54:30 2022
***************
*** 13,18 ****
--- 13,22 ----
     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
diff -Nrcpad gcc-10.3.0/libgcc/config/arm/cmse_nonsecure_call.S gcc-10.4.0/libgcc/config/arm/cmse_nonsecure_call.S
*** gcc-10.3.0/libgcc/config/arm/cmse_nonsecure_call.S	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/arm/cmse_nonsecure_call.S	Tue Jun 28 08:54:30 2022
***************
*** 25,31 ****
  
  .syntax unified
  #ifdef __ARM_PCS_VFP
! # if __ARM_FP & 0x8
  	.fpu fpv5-d16
  # else
  	.fpu fpv4-sp-d16
--- 25,31 ----
  
  .syntax unified
  #ifdef __ARM_PCS_VFP
! # if (__ARM_FP & 0x8) || (__ARM_FEATURE_MVE & 1)
  	.fpu fpv5-d16
  # else
  	.fpu fpv4-sp-d16
*************** vmov	    s24, s25, r5, r5
*** 59,65 ****
  vmov	    s26, s27, r5, r5
  vmov	    s28, s29, r5, r5
  vmov	    s30, s31, r5, r5
! #elif __ARM_FP & 0x08
  vmov.f64    d9, d8
  vmov.f64    d10, d8
  vmov.f64    d11, d8
--- 59,65 ----
  vmov	    s26, s27, r5, r5
  vmov	    s28, s29, r5, r5
  vmov	    s30, s31, r5, r5
! #elif (__ARM_FP & 0x8) || (__ARM_FEATURE_MVE & 1)
  vmov.f64    d9, d8
  vmov.f64    d10, d8
  vmov.f64    d11, d8
*************** blxns	    r4
*** 102,107 ****
--- 102,112 ----
  #ifdef __ARM_PCS_VFP
  vpop.f64    {d8-d15}
  #else
+ /* VLLDM erratum mitigation sequence. */
+ mrs	    r5, control
+ tst	    r5, #8	  /* CONTROL_S.SFPA */
+ it	    ne
+ .inst.w	    0xeeb00a40	  /* vmovne s0, s0 */
  vlldm	    sp		  /* Lazy restore of d0-d16 and FPSCR.  */
  add	    sp, sp, #0x88 /* Free space used to save floating point registers.  */
  #endif /* __ARM_PCS_VFP */
diff -Nrcpad gcc-10.3.0/libgcc/config/arm/t-arm gcc-10.4.0/libgcc/config/arm/t-arm
*** gcc-10.3.0/libgcc/config/arm/t-arm	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/arm/t-arm	Tue Jun 28 08:54:30 2022
*************** LIB1ASMFUNCS = _thumb1_case_sqi _thumb1_
*** 3,20 ****
  	_thumb1_case_uhi _thumb1_case_si _speculation_barrier
  
  HAVE_CMSE:=$(findstring __ARM_FEATURE_CMSE,$(shell $(gcc_compile_bare) -dM -E - </dev/null))
- HAVE_V81M:=$(findstring armv8.1-m.main,$(gcc_compile_bare))
  ifeq ($(shell $(gcc_compile_bare) -E -mcmse - </dev/null >/dev/null 2>/dev/null; echo $$?),0)
  CMSE_OPTS:=-mcmse
  endif
  
  ifdef HAVE_CMSE
! ifndef HAVE_V81M
  libgcc-objects += cmse.o cmse_nonsecure_call.o
  
  cmse.o: $(srcdir)/config/arm/cmse.c
  	$(gcc_compile) -c $(CMSE_OPTS) $<
  cmse_nonsecure_call.o: $(srcdir)/config/arm/cmse_nonsecure_call.S
  		       $(gcc_compile) -c $<
  endif
- endif
--- 3,19 ----
  	_thumb1_case_uhi _thumb1_case_si _speculation_barrier
  
  HAVE_CMSE:=$(findstring __ARM_FEATURE_CMSE,$(shell $(gcc_compile_bare) -dM -E - </dev/null))
  ifeq ($(shell $(gcc_compile_bare) -E -mcmse - </dev/null >/dev/null 2>/dev/null; echo $$?),0)
  CMSE_OPTS:=-mcmse
  endif
  
  ifdef HAVE_CMSE
! 
  libgcc-objects += cmse.o cmse_nonsecure_call.o
  
  cmse.o: $(srcdir)/config/arm/cmse.c
  	$(gcc_compile) -c $(CMSE_OPTS) $<
+ 
  cmse_nonsecure_call.o: $(srcdir)/config/arm/cmse_nonsecure_call.S
  		       $(gcc_compile) -c $<
  endif
diff -Nrcpad gcc-10.3.0/libgcc/config/avr/libf7/ChangeLog gcc-10.4.0/libgcc/config/avr/libf7/ChangeLog
*** gcc-10.3.0/libgcc/config/avr/libf7/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libgcc/config/avr/libf7/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libgcc/config/darwin-unwind.ver gcc-10.4.0/libgcc/config/darwin-unwind.ver
*** gcc-10.3.0/libgcc/config/darwin-unwind.ver	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgcc/config/darwin-unwind.ver	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,30 ----
+ # unwinder
+ __Unwind_DeleteException
+ __Unwind_Find_FDE
+ __Unwind_ForcedUnwind
+ __Unwind_GetGR
+ __Unwind_GetIP
+ __Unwind_GetLanguageSpecificData
+ __Unwind_GetRegionStart
+ __Unwind_GetTextRelBase
+ __Unwind_GetDataRelBase
+ __Unwind_RaiseException
+ __Unwind_Resume
+ __Unwind_SetGR
+ __Unwind_SetIP
+ __Unwind_FindEnclosingFunction
+ __Unwind_GetCFA
+ __Unwind_Backtrace
+ __Unwind_Resume_or_Rethrow
+ __Unwind_GetIPInfo
+ 
+ ___register_frame
+ ___register_frame_table
+ ___register_frame_info
+ ___register_frame_info_bases
+ ___register_frame_info_table
+ ___register_frame_info_table_bases
+ 
+ ___deregister_frame
+ ___deregister_frame_info
+ ___deregister_frame_info_bases
diff -Nrcpad gcc-10.3.0/libgcc/config/frv/frv-abi.h gcc-10.4.0/libgcc/config/frv/frv-abi.h
*** gcc-10.3.0/libgcc/config/frv/frv-abi.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/frv/frv-abi.h	Tue Jun 28 08:54:30 2022
***************
*** 14,19 ****
--- 14,23 ----
     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
diff -Nrcpad gcc-10.3.0/libgcc/config/i386/darwin-lib.h gcc-10.4.0/libgcc/config/i386/darwin-lib.h
*** gcc-10.3.0/libgcc/config/i386/darwin-lib.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/i386/darwin-lib.h	Tue Jun 28 08:54:30 2022
*************** a copy of the GCC Runtime Library Except
*** 22,32 ****
  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  <http://www.gnu.org/licenses/>.  */
  
! /* The system ___divdc3 routine in libSystem on darwin10 is not
!    accurate to 1ulp, ours is, so we avoid ever using the system name
!    for this routine and instead install a non-conflicting name that is
!    accurate.  See darwin_rename_builtins.  */
! #ifdef L_divdc3
! #define DECLARE_LIBRARY_RENAMES \
!   asm(".text; ___divdc3: jmp ___ieee_divdc3 ; .globl ___divdc3");
! #endif
--- 22,25 ----
  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  <http://www.gnu.org/licenses/>.  */
  
! extern void * _darwin10_Unwind_FindEnclosingFunction (void *);
diff -Nrcpad gcc-10.3.0/libgcc/config/i386/libgcc-darwin.10.4.ver gcc-10.4.0/libgcc/config/i386/libgcc-darwin.10.4.ver
*** gcc-10.3.0/libgcc/config/i386/libgcc-darwin.10.4.ver	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/i386/libgcc-darwin.10.4.ver	Thu Jan  1 00:00:00 1970
***************
*** 1,98 ****
- # 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/>.
- __Unwind_Backtrace
- __Unwind_DeleteException
- __Unwind_FindEnclosingFunction
- __Unwind_Find_FDE
- __Unwind_ForcedUnwind
- __Unwind_GetCFA
- __Unwind_GetDataRelBase
- __Unwind_GetGR
- __Unwind_GetIP
- __Unwind_GetLanguageSpecificData
- __Unwind_GetRegionStart
- __Unwind_GetTextRelBase
- __Unwind_RaiseException
- __Unwind_Resume
- __Unwind_Resume_or_Rethrow
- __Unwind_SetGR
- __Unwind_SetIP
- ___absvdi2
- ___absvsi2
- ___addvdi3
- ___addvsi3
- ___ashldi3
- ___ashrdi3
- ___clear_cache
- ___clzdi2
- ___clzsi2
- ___cmpdi2
- ___ctzdi2
- ___ctzsi2
- ___deregister_frame
- ___deregister_frame_info
- ___deregister_frame_info_bases
- ___divdc3
- ___divdi3
- ___divsc3
- ___divxc3
- ___enable_execute_stack
- ___ffsdi2
- ___fixdfdi
- ___fixsfdi
- ___fixunsdfdi
- ___fixunsdfsi
- ___fixunssfdi
- ___fixunssfsi
- ___fixunsxfdi
- ___fixunsxfsi
- ___fixxfdi
- ___floatdidf
- ___floatdisf
- ___floatdixf
- ___gcc_personality_v0
- ___lshrdi3
- ___moddi3
- ___muldc3
- ___muldi3
- ___mulsc3
- ___mulvdi3
- ___mulvsi3
- ___mulxc3
- ___negdi2
- ___negvdi2
- ___negvsi2
- ___paritydi2
- ___paritysi2
- ___popcountdi2
- ___popcountsi2
- ___powidf2
- ___powisf2
- ___powixf2
- ___register_frame
- ___register_frame_info
- ___register_frame_info_bases
- ___register_frame_info_table
- ___register_frame_info_table_bases
- ___register_frame_table
- ___subvdi3
- ___subvsi3
- ___ucmpdi2
- ___udivdi3
- ___udivmoddi4
- ___umoddi3
--- 0 ----
diff -Nrcpad gcc-10.3.0/libgcc/config/i386/libgcc-darwin.10.5.ver gcc-10.4.0/libgcc/config/i386/libgcc-darwin.10.5.ver
*** gcc-10.3.0/libgcc/config/i386/libgcc-darwin.10.5.ver	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/i386/libgcc-darwin.10.5.ver	Thu Jan  1 00:00:00 1970
***************
*** 1,102 ****
- # 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/>.
- __Unwind_Backtrace
- __Unwind_DeleteException
- __Unwind_FindEnclosingFunction
- __Unwind_Find_FDE
- __Unwind_ForcedUnwind
- __Unwind_GetCFA
- __Unwind_GetDataRelBase
- __Unwind_GetGR
- __Unwind_GetIP
- __Unwind_GetIPInfo
- __Unwind_GetLanguageSpecificData
- __Unwind_GetRegionStart
- __Unwind_GetTextRelBase
- __Unwind_RaiseException
- __Unwind_Resume
- __Unwind_Resume_or_Rethrow
- __Unwind_SetGR
- __Unwind_SetIP
- ___absvdi2
- ___absvsi2
- ___addvdi3
- ___addvsi3
- ___ashldi3
- ___ashrdi3
- ___clear_cache
- ___clzdi2
- ___clzsi2
- ___cmpdi2
- ___ctzdi2
- ___ctzsi2
- ___deregister_frame
- ___deregister_frame_info
- ___deregister_frame_info_bases
- ___divdc3
- ___divdi3
- ___divsc3
- ___divxc3
- ___enable_execute_stack
- ___ffsdi2
- ___fixdfdi
- ___fixsfdi
- ___fixunsdfdi
- ___fixunsdfsi
- ___fixunssfdi
- ___fixunssfsi
- ___fixunsxfdi
- ___fixunsxfsi
- ___fixxfdi
- ___floatdidf
- ___floatdisf
- ___floatdixf
- ___floatundidf
- ___floatundisf
- ___floatundixf
- ___gcc_personality_v0
- ___lshrdi3
- ___moddi3
- ___muldc3
- ___muldi3
- ___mulsc3
- ___mulvdi3
- ___mulvsi3
- ___mulxc3
- ___negdi2
- ___negvdi2
- ___negvsi2
- ___paritydi2
- ___paritysi2
- ___popcountdi2
- ___popcountsi2
- ___powidf2
- ___powisf2
- ___powixf2
- ___register_frame
- ___register_frame_info
- ___register_frame_info_bases
- ___register_frame_info_table
- ___register_frame_info_table_bases
- ___register_frame_table
- ___subvdi3
- ___subvsi3
- ___ucmpdi2
- ___udivdi3
- ___udivmoddi4
- ___umoddi3
--- 0 ----
diff -Nrcpad gcc-10.3.0/libgcc/config/i386/libgcc-darwin.ver gcc-10.4.0/libgcc/config/i386/libgcc-darwin.ver
*** gcc-10.3.0/libgcc/config/i386/libgcc-darwin.ver	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgcc/config/i386/libgcc-darwin.ver	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,4 ----
+ GCC_4.8.0 {
+   __cpu_model
+   __cpu_indicator_init
+ }
diff -Nrcpad gcc-10.3.0/libgcc/config/i386/t-darwin gcc-10.4.0/libgcc/config/i386/t-darwin
*** gcc-10.3.0/libgcc/config/i386/t-darwin	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/i386/t-darwin	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,9 ----
  LIB2_SIDITI_CONV_FUNCS = yes
  LIB2ADD = $(srcdir)/config/darwin-64.c
  LIB2FUNCS_EXCLUDE = _fixtfdi _fixunstfdi _floatditf _floatunditf
+ 
+ # Extra symbols for this port.
+ SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-darwin.ver
+ 
+ # Build a legacy libgcc_s.1
+ BUILD_LIBGCCS1 = YES
diff -Nrcpad gcc-10.3.0/libgcc/config/i386/value-unwind.h gcc-10.4.0/libgcc/config/i386/value-unwind.h
*** gcc-10.3.0/libgcc/config/i386/value-unwind.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/i386/value-unwind.h	Tue Jun 28 08:54:30 2022
***************
*** 13,18 ****
--- 13,22 ----
     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
diff -Nrcpad gcc-10.3.0/libgcc/config/libbid/ChangeLog gcc-10.4.0/libgcc/config/libbid/ChangeLog
*** gcc-10.3.0/libgcc/config/libbid/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libgcc/config/libbid/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libgcc/config/libgcc-libsystem.ver gcc-10.4.0/libgcc/config/libgcc-libsystem.ver
*** gcc-10.3.0/libgcc/config/libgcc-libsystem.ver	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/libgcc-libsystem.ver	Tue Jun 28 08:54:30 2022
***************
*** 1 ****
! _darwin10_Unwind_FindEnclosingFunction
--- 1,37 ----
! # We must use the unwinder provided by the OS, even if that has
! # limitations or bug, so exclude the libgcc_s symbols.
! 
! %exclude {
!  _Unwind_DeleteException
!  _Unwind_Find_FDE
!  _Unwind_ForcedUnwind
!  _Unwind_GetGR
!  _Unwind_GetIP
!  _Unwind_GetLanguageSpecificData
!  _Unwind_GetRegionStart
!  _Unwind_GetTextRelBase
!  _Unwind_GetDataRelBase
!  _Unwind_RaiseException
!  _Unwind_Resume
!  _Unwind_SetGR
!  _Unwind_SetIP
!  _Unwind_SjLj_Register
!  _Unwind_SjLj_Unregister
!  _Unwind_SjLj_RaiseException
!  _Unwind_SjLj_ForcedUnwind
!  _Unwind_SjLj_Resume
!  _Unwind_FindEnclosingFunction
!  _Unwind_GetCFA
!  _Unwind_Backtrace
!  _Unwind_Resume_or_Rethrow
!  _Unwind_SjLj_Resume_or_Rethrow
!  _Unwind_GetIPInfo
! 
!   __register_frame
!   __register_frame_table
!   __deregister_frame
!   __register_frame_info
!   __deregister_frame_info
!   __frame_state_for
!   __register_frame_info_table
! }
diff -Nrcpad gcc-10.3.0/libgcc/config/pa/linux-atomic.c gcc-10.4.0/libgcc/config/pa/linux-atomic.c
*** gcc-10.3.0/libgcc/config/pa/linux-atomic.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/pa/linux-atomic.c	Tue Jun 28 08:54:30 2022
*************** see the files COPYING3 and COPYING.RUNTI
*** 28,33 ****
--- 28,41 ----
  #define EBUSY   16
  #define ENOSYS 251 
  
+ typedef unsigned char u8;
+ typedef short unsigned int u16;
+ #ifdef __LP64__
+ typedef long unsigned int u64;
+ #else
+ typedef long long unsigned int u64;
+ #endif
+ 
  /* PA-RISC 2.0 supports out-of-order execution for loads and stores.
     Thus, we need to synchonize memory accesses.  For more info, see:
     "Advanced Performance Features of the 64-bit PA-8000" by Doug Hunt.
*************** __kernel_cmpxchg2 (volatile void *mem, c
*** 117,142 ****
      return tmp;								\
    }
  
! FETCH_AND_OP_2 (add,   , +, long long unsigned int, 8, 3)
! FETCH_AND_OP_2 (sub,   , -, long long unsigned int, 8, 3)
! FETCH_AND_OP_2 (or,    , |, long long unsigned int, 8, 3)
! FETCH_AND_OP_2 (and,   , &, long long unsigned int, 8, 3)
! FETCH_AND_OP_2 (xor,   , ^, long long unsigned int, 8, 3)
! FETCH_AND_OP_2 (nand, ~, &, long long unsigned int, 8, 3)
  
! FETCH_AND_OP_2 (add,   , +, short unsigned int, 2, 1)
! FETCH_AND_OP_2 (sub,   , -, short unsigned int, 2, 1)
! FETCH_AND_OP_2 (or,    , |, short unsigned int, 2, 1)
! FETCH_AND_OP_2 (and,   , &, short unsigned int, 2, 1)
! FETCH_AND_OP_2 (xor,   , ^, short unsigned int, 2, 1)
! FETCH_AND_OP_2 (nand, ~, &, short unsigned int, 2, 1)
  
! FETCH_AND_OP_2 (add,   , +, unsigned char, 1, 0)
! FETCH_AND_OP_2 (sub,   , -, unsigned char, 1, 0)
! FETCH_AND_OP_2 (or,    , |, unsigned char, 1, 0)
! FETCH_AND_OP_2 (and,   , &, unsigned char, 1, 0)
! FETCH_AND_OP_2 (xor,   , ^, unsigned char, 1, 0)
! FETCH_AND_OP_2 (nand, ~, &, unsigned char, 1, 0)
  
  #define OP_AND_FETCH_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX)		\
    TYPE HIDDEN								\
--- 125,150 ----
      return tmp;								\
    }
  
! FETCH_AND_OP_2 (add,   , +, u64, 8, 3)
! FETCH_AND_OP_2 (sub,   , -, u64, 8, 3)
! FETCH_AND_OP_2 (or,    , |, u64, 8, 3)
! FETCH_AND_OP_2 (and,   , &, u64, 8, 3)
! FETCH_AND_OP_2 (xor,   , ^, u64, 8, 3)
! FETCH_AND_OP_2 (nand, ~, &, u64, 8, 3)
  
! FETCH_AND_OP_2 (add,   , +, u16, 2, 1)
! FETCH_AND_OP_2 (sub,   , -, u16, 2, 1)
! FETCH_AND_OP_2 (or,    , |, u16, 2, 1)
! FETCH_AND_OP_2 (and,   , &, u16, 2, 1)
! FETCH_AND_OP_2 (xor,   , ^, u16, 2, 1)
! FETCH_AND_OP_2 (nand, ~, &, u16, 2, 1)
  
! FETCH_AND_OP_2 (add,   , +, u8, 1, 0)
! FETCH_AND_OP_2 (sub,   , -, u8, 1, 0)
! FETCH_AND_OP_2 (or,    , |, u8, 1, 0)
! FETCH_AND_OP_2 (and,   , &, u8, 1, 0)
! FETCH_AND_OP_2 (xor,   , ^, u8, 1, 0)
! FETCH_AND_OP_2 (nand, ~, &, u8, 1, 0)
  
  #define OP_AND_FETCH_2(OP, PFX_OP, INF_OP, TYPE, WIDTH, INDEX)		\
    TYPE HIDDEN								\
*************** FETCH_AND_OP_2 (nand, ~, &, unsigned cha
*** 154,179 ****
      return PFX_OP (tmp INF_OP val);					\
    }
  
! OP_AND_FETCH_2 (add,   , +, long long unsigned int, 8, 3)
! OP_AND_FETCH_2 (sub,   , -, long long unsigned int, 8, 3)
! OP_AND_FETCH_2 (or,    , |, long long unsigned int, 8, 3)
! OP_AND_FETCH_2 (and,   , &, long long unsigned int, 8, 3)
! OP_AND_FETCH_2 (xor,   , ^, long long unsigned int, 8, 3)
! OP_AND_FETCH_2 (nand, ~, &, long long unsigned int, 8, 3)
  
! OP_AND_FETCH_2 (add,   , +, short unsigned int, 2, 1)
! OP_AND_FETCH_2 (sub,   , -, short unsigned int, 2, 1)
! OP_AND_FETCH_2 (or,    , |, short unsigned int, 2, 1)
! OP_AND_FETCH_2 (and,   , &, short unsigned int, 2, 1)
! OP_AND_FETCH_2 (xor,   , ^, short unsigned int, 2, 1)
! OP_AND_FETCH_2 (nand, ~, &, short unsigned int, 2, 1)
  
! OP_AND_FETCH_2 (add,   , +, unsigned char, 1, 0)
! OP_AND_FETCH_2 (sub,   , -, unsigned char, 1, 0)
! OP_AND_FETCH_2 (or,    , |, unsigned char, 1, 0)
! OP_AND_FETCH_2 (and,   , &, unsigned char, 1, 0)
! OP_AND_FETCH_2 (xor,   , ^, unsigned char, 1, 0)
! OP_AND_FETCH_2 (nand, ~, &, unsigned char, 1, 0)
  
  #define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP)				\
    unsigned int HIDDEN							\
--- 162,187 ----
      return PFX_OP (tmp INF_OP val);					\
    }
  
! OP_AND_FETCH_2 (add,   , +, u64, 8, 3)
! OP_AND_FETCH_2 (sub,   , -, u64, 8, 3)
! OP_AND_FETCH_2 (or,    , |, u64, 8, 3)
! OP_AND_FETCH_2 (and,   , &, u64, 8, 3)
! OP_AND_FETCH_2 (xor,   , ^, u64, 8, 3)
! OP_AND_FETCH_2 (nand, ~, &, u64, 8, 3)
  
! OP_AND_FETCH_2 (add,   , +, u16, 2, 1)
! OP_AND_FETCH_2 (sub,   , -, u16, 2, 1)
! OP_AND_FETCH_2 (or,    , |, u16, 2, 1)
! OP_AND_FETCH_2 (and,   , &, u16, 2, 1)
! OP_AND_FETCH_2 (xor,   , ^, u16, 2, 1)
! OP_AND_FETCH_2 (nand, ~, &, u16, 2, 1)
  
! OP_AND_FETCH_2 (add,   , +, u8, 1, 0)
! OP_AND_FETCH_2 (sub,   , -, u8, 1, 0)
! OP_AND_FETCH_2 (or,    , |, u8, 1, 0)
! OP_AND_FETCH_2 (and,   , &, u8, 1, 0)
! OP_AND_FETCH_2 (xor,   , ^, u8, 1, 0)
! OP_AND_FETCH_2 (nand, ~, &, u8, 1, 0)
  
  #define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP)				\
    unsigned int HIDDEN							\
*************** typedef unsigned char bool;
*** 254,262 ****
      return (failure == 0);						\
    }
  
! COMPARE_AND_SWAP_2 (long long unsigned int, 8, 3)
! COMPARE_AND_SWAP_2 (short unsigned int, 2, 1)
! COMPARE_AND_SWAP_2 (unsigned char, 1, 0)
  
  unsigned int HIDDEN
  __sync_val_compare_and_swap_4 (volatile void *ptr, unsigned int oldval,
--- 262,270 ----
      return (failure == 0);						\
    }
  
! COMPARE_AND_SWAP_2 (u64, 8, 3)
! COMPARE_AND_SWAP_2 (u16, 2, 1)
! COMPARE_AND_SWAP_2 (u8, 1, 0)
  
  unsigned int HIDDEN
  __sync_val_compare_and_swap_4 (volatile void *ptr, unsigned int oldval,
*************** TYPE HIDDEN								\
*** 304,312 ****
      return oldval;							\
    }
  
! SYNC_LOCK_TEST_AND_SET_2 (long long unsigned int, 8, 3)
! SYNC_LOCK_TEST_AND_SET_2 (short unsigned int, 2, 1)
! SYNC_LOCK_TEST_AND_SET_2 (unsigned char, 1, 0)
  
  unsigned int HIDDEN
  __sync_lock_test_and_set_4 (volatile void *ptr, unsigned int val)
--- 312,320 ----
      return oldval;							\
    }
  
! SYNC_LOCK_TEST_AND_SET_2 (u64, 8, 3)
! SYNC_LOCK_TEST_AND_SET_2 (u16, 2, 1)
! SYNC_LOCK_TEST_AND_SET_2 (u8, 1, 0)
  
  unsigned int HIDDEN
  __sync_lock_test_and_set_4 (volatile void *ptr, unsigned int val)
*************** __sync_lock_test_and_set_4 (volatile voi
*** 336,344 ****
      } while (failure != 0);					\
    }
  
! SYNC_LOCK_RELEASE_1 (long long unsigned int, 8, 3)
! SYNC_LOCK_RELEASE_1 (short unsigned int, 2, 1)
! SYNC_LOCK_RELEASE_1 (unsigned char, 1, 0)
  
  void HIDDEN
  __sync_lock_release_4 (volatile void *ptr)
--- 344,352 ----
      } while (failure != 0);					\
    }
  
! SYNC_LOCK_RELEASE_1 (u64, 8, 3)
! SYNC_LOCK_RELEASE_1 (u16, 2, 1)
! SYNC_LOCK_RELEASE_1 (u8, 1, 0)
  
  void HIDDEN
  __sync_lock_release_4 (volatile void *ptr)
diff -Nrcpad gcc-10.3.0/libgcc/config/pa/pa64-hpux-lib.h gcc-10.4.0/libgcc/config/pa/pa64-hpux-lib.h
*** gcc-10.3.0/libgcc/config/pa/pa64-hpux-lib.h	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/pa/pa64-hpux-lib.h	Tue Jun 28 08:54:30 2022
*************** but WITHOUT ANY WARRANTY; without even t
*** 14,21 ****
  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/>.  */
  
  /* We use DTOR_LIST_BEGIN to carry a bunch of hacks to allow us to use
--- 14,26 ----
  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/>.  */
  
  /* We use DTOR_LIST_BEGIN to carry a bunch of hacks to allow us to use
diff -Nrcpad gcc-10.3.0/libgcc/config/pa/t-linux64 gcc-10.4.0/libgcc/config/pa/t-linux64
*** gcc-10.3.0/libgcc/config/pa/t-linux64	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/pa/t-linux64	Tue Jun 28 08:54:30 2022
***************
*** 1,8 ****
  # Plug millicode routines into libgcc.a  We want these on both native and
  # cross compiles.
! # FIXME: Explain.
! LIB1ASMFUNCS := $(filter-out _dyncall, $(LIB1ASMFUNCS))
  
! LIB2ADD_ST = $(srcdir)/config/pa/linux-atomic.c
  
! HOST_LIBGCC2_CFLAGS += -Dpa64=1 -DELF=1
--- 1,8 ----
  # Plug millicode routines into libgcc.a  We want these on both native and
  # cross compiles.
! LIB1ASMSRC = pa/milli64.S
! LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI
  
! HOST_LIBGCC2_CFLAGS += -Dpa64=1 -DELF=1 -DLINUX=1
  
! LIB2ADD_ST = $(srcdir)/config/pa/linux-atomic.c
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/libgcc-darwin.10.4.ver gcc-10.4.0/libgcc/config/rs6000/libgcc-darwin.10.4.ver
*** gcc-10.3.0/libgcc/config/rs6000/libgcc-darwin.10.4.ver	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/rs6000/libgcc-darwin.10.4.ver	Thu Jan  1 00:00:00 1970
***************
*** 1,93 ****
- # 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/>.
- __Unwind_Backtrace
- __Unwind_DeleteException
- __Unwind_FindEnclosingFunction
- __Unwind_Find_FDE
- __Unwind_ForcedUnwind
- __Unwind_GetCFA
- __Unwind_GetDataRelBase
- __Unwind_GetGR
- __Unwind_GetIP
- __Unwind_GetLanguageSpecificData
- __Unwind_GetRegionStart
- __Unwind_GetTextRelBase
- __Unwind_RaiseException
- __Unwind_Resume
- __Unwind_Resume_or_Rethrow
- __Unwind_SetGR
- __Unwind_SetIP
- ___absvdi2
- ___absvsi2
- ___addvdi3
- ___addvsi3
- ___ashldi3
- ___ashrdi3
- ___clear_cache
- ___clzdi2
- ___clzsi2
- ___cmpdi2
- ___ctzdi2
- ___ctzsi2
- ___deregister_frame
- ___deregister_frame_info
- ___deregister_frame_info_bases
- ___divdi3
- ___enable_execute_stack
- ___ffsdi2
- ___fixdfdi
- ___fixsfdi
- ___fixtfdi
- ___fixunsdfdi
- ___fixunsdfsi
- ___fixunssfdi
- ___fixunssfsi
- ___fixunstfdi
- ___floatdidf
- ___floatdisf
- ___floatditf
- ___gcc_personality_v0
- ___gcc_qadd
- ___gcc_qdiv
- ___gcc_qmul
- ___gcc_qsub
- ___lshrdi3
- ___moddi3
- ___muldi3
- ___mulvdi3
- ___mulvsi3
- ___negdi2
- ___negvdi2
- ___negvsi2
- ___paritydi2
- ___paritysi2
- ___popcountdi2
- ___popcountsi2
- ___register_frame
- ___register_frame_info
- ___register_frame_info_bases
- ___register_frame_info_table
- ___register_frame_info_table_bases
- ___register_frame_table
- ___subvdi3
- ___subvsi3
- ___trampoline_setup
- ___ucmpdi2
- ___udivdi3
- ___udivmoddi4
- ___umoddi3
--- 0 ----
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/libgcc-darwin.10.5.ver gcc-10.4.0/libgcc/config/rs6000/libgcc-darwin.10.5.ver
*** gcc-10.3.0/libgcc/config/rs6000/libgcc-darwin.10.5.ver	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/rs6000/libgcc-darwin.10.5.ver	Thu Jan  1 00:00:00 1970
***************
*** 1,106 ****
- # 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/>.
- __Unwind_Backtrace
- __Unwind_DeleteException
- __Unwind_FindEnclosingFunction
- __Unwind_Find_FDE
- __Unwind_ForcedUnwind
- __Unwind_GetCFA
- __Unwind_GetDataRelBase
- __Unwind_GetGR
- __Unwind_GetIP
- __Unwind_GetIPInfo
- __Unwind_GetLanguageSpecificData
- __Unwind_GetRegionStart
- __Unwind_GetTextRelBase
- __Unwind_RaiseException
- __Unwind_Resume
- __Unwind_Resume_or_Rethrow
- __Unwind_SetGR
- __Unwind_SetIP
- ___absvdi2
- ___absvsi2
- ___addvdi3
- ___addvsi3
- ___ashldi3
- ___ashrdi3
- ___clear_cache
- ___clzdi2
- ___clzsi2
- ___cmpdi2
- ___ctzdi2
- ___ctzsi2
- ___deregister_frame
- ___deregister_frame_info
- ___deregister_frame_info_bases
- ___divdc3
- ___divdi3
- ___divsc3
- ___divtc3
- ___enable_execute_stack
- ___ffsdi2
- ___fixdfdi
- ___fixsfdi
- ___fixtfdi
- ___fixunsdfdi
- ___fixunsdfsi
- ___fixunssfdi
- ___fixunssfsi
- ___fixunstfdi
- ___floatdidf
- ___floatdisf
- ___floatditf
- ___floatundidf
- ___floatundisf
- ___floatunditf
- ___gcc_personality_v0
- ___gcc_qadd
- ___gcc_qdiv
- ___gcc_qmul
- ___gcc_qsub
- ___lshrdi3
- ___moddi3
- ___muldc3
- ___muldi3
- ___mulsc3
- ___multc3
- ___mulvdi3
- ___mulvsi3
- ___negdi2
- ___negvdi2
- ___negvsi2
- ___paritydi2
- ___paritysi2
- ___popcountdi2
- ___popcountsi2
- ___powidf2
- ___powisf2
- ___powitf2
- ___register_frame
- ___register_frame_info
- ___register_frame_info_bases
- ___register_frame_info_table
- ___register_frame_info_table_bases
- ___register_frame_table
- ___subvdi3
- ___subvsi3
- ___trampoline_setup
- ___ucmpdi2
- ___udivdi3
- ___udivmoddi4
- ___umoddi3
--- 0 ----
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/morestack.S gcc-10.4.0/libgcc/config/rs6000/morestack.S
*** gcc-10.3.0/libgcc/config/rs6000/morestack.S	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/rs6000/morestack.S	Tue Jun 28 08:54:30 2022
***************
*** 31,36 ****
--- 31,37 ----
  #define PARAMS 48
  #endif
  #define MORESTACK_FRAMESIZE	(PARAMS+96)
+ #define R2_SAVE			-MORESTACK_FRAMESIZE+PARAMS-8
  #define PARAMREG_SAVE		-MORESTACK_FRAMESIZE+PARAMS+0
  #define STATIC_CHAIN_SAVE	-MORESTACK_FRAMESIZE+PARAMS+64
  #define R29_SAVE		-MORESTACK_FRAMESIZE+PARAMS+72
***************
*** 55,65 ****
--- 56,73 ----
  	.type name,@function;				\
  name##:
  
+ #ifdef __PCREL__
+ #define ENTRY(name)					\
+ 	ENTRY0(name);					\
+ 	.localentry name, 1
+ #define JUMP_TARGET(name) name##@notoc
+ #else
  #define ENTRY(name)					\
  	ENTRY0(name);					\
  0:	addis %r2,%r12,.TOC.-0b@ha;			\
          addi %r2,%r2,.TOC.-0b@l;			\
  	.localentry name, .-name
+ #endif
  
  #else
  
*************** BODY_LABEL(name)##:
*** 81,86 ****
--- 89,97 ----
  
  #define SIZE(name) .size name, .-BODY_LABEL(name)
  
+ #ifndef JUMP_TARGET
+ #define JUMP_TARGET(name) name
+ #endif
  
  	.text
  # Just like __morestack, but with larger excess allocation
*************** ENTRY0(__morestack_non_split)
*** 133,138 ****
--- 144,160 ----
  # cr7 must also be preserved.
  
  ENTRY0(__morestack)
+ 
+ #if _CALL_ELF == 2
+ # Functions with localentry bits of zero cannot make calls if those
+ # calls might change r2.  This is true generally, and also true for
+ # __morestack with its special calling convention.  When __morestack's
+ # caller is non-pcrel but libgcc is pcrel, the functions called here
+ # might modify r2.  r2 must be preserved on exit, and also restored
+ # for the call back to our caller.
+ 	std %r2,R2_SAVE(%r1)
+ #endif
+ 
  # Save parameter passing registers, our arguments, lr, r29
  # and use r29 as a frame pointer.
  	std %r3,PARAMREG_SAVE+0(%r1)
*************** ENTRY0(__morestack)
*** 151,162 ****
  	std %r12,LINKREG_SAVE(%r1)
  	std %r3,NEWSTACKSIZE_SAVE(%r1)	# new stack size
  	mr %r29,%r1
  	.cfi_offset %r29,R29_SAVE
  	.cfi_def_cfa_register %r29
  	stdu %r1,-MORESTACK_FRAMESIZE(%r1)
  
  	# void __morestack_block_signals (void)
! 	bl __morestack_block_signals
  
  	# void *__generic_morestack (size_t *pframe_size,
  	#			     void *old_stack,
--- 173,198 ----
  	std %r12,LINKREG_SAVE(%r1)
  	std %r3,NEWSTACKSIZE_SAVE(%r1)	# new stack size
  	mr %r29,%r1
+ #if _CALL_ELF == 2
+ 	.cfi_offset %r2,R2_SAVE
+ #endif
  	.cfi_offset %r29,R29_SAVE
  	.cfi_def_cfa_register %r29
  	stdu %r1,-MORESTACK_FRAMESIZE(%r1)
  
+ #if _CALL_ELF == 2 && !defined __PCREL__
+ # If this isn't a pcrel libgcc then the functions we call here will
+ # require r2 to be valid.  If __morestack is called from pcrel code r2
+ # won't be valid.  Set it up.
+ 	bcl 20,31,1f
+ 1:
+ 	mflr %r12
+ 	addis %r2,%r12,.TOC.-1b@ha
+ 	addi %r2,%r2,.TOC.-1b@l
+ #endif
+ 
  	# void __morestack_block_signals (void)
! 	bl JUMP_TARGET(__morestack_block_signals)
  
  	# void *__generic_morestack (size_t *pframe_size,
  	#			     void *old_stack,
*************** ENTRY0(__morestack)
*** 164,170 ****
  	addi %r3,%r29,NEWSTACKSIZE_SAVE
  	mr %r4,%r29
  	li %r5,0			# no copying from old stack
! 	bl __generic_morestack
  
  # Start using new stack
  	stdu %r29,-32(%r3)		# back-chain
--- 200,206 ----
  	addi %r3,%r29,NEWSTACKSIZE_SAVE
  	mr %r4,%r29
  	li %r5,0			# no copying from old stack
! 	bl JUMP_TARGET(__generic_morestack)
  
  # Start using new stack
  	stdu %r29,-32(%r3)		# back-chain
*************** ENTRY0(__morestack)
*** 183,194 ****
  	std %r3,-0x7000-64(%r13)	# tcbhead_t.__private_ss
  
  	# void __morestack_unblock_signals (void)
! 	bl __morestack_unblock_signals
  
  # Set up for a call to the target function, located 3
  # instructions after __morestack's return address.
  #
  	ld %r12,LINKREG_SAVE(%r29)
  	ld %r3,PARAMREG_SAVE+0(%r29)	# restore arg regs
  	ld %r4,PARAMREG_SAVE+8(%r29)
  	ld %r5,PARAMREG_SAVE+16(%r29)
--- 219,233 ----
  	std %r3,-0x7000-64(%r13)	# tcbhead_t.__private_ss
  
  	# void __morestack_unblock_signals (void)
! 	bl JUMP_TARGET(__morestack_unblock_signals)
  
  # Set up for a call to the target function, located 3
  # instructions after __morestack's return address.
  #
  	ld %r12,LINKREG_SAVE(%r29)
+ #if _CALL_ELF == 2
+ 	ld %r2,R2_SAVE(%r29)
+ #endif
  	ld %r3,PARAMREG_SAVE+0(%r29)	# restore arg regs
  	ld %r4,PARAMREG_SAVE+8(%r29)
  	ld %r5,PARAMREG_SAVE+16(%r29)
*************** ENTRY0(__morestack)
*** 218,228 ****
  	std %r10,PARAMREG_SAVE+56(%r29)
  #endif
  
! 	bl __morestack_block_signals
  
  	# void *__generic_releasestack (size_t *pavailable)
  	addi %r3,%r29,NEWSTACKSIZE_SAVE
! 	bl __generic_releasestack
  
  # Reset __private_ss stack guard to value for old stack
  	ld %r12,NEWSTACKSIZE_SAVE(%r29)
--- 257,276 ----
  	std %r10,PARAMREG_SAVE+56(%r29)
  #endif
  
! #if _CALL_ELF == 2 && !defined __PCREL__
! # r2 was restored for calling back into our caller.  Set it up again.
! 	bcl 20,31,1f
! 1:
! 	mflr %r12
! 	addis %r2,%r12,.TOC.-1b@ha
! 	addi %r2,%r2,.TOC.-1b@l
! #endif
! 
! 	bl JUMP_TARGET(__morestack_block_signals)
  
  	# void *__generic_releasestack (size_t *pavailable)
  	addi %r3,%r29,NEWSTACKSIZE_SAVE
! 	bl JUMP_TARGET(__generic_releasestack)
  
  # Reset __private_ss stack guard to value for old stack
  	ld %r12,NEWSTACKSIZE_SAVE(%r29)
*************** ENTRY0(__morestack)
*** 231,237 ****
  .LEHE0:
  	std %r3,-0x7000-64(%r13)	# tcbhead_t.__private_ss
  
! 	bl __morestack_unblock_signals
  
  # Use old stack again.
  	mr %r1,%r29
--- 279,285 ----
  .LEHE0:
  	std %r3,-0x7000-64(%r13)	# tcbhead_t.__private_ss
  
! 	bl JUMP_TARGET(__morestack_unblock_signals)
  
  # Use old stack again.
  	mr %r1,%r29
*************** ENTRY0(__morestack)
*** 239,244 ****
--- 287,295 ----
  # Restore return value regs, and return.
  	ld %r0,LINKREG_SAVE(%r29)
  	mtlr %r0
+ #if _CALL_ELF == 2
+ 	ld %r2,R2_SAVE(%r29)
+ #endif
  	ld %r3,PARAMREG_SAVE+0(%r29)
  	ld %r4,PARAMREG_SAVE+8(%r29)
  	ld %r5,PARAMREG_SAVE+16(%r29)
*************** cleanup:
*** 260,272 ****
  	std %r3,PARAMREG_SAVE(%r29)	# Save exception header
  	# size_t __generic_findstack (void *stack)
  	mr %r3,%r29
! 	bl __generic_findstack
  	sub %r3,%r29,%r3
  	addi %r3,%r3,BACKOFF
  	std %r3,-0x7000-64(%r13)	# tcbhead_t.__private_ss
  	ld %r3,PARAMREG_SAVE(%r29)
! 	bl _Unwind_Resume
  	nop
  	.cfi_endproc
  	SIZE (__morestack)
  
--- 311,325 ----
  	std %r3,PARAMREG_SAVE(%r29)	# Save exception header
  	# size_t __generic_findstack (void *stack)
  	mr %r3,%r29
! 	bl JUMP_TARGET(__generic_findstack)
  	sub %r3,%r29,%r3
  	addi %r3,%r3,BACKOFF
  	std %r3,-0x7000-64(%r13)	# tcbhead_t.__private_ss
  	ld %r3,PARAMREG_SAVE(%r29)
! 	bl JUMP_TARGET(_Unwind_Resume)
! #ifndef __PCREL__
  	nop
+ #endif
  	.cfi_endproc
  	SIZE (__morestack)
  
*************** ENTRY(__stack_split_initialize)
*** 310,316 ****
  	# void __generic_morestack_set_initial_sp (void *sp, size_t len)
  	mr %r3,%r1
  	li %r4, 0x4000
! 	b __generic_morestack_set_initial_sp
  # The lack of .cfi_endproc here is deliberate.  This function and the
  # following ones can all use the default FDE.
  	SIZE (__stack_split_initialize)
--- 363,369 ----
  	# void __generic_morestack_set_initial_sp (void *sp, size_t len)
  	mr %r3,%r1
  	li %r4, 0x4000
! 	b JUMP_TARGET(__generic_morestack_set_initial_sp)
  # The lack of .cfi_endproc here is deliberate.  This function and the
  # following ones can all use the default FDE.
  	SIZE (__stack_split_initialize)
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/t-darwin gcc-10.4.0/libgcc/config/rs6000/t-darwin
*** gcc-10.3.0/libgcc/config/rs6000/t-darwin	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/rs6000/t-darwin	Tue Jun 28 08:54:30 2022
*************** unwind-dw2_s.o: HOST_LIBGCC2_CFLAGS += -
*** 56,58 ****
--- 56,61 ----
  unwind-dw2.o: HOST_LIBGCC2_CFLAGS += -maltivec
  
  LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c
+ 
+ # Build a legacy libgcc_s.1
+ BUILD_LIBGCCS1 = YES
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/t-darwin-ehs gcc-10.4.0/libgcc/config/rs6000/t-darwin-ehs
*** gcc-10.3.0/libgcc/config/rs6000/t-darwin-ehs	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgcc/config/rs6000/t-darwin-ehs	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,3 ----
+ # We need the save_world and anu unwind fallback code for the EH library.
+ 
+ LIBEHSOBJS += darwin-world_s.o darwin-fallback.o
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/t-linux gcc-10.4.0/libgcc/config/rs6000/t-linux
*** gcc-10.3.0/libgcc/config/rs6000/t-linux	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/rs6000/t-linux	Tue Jun 28 08:54:30 2022
*************** HOST_LIBGCC2_CFLAGS += -mno-minimal-toc
*** 11,20 ****
  # the IBM extended double format.  Also turn off gnu attributes on the static
  # modules.
  IBM128_STATIC_OBJS	= ibm-ldouble$(objext) _powitf2$(objext) \
! 			  ppc64-fp$(objext) _divtc3$(object) _multc3$(object) \
! 			  _fixtfdi$(object) _fixunstfdi$(object) \
! 	                  _floatditf$(objext) _floatunsditf$(objext)
! IBM128_SHARED_OBJS	= $(IBM128_STATIC_OBJS:$(objext):_s$(objext))
  IBM128_OBJS		= $(IBM128_STATIC_OBJS) $(IBM128_SHARED_OBJS)
  
  IBM128_CFLAGS		= -Wno-psabi -mabi=ibmlongdouble -mno-gnu-attribute
--- 11,22 ----
  # the IBM extended double format.  Also turn off gnu attributes on the static
  # modules.
  IBM128_STATIC_OBJS	= ibm-ldouble$(objext) _powitf2$(objext) \
! 			  ppc64-fp$(objext) _divtc3$(objext) _multc3$(objext) \
! 			  _fixtfdi$(objext) _fixunstfdi$(objext) \
! 	                  _floatditf$(objext) _floatunditf$(objext) \
! 			  _fixtfti$(objext) _fixunstfti$(objext) \
! 	                  _floattitf$(objext) _floatuntitf$(objext)
! IBM128_SHARED_OBJS	= $(IBM128_STATIC_OBJS:$(objext)=_s$(objext))
  IBM128_OBJS		= $(IBM128_STATIC_OBJS) $(IBM128_SHARED_OBJS)
  
  IBM128_CFLAGS		= -Wno-psabi -mabi=ibmlongdouble -mno-gnu-attribute
diff -Nrcpad gcc-10.3.0/libgcc/config/rs6000/tramp.S gcc-10.4.0/libgcc/config/rs6000/tramp.S
*** gcc-10.3.0/libgcc/config/rs6000/tramp.S	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/rs6000/tramp.S	Tue Jun 28 08:54:30 2022
*************** FUNC_START(__trampoline_setup)
*** 64,71 ****
          mflr	r11
          addi	r7,r11,trampoline_initial-4-.LCF0 /* trampoline address -4 */
  
! 	li	r8,trampoline_size	/* verify that the trampoline is big enough */
! 	cmpw	cr1,r8,r4
  	srwi	r4,r4,2		/* # words to move */
  	addi	r9,r3,-4	/* adjust pointer for lwzu */
  	mtctr	r4
--- 64,70 ----
          mflr	r11
          addi	r7,r11,trampoline_initial-4-.LCF0 /* trampoline address -4 */
  
! 	cmpwi	cr1,r4,trampoline_size	/* verify that the trampoline is big enough */
  	srwi	r4,r4,2		/* # words to move */
  	addi	r9,r3,-4	/* adjust pointer for lwzu */
  	mtctr	r4
*************** trampoline_size = .-trampoline_initial
*** 140,157 ****
  /* R5 = function address */
  /* R6 = static chain */
  
  	.pushsection ".toc","aw"
  .LC0:
  	.quad	trampoline_initial-8
  	.popsection
  
  FUNC_START(__trampoline_setup)
  	.cfi_startproc
  	addis 7,2,.LC0@toc@ha
  	ld 7,.LC0@toc@l(7)	/* trampoline address -8 */
  
! 	li	r8,trampoline_size	/* verify that the trampoline is big enough */
! 	cmpw	cr1,r8,r4
  	srwi	r4,r4,3		/* # doublewords to move */
  	addi	r9,r3,-8	/* adjust pointer for stdu */
  	mtctr	r4
--- 139,161 ----
  /* R5 = function address */
  /* R6 = static chain */
  
+ #ifndef __PCREL__
  	.pushsection ".toc","aw"
  .LC0:
  	.quad	trampoline_initial-8
  	.popsection
+ #endif
  
  FUNC_START(__trampoline_setup)
  	.cfi_startproc
+ #ifdef __PCREL__
+ 	pla 7,(trampoline_initial-8)@pcrel
+ #else
  	addis 7,2,.LC0@toc@ha
  	ld 7,.LC0@toc@l(7)	/* trampoline address -8 */
+ #endif
  
! 	cmpwi	cr1,r4,trampoline_size	/* verify that the trampoline is big enough */
  	srwi	r4,r4,3		/* # doublewords to move */
  	addi	r9,r3,-8	/* adjust pointer for stdu */
  	mtctr	r4
diff -Nrcpad gcc-10.3.0/libgcc/config/t-darwin gcc-10.4.0/libgcc/config/t-darwin
*** gcc-10.3.0/libgcc/config/t-darwin	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/t-darwin	Tue Jun 28 08:54:30 2022
*************** crttms.o: $(srcdir)/config/darwin-crt-tm
*** 11,20 ****
  crttme.o: $(srcdir)/config/darwin-crt-tm.c
  	$(crt_compile) -mmacosx-version-min=10.4 -DEND -c $<
  
! # Use unwind-dw2-fde-darwin
! LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
!   $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
  
  # Patch to __Unwind_Find_Enclosing_Function for Darwin10.
! d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c
  	$(crt_compile) -mmacosx-version-min=10.6 -c $<
--- 11,53 ----
  crttme.o: $(srcdir)/config/darwin-crt-tm.c
  	$(crt_compile) -mmacosx-version-min=10.4 -DEND -c $<
  
! # Make emutls weak so that we can deal with -static-libgcc, override the
! # hidden visibility when this is present in libgcc_eh.
! emutls.o: HOST_LIBGCC2_CFLAGS += \
!   -DEMUTLS_ATTR='__attribute__((__weak__,__visibility__("default")))'
! emutls_s.o: HOST_LIBGCC2_CFLAGS += \
!   -DEMUTLS_ATTR='__attribute__((__weak__,__visibility__("default")))'
! 
! # Make the emutls crt as a convenience lib so that it can be linked
! # optionally, use the shared version so that we can link with DSO.
! libemutls_w.a: emutls_s.o
! 	$(AR_CREATE_FOR_TARGET) $@ $<
! 	$(RANLIB_FOR_TARGET) $@
  
  # Patch to __Unwind_Find_Enclosing_Function for Darwin10.
! d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c libgcc_tm.h
  	$(crt_compile) -mmacosx-version-min=10.6 -c $<
+ 
+ # Using this crt as a library means that it will not be added to an exe
+ # (or module) unless needed.
+ libd10-uwfef.a: d10-uwfef.o
+ 	$(AR_CREATE_FOR_TARGET) $@ d10-uwfef.o
+ 	$(RANLIB_FOR_TARGET) $@
+ 
+ ###### Unwinder #######
+ # Most Darwin versions get their unwinder from libSystem; older versions
+ # have an installed /usr/lib/libgcc_s.1.dylib.
+ # So do not add the unwinder to the shared libgcc.
+ LIB2ADDEHSHARED =
+ 
+ # We still need it in the _eh.a for earlier platform versions.
+ # Use unwind-dw2-fde-darwin
+ LIB2ADDEH = $(srcdir)/unwind-dw2.c \
+ 	    $(srcdir)/config/unwind-dw2-fde-darwin.c \
+ 	    $(srcdir)/unwind-c.c
+ 
+ # Do not build a shared unwind lib by default.
+ LIBEHSOBJS=
+ 
+ # Symbols for all the sub-ports.
+ SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/libgcc-libsystem.ver
diff -Nrcpad gcc-10.3.0/libgcc/config/t-darwin-ehs gcc-10.4.0/libgcc/config/t-darwin-ehs
*** gcc-10.3.0/libgcc/config/t-darwin-ehs	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgcc/config/t-darwin-ehs	Tue Jun 28 08:54:30 2022
***************
*** 0 ****
--- 1,7 ----
+ # Build the unwinder separately so that we can construct a replacement for
+ # libgcc_s.1 on systems that used the unwinder in libgcc_s.
+ 
+ LIBEHSOBJS = unwind-dw2_s.o unwind-dw2-fde-darwin_s.o unwind-c_s.o
+ 
+ unwind-dw2_s.o: gthr-default.h md-unwind-support.h unwind.h
+ $(LIBEHSOBJS): libgcc_tm.h
diff -Nrcpad gcc-10.3.0/libgcc/config/t-slibgcc-darwin gcc-10.4.0/libgcc/config/t-slibgcc-darwin
*** gcc-10.3.0/libgcc/config/t-slibgcc-darwin	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config/t-slibgcc-darwin	Tue Jun 28 08:54:30 2022
***************
*** 1,50 ****
  # Build a shared libgcc library with the darwin linker.
! SHLIB_SOVERSION = 1
! SHLIB_VERSTRING = -compatibility_version $(SHLIB_SOVERSION) -current_version $(SHLIB_SOVERSION).0
  SHLIB_EXT = .dylib
  SHLIB_INSTALL_NAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT)
- SHLIB_SONAME = @shlib_base_name@$(SHLIB_EXT)
- SHLIB_SOLINK = @shlib_base_name@.so
  SHLIB_MAP = @shlib_map_file@
- SHLIB_OBJS = @shlib_objs@
  SHLIB_DIR = @multilib_dir@
! SHLIB_LC = -lc
  
! # Darwin only searches in /usr/lib for shared libraries, not in subdirectories,
! # so the libgcc variants have different names not different locations.
! # Note that this version is used for the loader, not the linker; the linker
! # uses the stub versions named by the versioned members of $(INSTALL_FILES).
  
! SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
! 	-install_name @shlib_slibdir@/$(SHLIB_INSTALL_NAME) \
  	-single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME) \
  	-Wl,-exported_symbols_list,$(SHLIB_MAP) \
  	$(SHLIB_VERSTRING) \
! 	@multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC)
  
! SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
! SHLIB_MKMAP_OPTS = -v leading_underscore=1
! SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/libgcc-libsystem.ver
! SHLIB_VERPFX = $(srcdir)/config/$(cpu_type)/libgcc-darwin
  
- # we're only going to build the stubs if the target slib is /usr/lib
- # there is no other case in which they're useful in a live system.
- ifeq (/usr/lib,$(shlib_slibdir))
- LGCC_STUBS = libgcc_s.10.4.dylib libgcc_s.10.5.dylib
- else
- LGCC_STUBS =
  endif
  
! LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)
! LGCC_FILES += $(LGCC_STUBS)
! LEXT_STUBS = libgcc_ext.10.4$(SHLIB_EXT) libgcc_ext.10.5$(SHLIB_EXT)
! LGCC_FILES += $(LEXT_STUBS)
! INSTALL_FILES=$(LGCC_FILES)
  
! # we do our own thing
! SHLIB_INSTALL =
  
! # For the toplevel multilib, build a fat archive including all the multilibs.
  ifeq ($(MULTIBUILDTOP),)
  
  ifeq ($(enable_shared),yes)
--- 1,86 ----
  # Build a shared libgcc library with the darwin linker.
! 
! SHLIB_SOVERSION = 1.1
! SHLIB_SO_MINVERSION = 1
! SHLIB_VERSTRING = -compatibility_version $(SHLIB_SO_MINVERSION) \
! 		  -current_version $(SHLIB_SOVERSION)
  SHLIB_EXT = .dylib
+ SHLIB_LC = -lSystem
+ SHLIB_INSTALL_DIR = $(slibdir)
+ 
+ SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
+ SHLIB_MKMAP_OPTS = -v leading_underscore=1
+ 
+ # Shorthand expressions for the LINK below, these are substituted in the
+ # link expression.
  SHLIB_INSTALL_NAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT)
  SHLIB_MAP = @shlib_map_file@
  SHLIB_DIR = @multilib_dir@
! SHLIB_SONAME = @shlib_base_name@$(SHLIB_EXT)
  
! # Darwin only searches in shlib_slibdir for shared libraries, not in
! # subdirectories.  The link builds one architecture slice in its designated
! # subdir.  The code under MULTIBUILDTOP combines these into a single FAT
! # library, that is what we eventually install.
  
! SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -dynamiclib -nodefaultlibs \
! 	-install_name $(SHLIB_INSTALL_DIR)/$(SHLIB_INSTALL_NAME) \
  	-single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME) \
  	-Wl,-exported_symbols_list,$(SHLIB_MAP) \
  	$(SHLIB_VERSTRING) \
! 	@multilib_flags@ @shlib_objs@ $(SHLIB_LC)
  
! # we do our own thing
! SHLIB_INSTALL =
! 
! LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)
! 
! ifeq ($(BUILD_LIBGCCS1),YES)
! 
! # We are going to build a libgcc_s.1.dylib so that distributions can
! # install it for compatibility with binaries linked against the old
! # libgcc_ext.10.x.dylib stubs.
! 
! # For systems after macOS 10.7 we can forward the correct unwinder symbols
! # from libSystem.
! 
! # For older systems we have to forward an entire library (since they cannot
! # selectively forward symbols, which means that we cannot forward the unwinder
! # in /usr/lib/libgcc_s.1.dylib).  We also cannot forward the entire library
! # since that creates a self-referencing loop when DYLD_LIBRARY_PATH is used.
! # To provide the unwinder symbols in this case, we build the unwinder into a
! # separate shared lib (libgcc_ehs) and forward that.
! 
! # These targets are local to this make fragment, which means that they do not
! # get the substitutions seen in SHLIB_LINK.
! 
! ifneq ($(LIBEHSOBJS),)
! 
! EHS_INSTNAME = libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)
! 
! # multilib build for a shared EH lib.
! 
! libgcc_ehs$(SHLIB_EXT): $(LIBEHSOBJS) $(extra-parts)
! 	mkdir -p $(MULTIDIR)
! 	$(CC) $(LIBGCC2_CFLAGS) $(LDFLAGS) -dynamiclib -nodefaultlibs \
! 	-install_name $(SHLIB_INSTALL_DIR)/$(EHS_INSTNAME) \
! 	-o $(MULTIDIR)/libgcc_ehs$(SHLIB_EXT) $(SHLIB_VERSTRING) \
! 	$(LIBEHSOBJS) $(SHLIB_LC)
! 
! all: libgcc_ehs$(SHLIB_EXT)
! 
! LGCC_FILES += libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)
  
  endif
  
! # Provide libgcc_s.1 for backwards compatibility.
! LGCC_FILES += libgcc_s.1.dylib
  
! endif
  
! INSTALL_FILES=$(LGCC_FILES)
! 
! # For the toplevel multilib, build FAT dylibs including all the multilibs.
  ifeq ($(MULTIBUILDTOP),)
  
  ifeq ($(enable_shared),yes)
*************** all: $(INSTALL_FILES)
*** 52,116 ****
  install-leaf: install-darwin-libgcc-stubs
  endif
  
! # In order to support -mmacosx-version-min, you need to have multiple
! # different libgcc_s libraries that actually get linked against, one for
! # each system version supported.  They are 'stub' libraries that
! # contain no code, just a list of exported symbols.
! # The actual use of the libraries is controlled by REAL_LIBGCC_SPEC.
! #
! # This assumes each multilib corresponds to a different architecture.
! libgcc_s.%.dylib : all-multi $(SHLIB_VERPFX).%.ver libgcc_s$(SHLIB_EXT)
  	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
  	for mlib in $$MLIBS ; do \
! 	  $(STRIP) -o $(@)_T$${mlib} \
! 	    -s $(SHLIB_VERPFX).$(*).ver -c -u \
! 	    ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT)  || exit 1 ; \
  	done
! 	$(LIPO) -output $@ -create $(@)_T*
! 	rm $(@)_T*
  
! libgcc_ext.%.dylib : all-multi $(SHLIB_VERPFX).%.ver libgcc_s$(SHLIB_EXT) 
  	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
  	for mlib in $$MLIBS ; do \
! 	  $(STRIP) -o $(@)_T$${mlib} \
! 	    -R $(SHLIB_VERPFX).$(*).ver -c -urx \
! 	    ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT) || exit 1 ; \
  	done
! 	$(LIPO) -output $@ -create $(@)_T*
! 	rm $(@)_T*
  
! libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): all-multi libgcc_s$(SHLIB_EXT)
  	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
  	for mlib in $$MLIBS ; do \
  	  cp ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT)  \
  	    ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
  	done
! 	$(LIPO) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \
! 	  -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
  	rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
  
  install-darwin-libgcc-stubs :
  	$(mkinstalldirs) $(DESTDIR)$(slibdir)
  	for d in $(INSTALL_FILES) ; do \
  	  $(INSTALL_DATA) $$d $(DESTDIR)$(slibdir)/$$d || exit 1 ; \
  	done
- 	if [ -f $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib ]; then \
- 	  rm -f $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib; \
- 	else true; fi
- 	$(LN_S) libgcc_s.1.dylib \
- 		$(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib
- 	if [ -f $(DESTDIR)$(slibdir)/libgcc_s_x86_64.1.dylib ]; then \
- 	  rm -f $(DESTDIR)$(slibdir)/libgcc_s_x86_64.1.dylib; \
- 	else true; fi
- 	$(LN_S) libgcc_s.1.dylib \
- 		$(DESTDIR)$(slibdir)/libgcc_s_x86_64.1.dylib
  
  else
  
! # Do not install shared libraries for any other multilibs.  Unless
! # we're putting them in the gcc directory during a build, for
! # compatibility with the pre-top-level layout.  In that case we
! # need symlinks.
  
  ifeq ($(enable_shared),yes)
  all: install-darwin-libgcc-links
--- 88,173 ----
  install-leaf: install-darwin-libgcc-stubs
  endif
  
! libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): all-multi libgcc_s$(SHLIB_EXT)
  	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
  	for mlib in $$MLIBS ; do \
! 	  cp ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT)  \
! 	    ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
  	done
! 	$(LIPO) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \
! 	  -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
! 	rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
  
! ifeq ($(BUILD_LIBGCCS1),YES)
! ifneq ($(LIBEHSOBJS),)
! 
! libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT): all-multi libgcc_ehs$(SHLIB_EXT)
  	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
  	for mlib in $$MLIBS ; do \
! 	  cp ../$${mlib}/libgcc/$${mlib}/libgcc_ehs$(SHLIB_EXT)  \
! 	    ./libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
  	done
! 	$(LIPO) -output libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT) \
! 	  -create libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
! 	rm libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
  
! 
! libgcc_s.1.dylib: all-multi libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \
! 		  libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)
  	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
  	for mlib in $$MLIBS ; do \
  	  cp ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT)  \
  	    ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
+ 	  cp ../$${mlib}/libgcc/$${mlib}/libgcc_ehs$(SHLIB_EXT)  \
+ 	    ./libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
+ 	  arch=`$(LIPO) -info libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} | sed -e 's/.*:\ //'` ; \
+ 	  $(CC) -arch $${arch} -nodefaultlibs -dynamiclib \
+ 	    -o libgcc_s.1$(SHLIB_EXT)_T_$${mlib} \
+ 	    -Wl,-reexport_library,libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} \
+ 	    -Wl,-reexport_library,libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} \
+ 	    -install_name $(SHLIB_INSTALL_DIR)/libgcc_s.1.dylib \
+ 	    -compatibility_version 1 -current_version 1 ; \
  	done
! 	$(LIPO) -output libgcc_s.1$(SHLIB_EXT) -create libgcc_s.1$(SHLIB_EXT)_T*
  	rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
+ 	rm libgcc_ehs.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
+ 
+ else
+ 
+ libgcc_s.1.dylib: all-multi libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)
+ 	MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \
+ 	for mlib in $$MLIBS ; do \
+ 	  cp ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT)  \
+ 	    ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \
+ 	  arch=`$(LIPO) -info libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} | sed -e 's/.*:\ //'` ; \
+ 	  $(CC) -arch $${arch} -nodefaultlibs -dynamiclib \
+ 	    -o libgcc_s.1$(SHLIB_EXT)_T_$${mlib} \
+ 	    -Wl,-reexport_library,libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} \
+ 	    -lSystem \
+ 	    -Wl,-reexported_symbols_list,$(srcdir)/config/darwin-unwind.ver \
+ 	    -install_name $(SHLIB_INSTALL_DIR)/libgcc_s.1.dylib \
+ 	    -compatibility_version 1 -current_version 1 ; \
+ 	done
+ 	$(LIPO) -output libgcc_s.1$(SHLIB_EXT) -create libgcc_s.1$(SHLIB_EXT)_T*
+ 	rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T*
+ 
+ endif
+ endif
+ 
+ # Install the shared libraries.
  
  install-darwin-libgcc-stubs :
  	$(mkinstalldirs) $(DESTDIR)$(slibdir)
  	for d in $(INSTALL_FILES) ; do \
  	  $(INSTALL_DATA) $$d $(DESTDIR)$(slibdir)/$$d || exit 1 ; \
  	done
  
  else
  
! # Do not install shared libraries for multilibs.  Unless we are putting them
! # in the gcc directory during a build, for compatibility with the pre-top-
! # level layout.  In that case we provide symlinks to the FAT lib from the
! # multilib sub-directories.
  
  ifeq ($(enable_shared),yes)
  all: install-darwin-libgcc-links
*************** install-darwin-libgcc-links:
*** 123,134 ****
  	  $(LN_S) ../$$file $(gcc_objdir)$(MULTISUBDIR)/;	\
  	done
  
- 	rm -f $(gcc_objdir)$(MULTISUBDIR)/libgcc_s_x86_64.1.dylib
- 	$(LN_S) libgcc_s.1.dylib \
- 		$(gcc_objdir)$(MULTISUBDIR)/libgcc_s_x86_64.1.dylib
- 
- 	rm -f $(gcc_objdir)$(MULTISUBDIR)/libgcc_s_ppc64.1.dylib
- 	$(LN_S) libgcc_s.1.dylib \
- 		$(gcc_objdir)$(MULTISUBDIR)/libgcc_s_ppc64.1.dylib
- 
  endif
--- 180,183 ----
diff -Nrcpad gcc-10.3.0/libgcc/config.host gcc-10.4.0/libgcc/config.host
*** gcc-10.3.0/libgcc/config.host	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/config.host	Tue Jun 28 08:54:30 2022
*************** esac
*** 217,224 ****
  case ${host} in
  *-*-darwin*)
    asm_hidden_op=.private_extern
!   tmake_file="$tmake_file t-darwin ${cpu_type}/t-darwin t-libgcc-pic t-slibgcc-darwin"
!   extra_parts="crt3.o d10-uwfef.o crttms.o crttme.o"
    ;;
  *-*-dragonfly*)
    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip"
--- 217,234 ----
  case ${host} in
  *-*-darwin*)
    asm_hidden_op=.private_extern
!   tmake_file="$tmake_file t-darwin ${cpu_type}/t-darwin t-libgcc-pic"
!   # The unwinder is provided by the system shared libraries, do not add one
!   # to the shared libgcc but, for older systems, we build a shared unwinder
!   # separately so that we can construct a libgcc_s.1 to use for binaries
!   # linked against the old libgcc_ext.10.x stubs.
!   case ${host} in
!     *-*-darwin[89]* | *-*-darwin10*)
!       tmake_file="$tmake_file t-darwin-ehs ${cpu_type}/t-darwin-ehs"
!       ;;
!   esac
!   tmake_file="$tmake_file t-slibgcc-darwin"
!   extra_parts="crt3.o libd10-uwfef.a crttms.o crttme.o libemutls_w.a"
    ;;
  *-*-dragonfly*)
    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip"
*************** h8300-*-linux*)
*** 627,633 ****
  	tm_file="$tm_file h8300/h8300-lib.h"
  	;;
  hppa*64*-*-linux*)
! 	tmake_file="$tmake_file pa/t-linux pa/t-linux64"
  	extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
  	;;
  hppa*-*-linux*)
--- 637,643 ----
  	tm_file="$tm_file h8300/h8300-lib.h"
  	;;
  hppa*64*-*-linux*)
! 	tmake_file="$tmake_file pa/t-linux64"
  	extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
  	;;
  hppa*-*-linux*)
*************** powerpc-*-darwin*)
*** 1148,1157 ****
--- 1158,1171 ----
  	  md_unwind_header=rs6000/darwin-unwind.h
  	  ;;
  	esac
+ 	# We build the darwin10 EH shim for Rosetta (running on x86 machines).
+ 	tm_file="$tm_file i386/darwin-lib.h"
  	tmake_file="$tmake_file rs6000/t-ppc64-fp rs6000/t-ibm-ldouble"
  	extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o"
  	;;
  powerpc64-*-darwin*)
+ 	# We build the darwin10 EH shim for Rosetta (running on x86 machines).
+ 	tm_file="$tm_file i386/darwin-lib.h"
  	tmake_file="$tmake_file rs6000/t-darwin64 rs6000/t-ibm-ldouble"
  	extra_parts="$extra_parts crt2.o crt3_2.o libef_ppc.a dw_ppc.o"
  	;;
diff -Nrcpad gcc-10.3.0/libgcc/emutls.c gcc-10.4.0/libgcc/emutls.c
*** gcc-10.3.0/libgcc/emutls.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgcc/emutls.c	Tue Jun 28 08:54:30 2022
*************** struct __emutls_array
*** 50,56 ****
--- 50,65 ----
    void **data[];
  };
  
+ /* EMUTLS_ATTR is provided to allow targets to build the emulated tls
+    routines as weak definitions, for example.
+    If there is no definition, fall back to the default.  */
+ #ifndef EMUTLS_ATTR
+ #  define EMUTLS_ATTR
+ #endif
+ 
+ EMUTLS_ATTR
  void *__emutls_get_address (struct __emutls_object *);
+ EMUTLS_ATTR
  void __emutls_register_common (struct __emutls_object *, word, word, void *);
  
  #ifdef __GTHREADS
*************** emutls_alloc (struct __emutls_object *ob
*** 123,129 ****
    return ret;
  }
  
! void *
  __emutls_get_address (struct __emutls_object *obj)
  {
    if (! __gthread_active_p ())
--- 132,142 ----
    return ret;
  }
  
! /* Despite applying the attribute to the declaration, in this case the mis-
!    match between the builtin's declaration [void * (*)(void *)] and the
!    implementation here, causes the decl. attributes to be discarded.  */
! 
! EMUTLS_ATTR void *
  __emutls_get_address (struct __emutls_object *obj)
  {
    if (! __gthread_active_p ())
*************** __emutls_get_address (struct __emutls_ob
*** 187,193 ****
  #endif
  }
  
! void
  __emutls_register_common (struct __emutls_object *obj,
  			  word size, word align, void *templ)
  {
--- 200,206 ----
  #endif
  }
  
! EMUTLS_ATTR void
  __emutls_register_common (struct __emutls_object *obj,
  			  word size, word align, void *templ)
  {
diff -Nrcpad gcc-10.3.0/libgfortran/ChangeLog gcc-10.4.0/libgfortran/ChangeLog
*** gcc-10.3.0/libgfortran/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libgfortran/ChangeLog	Tue Jun 28 08:54:30 2022
***************
*** 1,3 ****
--- 1,17 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2021-12-27  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2021-12-14  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR libfortran/103634
+ 	* intrinsics/pack_generic.c (pack_internal): Handle case when the
+ 	array argument of PACK has one or more extents of size zero to
+ 	avoid invalid reads.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libgfortran/intrinsics/pack_generic.c gcc-10.4.0/libgfortran/intrinsics/pack_generic.c
*** gcc-10.3.0/libgfortran/intrinsics/pack_generic.c	Thu Apr  8 11:56:29 2021
--- gcc-10.4.0/libgfortran/intrinsics/pack_generic.c	Tue Jun 28 08:54:30 2022
*************** pack_internal (gfc_array_char *ret, cons
*** 85,90 ****
--- 85,91 ----
  
    index_type count[GFC_MAX_DIMENSIONS];
    index_type extent[GFC_MAX_DIMENSIONS];
+   bool zero_sized;
    index_type n;
    index_type dim;
    index_type nelem;
*************** pack_internal (gfc_array_char *ret, cons
*** 114,123 ****
--- 115,127 ----
    else
      runtime_error ("Funny sized logical array");
  
+   zero_sized = false;
    for (n = 0; n < dim; n++)
      {
        count[n] = 0;
        extent[n] = GFC_DESCRIPTOR_EXTENT(array,n);
+       if (extent[n] <= 0)
+ 	zero_sized = true;
        sstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(array,n);
        mstride[n] = GFC_DESCRIPTOR_STRIDE_BYTES(mask,n);
      }
*************** pack_internal (gfc_array_char *ret, cons
*** 126,131 ****
--- 130,140 ----
    if (mstride[0] == 0)
      mstride[0] = mask_kind;
  
+   if (zero_sized)
+     sptr = NULL;
+   else
+     sptr = array->base_addr;
+ 
    if (ret->base_addr == NULL || unlikely (compile_options.bounds_check))
      {
        /* Count the elements, either for allocating memory or
diff -Nrcpad gcc-10.3.0/libgomp/ChangeLog gcc-10.4.0/libgomp/ChangeLog
*** gcc-10.3.0/libgomp/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libgomp/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,110 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR libgomp/104385
+ 	* task.c (gomp_task_run_post_handle_dependers): If parent is NULL,
+ 	clear task->parent.
+ 	* testsuite/libgomp.c/pr104385.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/103384
+ 	* testsuite/libgomp.c/declare-variant-2.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/linux/affinity.c (gomp_affinity_init_level_1): For level 1
+ 	after creating count places clean up and return immediately.
+ 	* testsuite/libgomp.c/places-6.c: New test.
+ 	* testsuite/libgomp.c/places-7.c: New test.
+ 	* testsuite/libgomp.c/places-8.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/94366
+ 	* testsuite/libgomp.c-c++-common/pr94366.c: New test.
+ 
+ 2022-05-10  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* testsuite/libgomp.c-c++-common/reduction-1.c: New test.
+ 	* testsuite/libgomp.c-c++-common/reduction-2.c: New test.
+ 	* testsuite/libgomp.c-c++-common/reduction-3.c: New test.
+ 	* testsuite/libgomp.c-c++-common/reduction-4.c: New file.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-13  Jakub Jelinek  <jakub@redhat.com>
+ 		    Florian Weimer  <fweimer@redhat.com>
+ 
+ 	* config/linux/sem.h: Don't include limits.h.
+ 	(SEM_WAIT): Define to -__INT_MAX__ - 1 instead of INT_MIN.
+ 	* config/linux/affinity.c: Include limits.h.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/101167
+ 	* testsuite/libgomp.c-c++-common/task-reduction-15.c: New test.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/100471
+ 	* taskloop.c (GOMP_taskloop): If GOMP_TASK_FLAG_REDUCTION and not
+ 	GOMP_TASK_FLAG_NOGROUP, when doing early return clear the task
+ 	reduction pointer.
+ 	* testsuite/libgomp.c/task-reduction-4.c: New test.
+ 
+ 2021-05-06  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	Backported from master:
+ 	2021-04-30  Roman Zhuykov  <zhroma@ispras.ru>
+ 
+ 	* testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.c: New test.
+ 
+ 2021-04-18  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-11  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+ 
+ 	PR middle-end/98088
+ 	* testsuite/libgomp.oacc-c-c++-common/collapse-2.c: Add check
+ 	for loop with GT/GE condition.
+ 	* testsuite/libgomp.oacc-c-c++-common/collapse-3.c: Likewise.
+ 
+ 2021-04-09  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/84991
+ 	PR middle-end/84992
+ 	PR middle-end/90779
+ 	* testsuite/libgomp.oacc-c-c++-common/static-variable-1.c: New.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libgomp/config/linux/affinity.c gcc-10.4.0/libgomp/config/linux/affinity.c
*** gcc-10.3.0/libgomp/config/linux/affinity.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libgomp/config/linux/affinity.c	Tue Jun 28 08:54:31 2022
***************
*** 35,40 ****
--- 35,41 ----
  #include <stdio.h>
  #include <string.h>
  #include <unistd.h>
+ #include <limits.h>
  
  #ifdef HAVE_PTHREAD_AFFINITY_NP
  
*************** gomp_affinity_init_level_1 (int level, i
*** 280,287 ****
  		      if (gomp_affinity_add_cpus (pl, first, 1, 0, true))
  			{
  			  CPU_CLR_S (first, gomp_cpuset_size, copy);
! 			  if (level == 1)
! 			    gomp_places_list_len++;
  			}
  		    }
  		if (*p == ',')
--- 281,293 ----
  		      if (gomp_affinity_add_cpus (pl, first, 1, 0, true))
  			{
  			  CPU_CLR_S (first, gomp_cpuset_size, copy);
! 			  if (level == 1
! 			      && ++gomp_places_list_len >= count)
! 			    {
! 			      fclose (f);
! 			      free (line);
! 			      return;
! 			    }
  			}
  		    }
  		if (*p == ',')
diff -Nrcpad gcc-10.3.0/libgomp/config/linux/sem.h gcc-10.4.0/libgomp/config/linux/sem.h
*** gcc-10.3.0/libgomp/config/linux/sem.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libgomp/config/linux/sem.h	Tue Jun 28 08:54:31 2022
***************
*** 33,42 ****
  #ifndef GOMP_SEM_H
  #define GOMP_SEM_H 1
  
- #include <limits.h> /* For INT_MIN */
- 
  typedef int gomp_sem_t;
! #define SEM_WAIT INT_MIN
  #define SEM_INC 1
  
  extern void gomp_sem_wait_slow (gomp_sem_t *, int);
--- 33,40 ----
  #ifndef GOMP_SEM_H
  #define GOMP_SEM_H 1
  
  typedef int gomp_sem_t;
! #define SEM_WAIT (-__INT_MAX__ - 1)
  #define SEM_INC 1
  
  extern void gomp_sem_wait_slow (gomp_sem_t *, int);
diff -Nrcpad gcc-10.3.0/libgomp/libgomp.info gcc-10.4.0/libgomp/libgomp.info
*** gcc-10.3.0/libgomp/libgomp.info	Thu Apr  8 12:09:11 2021
--- gcc-10.4.0/libgomp/libgomp.info	Tue Jun 28 09:12:03 2022
***************
*** 1,4 ****
! This is libgomp.info, produced by makeinfo version 6.5 from
  libgomp.texi.
  
  Copyright (C) 2006-2020 Free Software Foundation, Inc.
--- 1,4 ----
! This is libgomp.info, produced by makeinfo version 6.8 from
  libgomp.texi.
  
  Copyright (C) 2006-2020 Free Software Foundation, Inc.
*************** Node: Funding200734
*** 5118,5120 ****
--- 5118,5125 ----
  Node: Library Index203260
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/libgomp/task.c gcc-10.4.0/libgomp/task.c
*** gcc-10.3.0/libgomp/task.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libgomp/task.c	Tue Jun 28 08:54:31 2022
*************** gomp_task_run_post_handle_dependers (str
*** 1188,1193 ****
--- 1188,1195 ----
  		}
  	    }
  	}
+       else
+ 	task->parent = NULL;
        if (taskgroup)
  	{
  	  priority_queue_insert (PQ_TASKGROUP, &taskgroup->taskgroup_queue,
diff -Nrcpad gcc-10.3.0/libgomp/taskloop.c gcc-10.4.0/libgomp/taskloop.c
*** gcc-10.3.0/libgomp/taskloop.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libgomp/taskloop.c	Tue Jun 28 08:54:31 2022
*************** GOMP_taskloop (void (*fn) (void *), void
*** 51,70 ****
  
    /* If parallel or taskgroup has been cancelled, don't start new tasks.  */
    if (team && gomp_team_barrier_cancelled (&team->barrier))
!     return;
  
  #ifdef TYPE_is_long
    TYPE s = step;
    if (step > 0)
      {
        if (start >= end)
! 	return;
        s--;
      }
    else
      {
        if (start <= end)
! 	return;
        s++;
      }
    UTYPE n = (end - start + s) / step;
--- 51,82 ----
  
    /* If parallel or taskgroup has been cancelled, don't start new tasks.  */
    if (team && gomp_team_barrier_cancelled (&team->barrier))
!     {
!     early_return:
!       if ((flags & (GOMP_TASK_FLAG_NOGROUP | GOMP_TASK_FLAG_REDUCTION))
! 	  == GOMP_TASK_FLAG_REDUCTION)
! 	{
! 	  struct gomp_data_head { TYPE t1, t2; uintptr_t *ptr; };
! 	  uintptr_t *ptr = ((struct gomp_data_head *) data)->ptr;
! 	  /* Tell callers GOMP_taskgroup_reduction_register has not been
! 	     called.  */
! 	  ptr[2] = 0;
! 	}
!       return;
!     }
  
  #ifdef TYPE_is_long
    TYPE s = step;
    if (step > 0)
      {
        if (start >= end)
! 	goto early_return;
        s--;
      }
    else
      {
        if (start <= end)
! 	goto early_return;
        s++;
      }
    UTYPE n = (end - start + s) / step;
*************** GOMP_taskloop (void (*fn) (void *), void
*** 73,85 ****
    if (flags & GOMP_TASK_FLAG_UP)
      {
        if (start >= end)
! 	return;
        n = (end - start + step - 1) / step;
      }
    else
      {
        if (start <= end)
! 	return;
        n = (start - end - step - 1) / -step;
      }
  #endif
--- 85,97 ----
    if (flags & GOMP_TASK_FLAG_UP)
      {
        if (start >= end)
! 	goto early_return;
        n = (end - start + step - 1) / step;
      }
    else
      {
        if (start <= end)
! 	goto early_return;
        n = (start - end - step - 1) / -step;
      }
  #endif
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c/declare-variant-2.c gcc-10.4.0/libgomp/testsuite/libgomp.c/declare-variant-2.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c/declare-variant-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c/declare-variant-2.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,45 ----
+ /* { dg-do run } */
+ 
+ #include <omp.h>
+ #include <stdlib.h>
+ 
+ void
+ foo_host (void)
+ {
+   if (!omp_is_initial_device ())
+     abort ();
+ }
+ 
+ #pragma omp declare variant (foo_host) match (device={kind(host)})
+ void
+ foo (void)
+ {
+   if (omp_is_initial_device ())
+     abort ();
+ }
+ 
+ void
+ bar_nohost (void)
+ {
+   if (omp_is_initial_device ())
+     abort ();
+ }
+ 
+ #pragma omp declare variant (bar_nohost) match (device={kind(nohost)})
+ void
+ bar (void)
+ {
+   if (!omp_is_initial_device ())
+     abort ();
+ }
+ 
+ int
+ main ()
+ {
+   #pragma omp target
+   {
+     foo ();
+     bar ();
+   }
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c/places-6.c gcc-10.4.0/libgomp/testsuite/libgomp.c/places-6.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c/places-6.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c/places-6.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-set-target-env-var OMP_PLACES "threads(1)" } */
+ /* { dg-set-target-env-var OMP_DISPLAY_ENV "true" } */
+ 
+ int
+ main ()
+ {
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c/places-7.c gcc-10.4.0/libgomp/testsuite/libgomp.c/places-7.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c/places-7.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c/places-7.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-set-target-env-var OMP_PLACES "cores(1)" } */
+ /* { dg-set-target-env-var OMP_DISPLAY_ENV "true" } */
+ 
+ int
+ main ()
+ {
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c/places-8.c gcc-10.4.0/libgomp/testsuite/libgomp.c/places-8.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c/places-8.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c/places-8.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-set-target-env-var OMP_PLACES "sockets(1)" } */
+ /* { dg-set-target-env-var OMP_DISPLAY_ENV "true" } */
+ 
+ int
+ main ()
+ {
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c/pr104385.c gcc-10.4.0/libgomp/testsuite/libgomp.c/pr104385.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c/pr104385.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c/pr104385.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,26 ----
+ /* PR libgomp/104385 */
+ 
+ #include <unistd.h>
+ 
+ int
+ main ()
+ {
+   int j = 0;
+   #pragma omp parallel shared(j) num_threads(2)
+   {
+     #pragma omp barrier
+     #pragma omp master
+     #pragma omp task shared(j)
+     {
+       #pragma omp task depend(out: j) shared(j)
+       {
+         usleep (10000);
+         j = 1;
+       }
+ 
+       #pragma omp task depend(inout: j) shared(j)
+       j += 1;
+     }
+   }
+   return j - 2;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c/task-reduction-4.c gcc-10.4.0/libgomp/testsuite/libgomp.c/task-reduction-4.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c/task-reduction-4.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c/task-reduction-4.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,21 ----
+ /* PR middle-end/100471 */
+ 
+ extern void abort (void);
+ 
+ int c;
+ 
+ int
+ main ()
+ {
+ #pragma omp parallel
+ #pragma omp single
+   {
+     int r = 0, i;
+     #pragma omp taskloop reduction(+:r)
+     for (i = 0; i < c; i++)
+       r++;
+     if (r != 0)
+       abort ();
+   }
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/pr94366.c gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/pr94366.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/pr94366.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/pr94366.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,17 ----
+ /* PR middle-end/94366 */
+ 
+ int
+ main ()
+ {
+   int a = 2;
+   #pragma omp parallel reduction(&& : a)
+     a = a && 1;
+   if (!a)
+     __builtin_abort ();
+   a = 4;
+   #pragma omp parallel reduction(|| : a)
+     a = a || 0;
+   if (!a)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-1.c gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-1.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-1.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,192 ----
+ /* C / C++'s logical AND and OR operators take any scalar argument
+    which compares (un)equal to 0 - the result 1 or 0 and of type int.
+ 
+    In this testcase, the int result is again converted to a floating-poing
+    or complex type.
+ 
+    While having a floating-point/complex array element with || and && can make
+    sense, having a non-integer/non-bool reduction variable is odd but valid.
+ 
+    Test: FP reduction variable + FP array.  */
+ 
+ #define N 1024
+ _Complex float rcf[N];
+ _Complex double rcd[N];
+ float rf[N];
+ double rd[N];
+ 
+ int
+ reduction_or ()
+ {
+   float orf = 0;
+   double ord = 0;
+   _Complex float orfc = 0;
+   _Complex double ordc = 0;
+ 
+   #pragma omp parallel reduction(||: orf)
+   for (int i=0; i < N; ++i)
+     orf = orf || rf[i];
+ 
+   #pragma omp parallel for reduction(||: ord)
+   for (int i=0; i < N; ++i)
+     ord = ord || rcd[i];
+ 
+   #pragma omp parallel for simd reduction(||: orfc)
+   for (int i=0; i < N; ++i)
+     orfc = orfc || rcf[i];
+ 
+   #pragma omp parallel loop reduction(||: ordc)
+   for (int i=0; i < N; ++i)
+     ordc = ordc || rcd[i];
+ 
+   return orf + ord + __real__ orfc + __real__ ordc;
+ }
+ 
+ int
+ reduction_or_teams ()
+ {
+   float orf = 0;
+   double ord = 0;
+   _Complex float orfc = 0;
+   _Complex double ordc = 0;
+ 
+   #pragma omp teams distribute parallel for reduction(||: orf)
+   for (int i=0; i < N; ++i)
+     orf = orf || rf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ord)
+   for (int i=0; i < N; ++i)
+     ord = ord || rcd[i];
+ 
+   #pragma omp teams distribute parallel for reduction(||: orfc)
+   for (int i=0; i < N; ++i)
+     orfc = orfc || rcf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ordc)
+   for (int i=0; i < N; ++i)
+     ordc = ordc || rcd[i];
+ 
+   return orf + ord + __real__ orfc + __real__ ordc;
+ }
+ 
+ int
+ reduction_and ()
+ {
+   float andf = 1;
+   double andd = 1;
+   _Complex float andfc = 1;
+   _Complex double anddc = 1;
+ 
+   #pragma omp parallel reduction(&&: andf)
+   for (int i=0; i < N; ++i)
+     andf = andf && rf[i];
+ 
+   #pragma omp parallel for reduction(&&: andd)
+   for (int i=0; i < N; ++i)
+     andd = andd && rcd[i];
+ 
+   #pragma omp parallel for simd reduction(&&: andfc)
+   for (int i=0; i < N; ++i)
+     andfc = andfc && rcf[i];
+ 
+   #pragma omp parallel loop reduction(&&: anddc)
+   for (int i=0; i < N; ++i)
+     anddc = anddc && rcd[i];
+ 
+   return andf + andd + __real__ andfc + __real__ anddc;
+ }
+ 
+ int
+ reduction_and_teams ()
+ {
+   float andf = 1;
+   double andd = 1;
+   _Complex float andfc = 1;
+   _Complex double anddc = 1;
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andf)
+   for (int i=0; i < N; ++i)
+     andf = andf && rf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: andd)
+   for (int i=0; i < N; ++i)
+     andd = andd && rcd[i];
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andfc)
+   for (int i=0; i < N; ++i)
+     andfc = andfc && rcf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: anddc)
+   for (int i=0; i < N; ++i)
+     anddc = anddc && rcd[i];
+ 
+   return andf + andd + __real__ andfc + __real__ anddc;
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < N; ++i)
+     {
+       rf[i] = 0;
+       rd[i] = 0;
+       rcf[i] = 0;
+       rcd[i] = 0;
+     }
+ 
+   if (reduction_or () != 0)
+     __builtin_abort ();
+   if (reduction_or_teams () != 0)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   rf[10] = 1.0;
+   rd[15] = 1.0;
+   rcf[10] = 1.0;
+   rcd[15] = 1.0i;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   for (int i = 0; i < N; ++i)
+     {
+       rf[i] = 1;
+       rd[i] = 1;
+       rcf[i] = 1;
+       rcd[i] = 1;
+     }
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 4)
+     __builtin_abort ();
+   if (reduction_and_teams () != 4)
+     __builtin_abort ();
+ 
+   rf[10] = 0.0;
+   rd[15] = 0.0;
+   rcf[10] = 0.0;
+   rcd[15] = 0.0;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-2.c gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-2.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-2.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-2.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,192 ----
+ /* C / C++'s logical AND and OR operators take any scalar argument
+    which compares (un)equal to 0 - the result 1 or 0 and of type int.
+ 
+    In this testcase, the int result is again converted to a floating-poing
+    or complex type.
+ 
+    While having a floating-point/complex array element with || and && can make
+    sense, having a non-integer/non-bool reduction variable is odd but valid.
+ 
+    Test: FP reduction variable + integer array.  */
+ 
+ #define N 1024
+ char rcf[N];
+ short rcd[N];
+ int rf[N];
+ long rd[N];
+ 
+ int
+ reduction_or ()
+ {
+   float orf = 0;
+   double ord = 0;
+   _Complex float orfc = 0;
+   _Complex double ordc = 0;
+ 
+   #pragma omp parallel reduction(||: orf)
+   for (int i=0; i < N; ++i)
+     orf = orf || rf[i];
+ 
+   #pragma omp parallel for reduction(||: ord)
+   for (int i=0; i < N; ++i)
+     ord = ord || rcd[i];
+ 
+   #pragma omp parallel for simd reduction(||: orfc)
+   for (int i=0; i < N; ++i)
+     orfc = orfc || rcf[i];
+ 
+   #pragma omp parallel loop reduction(||: ordc)
+   for (int i=0; i < N; ++i)
+     ordc = ordc || rcd[i];
+ 
+   return orf + ord + __real__ orfc + __real__ ordc;
+ }
+ 
+ int
+ reduction_or_teams ()
+ {
+   float orf = 0;
+   double ord = 0;
+   _Complex float orfc = 0;
+   _Complex double ordc = 0;
+ 
+   #pragma omp teams distribute parallel for reduction(||: orf)
+   for (int i=0; i < N; ++i)
+     orf = orf || rf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ord)
+   for (int i=0; i < N; ++i)
+     ord = ord || rcd[i];
+ 
+   #pragma omp teams distribute parallel for reduction(||: orfc)
+   for (int i=0; i < N; ++i)
+     orfc = orfc || rcf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ordc)
+   for (int i=0; i < N; ++i)
+     ordc = ordc || rcd[i];
+ 
+   return orf + ord + __real__ orfc + __real__ ordc;
+ }
+ 
+ int
+ reduction_and ()
+ {
+   float andf = 1;
+   double andd = 1;
+   _Complex float andfc = 1;
+   _Complex double anddc = 1;
+ 
+   #pragma omp parallel reduction(&&: andf)
+   for (int i=0; i < N; ++i)
+     andf = andf && rf[i];
+ 
+   #pragma omp parallel for reduction(&&: andd)
+   for (int i=0; i < N; ++i)
+     andd = andd && rcd[i];
+ 
+   #pragma omp parallel for simd reduction(&&: andfc)
+   for (int i=0; i < N; ++i)
+     andfc = andfc && rcf[i];
+ 
+   #pragma omp parallel loop reduction(&&: anddc)
+   for (int i=0; i < N; ++i)
+     anddc = anddc && rcd[i];
+ 
+   return andf + andd + __real__ andfc + __real__ anddc;
+ }
+ 
+ int
+ reduction_and_teams ()
+ {
+   float andf = 1;
+   double andd = 1;
+   _Complex float andfc = 1;
+   _Complex double anddc = 1;
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andf)
+   for (int i=0; i < N; ++i)
+     andf = andf && rf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: andd)
+   for (int i=0; i < N; ++i)
+     andd = andd && rcd[i];
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andfc)
+   for (int i=0; i < N; ++i)
+     andfc = andfc && rcf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: anddc)
+   for (int i=0; i < N; ++i)
+     anddc = anddc && rcd[i];
+ 
+   return andf + andd + __real__ andfc + __real__ anddc;
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < N; ++i)
+     {
+       rf[i] = 0;
+       rd[i] = 0;
+       rcf[i] = 0;
+       rcd[i] = 0;
+     }
+ 
+   if (reduction_or () != 0)
+     __builtin_abort ();
+   if (reduction_or_teams () != 0)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   rf[10] = 1;
+   rd[15] = 1;
+   rcf[10] = 1;
+   rcd[15] = 1;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   for (int i = 0; i < N; ++i)
+     {
+       rf[i] = 1;
+       rd[i] = 1;
+       rcf[i] = 1;
+       rcd[i] = 1;
+     }
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 4)
+     __builtin_abort ();
+   if (reduction_and_teams () != 4)
+     __builtin_abort ();
+ 
+   rf[10] = 0;
+   rd[15] = 0;
+   rcf[10] = 0;
+   rcd[15] = 0;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-3.c gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-3.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-3.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-3.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,192 ----
+ /* C / C++'s logical AND and OR operators take any scalar argument
+    which compares (un)equal to 0 - the result 1 or 0 and of type int.
+ 
+    In this testcase, the int result is again converted to a floating-poing
+    or complex type.
+ 
+    While having a floating-point/complex array element with || and && can make
+    sense, having a non-integer/non-bool reduction variable is odd but valid.
+ 
+    Test: integer reduction variable + FP array.  */
+ 
+ #define N 1024
+ _Complex float rcf[N];
+ _Complex double rcd[N];
+ float rf[N];
+ double rd[N];
+ 
+ int
+ reduction_or ()
+ {
+   char orf = 0;
+   short ord = 0;
+   int orfc = 0;
+   long ordc = 0;
+ 
+   #pragma omp parallel reduction(||: orf)
+   for (int i=0; i < N; ++i)
+     orf = orf || rf[i];
+ 
+   #pragma omp parallel for reduction(||: ord)
+   for (int i=0; i < N; ++i)
+     ord = ord || rcd[i];
+ 
+   #pragma omp parallel for simd reduction(||: orfc)
+   for (int i=0; i < N; ++i)
+     orfc = orfc || rcf[i];
+ 
+   #pragma omp parallel loop reduction(||: ordc)
+   for (int i=0; i < N; ++i)
+     ordc = ordc || rcd[i];
+ 
+   return orf + ord + __real__ orfc + __real__ ordc;
+ }
+ 
+ int
+ reduction_or_teams ()
+ {
+   char orf = 0;
+   short ord = 0;
+   int orfc = 0;
+   long ordc = 0;
+ 
+   #pragma omp teams distribute parallel for reduction(||: orf)
+   for (int i=0; i < N; ++i)
+     orf = orf || rf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ord)
+   for (int i=0; i < N; ++i)
+     ord = ord || rcd[i];
+ 
+   #pragma omp teams distribute parallel for reduction(||: orfc)
+   for (int i=0; i < N; ++i)
+     orfc = orfc || rcf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ordc)
+   for (int i=0; i < N; ++i)
+     ordc = ordc || rcd[i];
+ 
+   return orf + ord + __real__ orfc + __real__ ordc;
+ }
+ 
+ int
+ reduction_and ()
+ {
+   unsigned char andf = 1;
+   unsigned short andd = 1;
+   unsigned int andfc = 1;
+   unsigned long anddc = 1;
+ 
+   #pragma omp parallel reduction(&&: andf)
+   for (int i=0; i < N; ++i)
+     andf = andf && rf[i];
+ 
+   #pragma omp parallel for reduction(&&: andd)
+   for (int i=0; i < N; ++i)
+     andd = andd && rcd[i];
+ 
+   #pragma omp parallel for simd reduction(&&: andfc)
+   for (int i=0; i < N; ++i)
+     andfc = andfc && rcf[i];
+ 
+   #pragma omp parallel loop reduction(&&: anddc)
+   for (int i=0; i < N; ++i)
+     anddc = anddc && rcd[i];
+ 
+   return andf + andd + __real__ andfc + __real__ anddc;
+ }
+ 
+ int
+ reduction_and_teams ()
+ {
+   unsigned char andf = 1;
+   unsigned short andd = 1;
+   unsigned int andfc = 1;
+   unsigned long anddc = 1;
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andf)
+   for (int i=0; i < N; ++i)
+     andf = andf && rf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: andd)
+   for (int i=0; i < N; ++i)
+     andd = andd && rcd[i];
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andfc)
+   for (int i=0; i < N; ++i)
+     andfc = andfc && rcf[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: anddc)
+   for (int i=0; i < N; ++i)
+     anddc = anddc && rcd[i];
+ 
+   return andf + andd + __real__ andfc + __real__ anddc;
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < N; ++i)
+     {
+       rf[i] = 0;
+       rd[i] = 0;
+       rcf[i] = 0;
+       rcd[i] = 0;
+     }
+ 
+   if (reduction_or () != 0)
+     __builtin_abort ();
+   if (reduction_or_teams () != 0)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   rf[10] = 1.0;
+   rd[15] = 1.0;
+   rcf[10] = 1.0;
+   rcd[15] = 1.0i;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   for (int i = 0; i < N; ++i)
+     {
+       rf[i] = 1;
+       rd[i] = 1;
+       rcf[i] = 1;
+       rcd[i] = 1;
+     }
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 4)
+     __builtin_abort ();
+   if (reduction_and_teams () != 4)
+     __builtin_abort ();
+ 
+   rf[10] = 0.0;
+   rd[15] = 0.0;
+   rcf[10] = 0.0;
+   rcd[15] = 0.0;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-4.c gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-4.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/reduction-4.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/reduction-4.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,194 ----
+ /* C / C++'s logical AND and OR operators take any scalar argument
+    which compares (un)equal to 0 - the result 1 or 0 and of type int.
+ 
+    In this testcase, the int result is again converted to an integer complex
+    type.
+ 
+    While having a floating-point/complex array element with || and && can make
+    sense, having a complex reduction variable is odd but valid.
+ 
+    Test: int complex reduction variable + int complex array.  */
+ 
+ #define N 1024
+ _Complex char rcc[N];
+ _Complex short rcs[N];
+ _Complex int rci[N];
+ _Complex long long rcl[N];
+ 
+ int
+ reduction_or ()
+ {
+   _Complex char orc = 0;
+   _Complex short ors = 0;
+   _Complex int ori = 0;
+   _Complex long orl = 0;
+ 
+   #pragma omp parallel reduction(||: orc)
+   for (int i=0; i < N; ++i)
+     orc = orc || rcl[i];
+ 
+   #pragma omp parallel for reduction(||: ors)
+   for (int i=0; i < N; ++i)
+     ors = ors || rci[i];
+ 
+   #pragma omp parallel for simd reduction(||: ori)
+   for (int i=0; i < N; ++i)
+     ori = ori || rcs[i];
+ 
+   #pragma omp parallel loop reduction(||: orl)
+   for (int i=0; i < N; ++i)
+     orl = orl || rcc[i];
+ 
+   return __real__ (orc + ors + ori + orl) + __imag__ (orc + ors + ori + orl);
+ }
+ 
+ int
+ reduction_or_teams ()
+ {
+   _Complex char orc = 0;
+   _Complex short ors = 0;
+   _Complex int ori = 0;
+   _Complex long orl = 0;
+ 
+   #pragma omp teams distribute parallel for reduction(||: orc)
+   for (int i=0; i < N; ++i)
+     orc = orc || rcc[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: ors)
+   for (int i=0; i < N; ++i)
+     ors = ors || rcs[i];
+ 
+   #pragma omp teams distribute parallel for reduction(||: ori)
+   for (int i=0; i < N; ++i)
+     ori = ori || rci[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(||: orl)
+   for (int i=0; i < N; ++i)
+     orl = orl || rcl[i];
+ 
+   return __real__ (orc + ors + ori + orl) + __imag__ (orc + ors + ori + orl);
+ }
+ 
+ int
+ reduction_and ()
+ {
+   _Complex char andc = 1;
+   _Complex short ands = 1;
+   _Complex int andi = 1;
+   _Complex long andl = 1;
+ 
+   #pragma omp parallel reduction(&&: andc)
+   for (int i=0; i < N; ++i)
+     andc = andc && rcc[i];
+ 
+   #pragma omp parallel for reduction(&&: ands)
+   for (int i=0; i < N; ++i)
+     ands = ands && rcs[i];
+ 
+   #pragma omp parallel for simd reduction(&&: andi)
+   for (int i=0; i < N; ++i)
+     andi = andi && rci[i];
+ 
+   #pragma omp parallel loop reduction(&&: andl)
+   for (int i=0; i < N; ++i)
+     andl = andl && rcl[i];
+ 
+   return __real__ (andc + ands + andi + andl)
+ 	 + __imag__ (andc + ands + andi + andl);
+ }
+ 
+ int
+ reduction_and_teams ()
+ {
+   _Complex char andc = 1;
+   _Complex short ands = 1;
+   _Complex int andi = 1;
+   _Complex long andl = 1;
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andc)
+   for (int i=0; i < N; ++i)
+     andc = andc && rcl[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: ands)
+   for (int i=0; i < N; ++i)
+     ands = ands && rci[i];
+ 
+   #pragma omp teams distribute parallel for reduction(&&: andi)
+   for (int i=0; i < N; ++i)
+     andi = andi && rcs[i];
+ 
+   #pragma omp teams distribute parallel for simd reduction(&&: andl)
+   for (int i=0; i < N; ++i)
+     andl = andl && rcc[i];
+ 
+   return __real__ (andc + ands + andi + andl)
+ 	 + __imag__ (andc + ands + andi + andl);
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < N; ++i)
+     {
+       rcc[i] = 0;
+       rcs[i] = 0;
+       rci[i] = 0;
+       rcl[i] = 0;
+     }
+ 
+   if (reduction_or () != 0)
+     __builtin_abort ();
+   if (reduction_or_teams () != 0)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   rcc[10] = 1.0;
+   rcs[15] = 1.0i;
+   rci[10] = 1.0;
+   rcl[15] = 1.0i;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   for (int i = 0; i < N; ++i)
+     {
+       rcc[i] = 1;
+       rcs[i] = 1i;
+       rci[i] = 1;
+       rcl[i] = 1 + 1i;
+     }
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 4)
+     __builtin_abort ();
+   if (reduction_and_teams () != 4)
+     __builtin_abort ();
+ 
+   rcc[10] = 0.0;
+   rcs[15] = 0.0;
+   rci[10] = 0.0;
+   rcl[15] = 0.0;
+ 
+   if (reduction_or () != 4)
+     __builtin_abort ();
+   if (reduction_or_teams () != 4)
+     __builtin_abort ();
+   if (reduction_and () != 0)
+     __builtin_abort ();
+   if (reduction_and_teams () != 0)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,61 ----
+ /* PR middle-end/101167 */
+ 
+ extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+ void abort (void);
+ 
+ struct S { int a, b, c[2]; };
+ 
+ void
+ init (struct S *x)
+ {
+   x->a = 0;
+   x->b = 0;
+   x->c[0] = 0;
+   x->c[1] = 0;
+ }
+ 
+ void
+ merge (struct S *x, struct S *y)
+ {
+   x->a += y->a;
+   x->b += y->b;
+ }
+ 
+ #pragma omp declare reduction (+: struct S : merge (&omp_out, &omp_in)) initializer (init (&omp_priv))
+ 
+ void
+ foo (struct S x)
+ {
+   #pragma omp taskgroup task_reduction (+: x)
+   {
+     #pragma omp task in_reduction (+: x)
+     {
+       x.a++;
+       x.b++;
+     }
+     #pragma omp task in_reduction (+: x)
+     {
+       x.a += 4;
+       x.b += 14;
+     }
+     #pragma omp task in_reduction (+: x)
+     {
+       x.a += 9;
+       x.b += 19;
+     }
+   }
+   if (x.a != 56 || x.b != 86)
+     abort ();
+ }
+ 
+ int
+ main ()
+ {
+   struct S x = { 42, 52 };
+   #pragma omp parallel master num_threads(3)
+   foo (x);
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.c gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-3.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,1627 ----
+ /* { dg-do run } */
+ /* { dg-additional-options "-fmodulo-sched -fmodulo-sched-allow-regmoves" } */
+ 
+ #include <stdlib.h>
+ 
+ int
+ main(int argc, char **argv)
+ {
+   int   iexp, igot, imax, imin;
+   long long lexp, lgot;
+   int   N = 32;
+   int	i;
+   int   idata[N];
+   long long ldata[N];
+   float fexp, fgot;
+   float fdata[N];
+ 
+   igot = 1234;
+   iexp = 31;
+ 
+   for (i = 0; i < N; i++)
+     idata[i] = i;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { idata[i] = igot; igot = i; }
+   }
+ 
+   imax = 0;
+   imin = N;
+ 
+   for (i = 0; i < N; i++)
+     {
+       imax = idata[i] > imax ? idata[i] : imax;
+       imin = idata[i] < imin ? idata[i] : imin;
+     }
+ 
+   if (imax != 1234 || imin != 0)
+     abort ();
+ 
+   return 0;
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { idata[i] = igot; igot++; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { idata[i] = igot; ++igot; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { ++igot; idata[i] = igot; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { igot++; idata[i] = igot; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { idata[i] = igot; igot--; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { idata[i] = igot; --igot; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { --igot; idata[i] = igot; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+ #pragma acc atomic capture
+       { igot--; idata[i] = igot; }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   /* BINOP = + */
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { idata[i] = igot; igot += expr; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { igot += expr; idata[i] = igot; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { idata[i] = igot; igot = igot + expr; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { idata[i] = igot; igot = expr + igot; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { igot = igot + expr; idata[i] = igot; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+ 
+   igot = 0;
+   iexp = 32;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { igot = expr + igot; idata[i] = igot; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   /* BINOP = * */
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+       { ldata[i] = lgot; lgot *= expr; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+         { lgot *= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = lgot * expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+       { ldata[i] = lgot; lgot = expr * lgot; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+         { lgot = lgot * expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = 2;
+ 
+ #pragma acc atomic capture
+       { lgot = expr * lgot; ldata[i] = lgot; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   /* BINOP = - */
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       int expr = 1;
+ 
+ #pragma acc atomic capture
+       { idata[i] = igot; igot -= expr; }
+     }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { igot -= expr; idata[i] = igot; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 32;
+   iexp = 0;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { idata[i] = igot; igot = igot - expr; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 1;
+   iexp = 1;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       int expr = 1;
+ 
+ #pragma acc atomic capture
+       { idata[i] = igot; igot = expr - igot; }
+     }
+   }
+ 
+   for (i = 0; i < N; i++)
+     if (i % 2 == 0)
+       {
+ 	if (idata[i] != 1)
+ 	  abort ();
+       }
+     else
+       {
+ 	if (idata[i] != 0)
+ 	  abort ();
+       }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 1;
+   iexp = -31;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { igot = igot - expr; idata[i] = igot; }
+       }
+   }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   igot = 1;
+   iexp = 1;
+ 
+ #pragma acc data copy (igot, idata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         int expr = 1;
+ 
+ #pragma acc atomic capture
+         { igot = expr - igot; idata[i] = igot; }
+       }
+   }
+ 
+   for (i = 0; i < N; i++)
+     if (i % 2 == 0)
+       {
+ 	if (idata[i] != 0)
+ 	  abort ();
+       }
+     else
+       {
+ 	if (idata[i] != 1)
+ 	  abort ();
+       }
+ 
+   if (iexp != igot)
+     abort ();
+ 
+   /* BINOP = / */
+   lgot = 1LL << 32;
+   lexp = 1LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot /= expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL << 32;
+   lexp = 1LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+         { lgot /= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL << 32;
+   lexp = 1LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+       { ldata[i] = lgot; lgot = lgot / expr; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 2LL;
+   lexp = 2LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL << N;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = expr / lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 2LL;
+   lexp = 2LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL << N;
+ 
+ #pragma acc atomic capture
+         { lgot = lgot / expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 2LL;
+   lexp = 2LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL << N;
+ 
+ #pragma acc atomic capture
+         { lgot = expr / lgot; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   /* BINOP = & */
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot &= expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   iexp = 0LL; 
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot &= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = lgot & expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = expr & lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   iexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot = lgot & expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+       { lgot = expr & lgot; ldata[i] = lgot; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   /* BINOP = ^ */
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = 1 << i;
+ 
+ #pragma acc atomic capture
+       { ldata[i] = lgot; lgot ^= expr; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   iexp = 0LL; 
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot ^= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = lgot ^ expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+       { ldata[i] = lgot; lgot = expr ^ lgot; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   iexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot = lgot ^ expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = ~0LL;
+   lexp = 0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot = expr ^ lgot; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   /* BINOP = | */
+   lgot = 0LL;
+   lexp = ~0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1 << i;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot |= expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 0LL;
+   iexp = ~0LL; 
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot |= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 0LL;
+   lexp = ~0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = lgot | expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 0LL;
+   lexp = ~0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = expr | lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 0LL;
+   iexp = ~0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot = lgot | expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 0LL;
+   lexp = ~0LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = ~(1 << i);
+ 
+ #pragma acc atomic capture
+         { lgot = expr | lgot; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   /* BINOP = << */
+   lgot = 1LL;
+   lexp = 1LL << N;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot <<= expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   iexp = 1LL << N; 
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { lgot <<= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << N;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = lgot << expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 2LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < 1; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = expr << lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 2LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < 1; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { lgot = lgot << expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 2LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < 1; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { lgot = expr << lgot; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   /* BINOP = >> */
+   lgot = 1LL << N;
+   lexp = 1LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+   
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot >>= expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL << N;
+   iexp = 1LL; 
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { lgot >>= expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL << N;
+   lexp = 1LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = lgot >> expr; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << (N - 1);
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < 1; i++)
+       {
+         long long expr = 1LL << N;
+ 
+ #pragma acc atomic capture
+         { ldata[i] = lgot; lgot = expr >> lgot; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL << N;
+   lexp = 1LL;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL;
+ 
+ #pragma acc atomic capture
+         { lgot = lgot >> expr; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << (N - 1);
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < 1; i++)
+       {
+         long long expr = 1LL << N;
+ 
+ #pragma acc atomic capture
+         { lgot = expr >> lgot; ldata[i] = lgot; }
+       }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   // FLOAT FLOAT FLOAT
+ 
+   /* BINOP = + */
+   fgot = 0.0;
+   fexp = 32.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       float expr = 1.0;
+ 
+ #pragma acc atomic capture
+       { fdata[i] = fgot; fgot += expr; }
+     }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 0.0;
+   fexp = 32.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fgot += expr; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 0.0;
+   fexp = 32.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { idata[i] = fgot; fgot = fgot + expr; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 0.0;
+   fexp = 32.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       float expr = 1.0;
+ 
+ #pragma acc atomic capture
+       { fdata[i] = fgot; fgot = expr + fgot; }
+     }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 0.0;
+   fexp = 32.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fgot = fgot + expr; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 0.0;
+   fexp = 32.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fgot = expr + fgot; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   /* BINOP = * */
+   fgot = 1.0;
+   fexp = 8192.0*8192.0*64.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       float expr = 2.0;
+ 
+ #pragma acc atomic capture
+       { fdata[i] = fgot; fgot *= expr; }
+     }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = 8192.0*8192.0*64.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fgot *= expr; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = 8192.0*8192.0*64.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot = fgot * expr; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = 8192.0*8192.0*64.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot = expr * fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   lgot = 1LL;
+   lexp = 1LL << 32;
+ 
+ #pragma acc data copy (lgot, ldata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       long long expr = 2LL;
+ 
+ #pragma acc atomic capture
+       { lgot = lgot * expr; ldata[i] = lgot; }
+     }
+   }
+ 
+   if (lexp != lgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = 8192.0*8192.0*64.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 2;
+ 
+ #pragma acc atomic capture
+         { fgot = expr * fgot; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   /* BINOP = - */
+   fgot = 32.0;
+   fexp = 0.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+   
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot -= expr; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 32.0;
+   fexp = 0.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+       float expr = 1.0;
+ 
+ #pragma acc atomic capture
+       { fgot -= expr; fdata[i] = fgot; }
+     }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 32.0;
+   fexp = 0.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot = fgot - expr; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = 1.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot = expr - fgot; }
+       }
+   }
+ 
+   for (i = 0; i < N; i++)
+     if (i % 2 == 0)
+       {
+ 	if (fdata[i] != 1.0)
+ 	  abort ();
+       }
+     else
+       {
+ 	if (fdata[i] != 0.0)
+ 	  abort ();
+       }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = -31.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fgot = fgot - expr; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 1.0;
+   fexp = 1.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fgot = expr - fgot; fdata[i] = fgot; }
+       }
+   }
+ 
+   for (i = 0; i < N; i++)
+     if (i % 2 == 0)
+       {
+ 	if (fdata[i] != 0.0)
+ 	  abort ();
+       }
+     else
+       {
+ 	if (fdata[i] != 1.0)
+ 	  abort ();
+       }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   /* BINOP = / */
+   fgot = 8192.0*8192.0*64.0;
+   fexp = 1.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot /= expr; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 8192.0*8192.0*64.0;
+   fexp = 1.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fgot /= expr; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 8192.0*8192.0*64.0;
+   fexp = 1.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot = fgot / expr; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 8192.0*8192.0*64.0;
+   fexp = 1.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 1.0;
+ 
+ #pragma acc atomic capture
+         { fdata[i] = fgot; fgot = expr / fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 4.0;
+   fexp = 4.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         long long expr = 1LL << N;
+ 
+ #pragma acc atomic capture
+         { fgot = fgot / expr; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   fgot = 4.0;
+   fexp = 4.0;
+ 
+ #pragma acc data copy (fgot, fdata[0:N])
+   {
+ #pragma acc parallel loop
+     for (i = 0; i < N; i++)
+       {
+         float expr = 2.0;
+ 
+ #pragma acc atomic capture
+         { fgot = expr / fgot; fdata[i] = fgot; }
+       }
+   }
+ 
+   if (fexp != fgot)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-2.c gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-2.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-2.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-2.c	Tue Jun 28 08:54:31 2022
***************
*** 5,11 ****
  int
  main (void)
  {
!   int i, j, k, l = 0, f = 0, x = 0;
    int m1 = 4, m2 = -5, m3 = 17;
  
  #pragma acc parallel
--- 5,11 ----
  int
  main (void)
  {
!   int i, j, k, l = 0, f = 0, x = 0, l2 = 0;
    int m1 = 4, m2 = -5, m3 = 17;
  
  #pragma acc parallel
*************** main (void)
*** 20,25 ****
--- 20,38 ----
  	    }
  	}
  
+   /*  Test loop with > condition.  */
+ #pragma acc parallel
+   #pragma acc loop seq collapse(3) reduction(+:l2)
+     for (i = -2; i < m1; i++)
+       for (j = -3; j > (m2 - 1); j--)
+ 	{
+ 	  for (k = 13; k < m3; k++)
+ 	    {
+ 	      if ((i + 2) * 12 + (j + 5) * 4 + (k - 13) !=  9 + f++)
+ 		l2++;
+ 	    }
+ 	}
+ 
      for (i = -2; i < m1; i++)
        for (j = m2; j < -2; j++)
  	{
*************** main (void)
*** 30,36 ****
  	    }
  	}
  
!   if (l != x)
      abort ();
  
    return 0;
--- 43,49 ----
  	    }
  	}
  
!   if (l != x || l2 != x)
      abort ();
  
    return 0;
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-3.c gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-3.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-3.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/collapse-3.c	Tue Jun 28 08:54:31 2022
***************
*** 7,13 ****
  int
  main (void)
  {
!   int i2, l = 0, r = 0;
    int a[3][3][3];
  
    memset (a, '\0', sizeof (a));
--- 7,13 ----
  int
  main (void)
  {
!   int i2, l = 0, r = 0, l2 = 0;
    int a[3][3][3];
  
    memset (a, '\0', sizeof (a));
*************** main (void)
*** 27,39 ****
  		l += 1;
      }
  
      for (i2 = 0; i2 < 2; i2++)
        for (int j = 0; j < 2; j++)
  	for (int k = 0; k < 2; k++)
  	  if (a[i2][j][k] != i2 + j * 4 + k * 16)
  	    r += 1;
  
!   if (l != r)
      abort ();
    return 0;
  }
--- 27,50 ----
  		l += 1;
      }
  
+   /*  Test loop with >= condition.  */
+ #pragma acc parallel
+     {
+       #pragma acc loop collapse(2) reduction(|:l2)
+ 	for (i2 = 0; i2 < 2; i2++)
+ 	  for (int j = 1; j >= 0; j--)
+ 	    for (int k = 0; k < 2; k++)
+ 	      if (a[i2][j][k] != i2 + j * 4 + k * 16)
+ 		l2 += 1;
+     }
+ 
      for (i2 = 0; i2 < 2; i2++)
        for (int j = 0; j < 2; j++)
  	for (int k = 0; k < 2; k++)
  	  if (a[i2][j][k] != i2 + j * 4 + k * 16)
  	    r += 1;
  
!   if (l != r || l2 != r)
      abort ();
    return 0;
  }
diff -Nrcpad gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/static-variable-1.c gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/static-variable-1.c
*** gcc-10.3.0/libgomp/testsuite/libgomp.oacc-c-c++-common/static-variable-1.c	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libgomp/testsuite/libgomp.oacc-c-c++-common/static-variable-1.c	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,460 ----
+ /* "Function scope" (top-level block scope) 'static' variables
+ 
+    ... inside OpenACC compute construct regions as well as OpenACC 'routine'.
+ 
+    This is to document/verify aspects of GCC's observed behavior, not
+    necessarily as it's (intended to be?) restricted by the OpenACC
+    specification.  See also PR84991, PR84992, PR90779 etc., and
+    <https://github.com/OpenACC/openacc-spec/issues/372> "C/C++ 'static'
+    variables" (only visible to members of the GitHub OpenACC organization).
+ */
+ 
+ 
+ #undef NDEBUG
+ #include <assert.h>
+ #include <string.h>
+ #include <openacc.h>
+ #include <gomp-constants.h>
+ 
+ 
+ #define IF_DEBUG if (0)
+ 
+ 
+ /* Without explicit 'num_gangs'.  */
+ 
+ static void t0_c(void)
+ {
+   IF_DEBUG
+     __builtin_printf ("%s\n", __FUNCTION__);
+ 
+   const int i_limit = 11;
+   const int var_init = 16;
+ 
+   for (int i = 0; i < i_limit; ++i)
+     {
+       int result = 0;
+       int num_gangs_actual = -1;
+ #pragma acc parallel \
+   reduction(max:num_gangs_actual) \
+   reduction(max:result)
+       {
+ 	num_gangs_actual = 1 + __builtin_goacc_parlevel_id(GOMP_DIM_GANG);
+ 
+ 	static int var = var_init;
+ 
+ #pragma acc atomic capture
+ 	result = ++var;
+ 
+ 	/* Irrespective of the order in which the gang-redundant threads
+ 	   execute, 'var' has now been incremented 'num_gangs_actual' times, and
+ 	   the final value captured as 'result'.  */
+       }
+       /* Without an explicit 'num_gangs' clause GCC assigns 'num_gangs(1)'
+ 	 because it doesn't see any use of gang-level parallelism inside the
+ 	 region.  */
+       assert(num_gangs_actual == 1);
+       assert(result == var_init + num_gangs_actual * (1 + i));
+     }
+ }
+ 
+ 
+ /* Call a gang-level routine.  */
+ 
+ static const int t0_r_var_init = 61;
+ 
+ #pragma acc routine gang
+ __attribute__((noinline))
+ static int t0_r_r(void)
+ {
+   static int var = t0_r_var_init;
+ 
+   int tmp;
+ #pragma acc atomic capture
+   tmp = ++var;
+ 
+   return tmp;
+ }
+ 
+ static void t0_r(void)
+ {
+   IF_DEBUG
+     __builtin_printf ("%s\n", __FUNCTION__);
+ 
+   const int i_limit = 11;
+ 
+   for (int i = 0; i < i_limit; ++i)
+     {
+       int result = 0;
+       int num_gangs_actual = -1;
+ #pragma acc parallel \
+   reduction(max:num_gangs_actual) \
+   reduction(max:result)
+       {
+ 	num_gangs_actual = 1 + __builtin_goacc_parlevel_id(GOMP_DIM_GANG);
+ 
+ 	result = t0_r_r();
+ 
+ 	/* Irrespective of the order in which the gang-redundant threads
+ 	   execute, 'var' has now been incremented 'num_gangs_actual' times, and
+ 	   the final value captured as 'result'.  */
+       }
+       /* The number of gangs selected by the implemention ought to but must not
+ 	 be bigger than one.  */
+       IF_DEBUG
+ 	__builtin_printf ("%d: num_gangs_actual: %d\n", i, num_gangs_actual);
+       assert(num_gangs_actual >= 1);
+       assert(result == t0_r_var_init + num_gangs_actual * (1 + i));
+     }
+ }
+ 
+ 
+ /* Explicit 'num_gangs'.  */
+ 
+ static void t1_c(void)
+ {
+   IF_DEBUG
+     __builtin_printf ("%s\n", __FUNCTION__);
+ 
+   const int i_limit = 22;
+   const int num_gangs_request = 444;
+   const int var_init = 5;
+ 
+   for (int i = 0; i < i_limit; ++i)
+     {
+       int result = 0;
+       int num_gangs_actual = -1;
+ #pragma acc parallel \
+   num_gangs(num_gangs_request) \
+   reduction(max:num_gangs_actual) \
+   reduction(max:result)
+       {
+ 	num_gangs_actual = 1 + __builtin_goacc_parlevel_id(GOMP_DIM_GANG);
+ 
+ 	static int var = var_init;
+ 
+ #pragma acc atomic capture
+ 	result = ++var;
+ 
+ 	/* Irrespective of the order in which the gang-redundant threads
+ 	   execute, 'var' has now been incremented 'num_gangs_actual' times, and
+ 	   the final value captured as 'result'.  */
+       }
+       if (acc_get_device_type() == acc_device_host)
+ 	assert(num_gangs_actual == 1);
+       else
+ 	assert(num_gangs_actual == num_gangs_request);
+       assert(result == var_init + num_gangs_actual * (1 + i));
+     }
+ }
+ 
+ 
+ /* Check the same routine called from two compute constructs.  */
+ 
+ static const int t1_r2_var_init = 166;
+ 
+ #pragma acc routine gang
+ __attribute__((noinline))
+ static int t1_r2_r(void)
+ {
+   static int var = t1_r2_var_init;
+ 
+   int tmp;
+ #pragma acc atomic capture
+   tmp = ++var;
+ 
+   return tmp;
+ }
+ 
+ static void t1_r2(void)
+ {
+   IF_DEBUG
+     __builtin_printf ("%s\n", __FUNCTION__);
+ 
+   const int i_limit = 71;
+   /* The checking assumes the same 'num_gangs' for all compute constructs.  */
+   const int num_gangs_request = 333;
+   int num_gangs_actual = -1;
+   if (acc_get_device_type() == acc_device_host)
+     num_gangs_actual = 1;
+   else
+     {
+       /* We're assuming that the implementation is able to accomodate the
+ 	 'num_gangs' requested (which really ought to be true for
+ 	 'num_gangs').  */
+       num_gangs_actual = num_gangs_request;
+     }
+ 
+   for (int i = 0; i < i_limit; ++i)
+     {
+       int result_1 = 0;
+ #pragma acc parallel \
+   num_gangs(num_gangs_request) \
+   reduction(max:result_1)
+       {
+ 	result_1 = t1_r2_r();
+ 
+ 	/* Irrespective of the order in which the gang-redundant threads
+ 	   execute, 'var' has now been incremented 'num_gangs_actual' times, and
+ 	   the final value captured as 'result_1'.  */
+       }
+       IF_DEBUG
+ 	__builtin_printf ("%d: result_1: %d\n", i, result_1);
+       assert(result_1 == t1_r2_var_init + num_gangs_actual * (1 + (i * 3 + 0)));
+ 
+       int result_2 = 0;
+ #pragma acc parallel \
+   num_gangs(num_gangs_request) \
+   reduction(max:result_2)
+       {
+ 	result_2 = t1_r2_r() + t1_r2_r();
+ 
+ 	/* Irrespective of the order in which the gang-redundant threads
+ 	   execute, 'var' has now been incremented '2 * num_gangs_actual' times.
+ 	   However, the order of the two 't1_r2_r' function calls is not
+ 	   synchronized (between different gang-redundant threads).  We thus
+ 	   cannot verify the actual 'result_2' values in this case.  */
+       }
+       IF_DEBUG
+ 	__builtin_printf ("%d: result_2: %d\n", i, result_2);
+       if (num_gangs_actual == 1)
+ 	/* Per the rationale above, only in this case we can check the actual
+ 	   result.  */
+ 	assert(result_2 == (t1_r2_var_init + num_gangs_actual * (1 + (i * 3 + 1))
+ 			    + t1_r2_var_init + num_gangs_actual * (1 + (i * 3 + 2))));
+       /* But we can generally check low and high limits.  */
+       {
+ 	/* Must be bigger than '2 * result_1'.  */
+ 	int c = 2 * result_1;
+ 	IF_DEBUG
+ 	  __builtin_printf ("  > %d\n", c);
+ 	assert(result_2 > c);
+       }
+       {
+ 	/* ..., but limited by the base value for next 'i'.  */
+ 	int c = 2 * (t1_r2_var_init + num_gangs_actual * (0 + ((i + 1) * 3 + 0)));
+ 	IF_DEBUG
+ 	  __builtin_printf ("  < %d\n", c);
+ 	assert(result_2 < c);
+       }
+     }
+ }
+ 
+ 
+ /* Asynchronous execution.  */
+ 
+ static const int t2_var_init_2 = -55;
+ 
+ #pragma acc routine gang
+ __attribute__((noinline))
+ static int t2_r(void)
+ {
+   static int var = t2_var_init_2;
+ 
+   int tmp;
+ #pragma acc atomic capture
+   tmp = ++var;
+ 
+   return tmp;
+ }
+ 
+ static void t2(void)
+ {
+   IF_DEBUG
+     __builtin_printf ("%s\n", __FUNCTION__);
+ 
+   const int i_limit = 12;
+   const int num_gangs_request_1 = 14;
+   const int var_init_1 = 5;
+   int results_1[i_limit][num_gangs_request_1];
+   memset (results_1, 0, sizeof results_1);
+   const int num_gangs_request_2 = 5;
+   int results_2[i_limit][num_gangs_request_2];
+   memset (results_2, 0, sizeof results_2);
+   const int num_gangs_request_3 = 34;
+   const int var_init_3 = 1250;
+   int results_3[i_limit][num_gangs_request_3];
+   memset (results_3, 0, sizeof results_3);
+ 
+ #pragma acc data \
+   copy(results_1, results_2, results_3)
+   {
+     for (int i = 0; i < i_limit; ++i)
+       {
+ 	/* The following 'async' clauses effect asynchronous execution, but
+ 	   using the same async-argument for each compute construct implies that
+ 	   the respective compute constructs' execution is synchronized with
+ 	   itself, meaning that all 'i = 0' execution has finished (on the
+ 	   device) before 'i = 1' is started (on the device), etc.  */
+ 
+ #pragma acc parallel \
+   present(results_1) \
+   num_gangs(num_gangs_request_1) \
+   async(1)
+ 	{
+ 	  static int var = var_init_1;
+ 
+ 	  int tmp;
+ #pragma acc atomic capture
+ 	  tmp = ++var;
+ 
+ 	  results_1[i][__builtin_goacc_parlevel_id(GOMP_DIM_GANG)] += tmp;
+ 	}
+ 
+ #pragma acc parallel \
+   present(results_2) \
+   num_gangs(num_gangs_request_2) \
+   async(2)
+ 	{
+ 	  results_2[i][__builtin_goacc_parlevel_id(GOMP_DIM_GANG)] += t2_r();
+ 	}
+ 
+ #pragma acc parallel \
+   present(results_3) \
+   num_gangs(num_gangs_request_3) \
+   async(3)
+ 	{
+ 	  static int var = var_init_3;
+ 
+ 	  int tmp;
+ #pragma acc atomic capture
+ 	  tmp = ++var;
+ 
+ 	  results_3[i][__builtin_goacc_parlevel_id(GOMP_DIM_GANG)] += tmp;
+ 	}
+       }
+ #pragma acc wait
+   }
+   int num_gangs_actual_1;
+   int num_gangs_actual_2;
+   int num_gangs_actual_3;
+   if (acc_get_device_type() == acc_device_host)
+     {
+       num_gangs_actual_1 = 1;
+       num_gangs_actual_2 = 1;
+       num_gangs_actual_3 = 1;
+     }
+   else
+     {
+       /* We're assuming that the implementation is able to accomodate the
+ 	 'num_gangs' requested (which really ought to be true for
+ 	 'num_gangs').  */
+       num_gangs_actual_1 = num_gangs_request_1;
+       num_gangs_actual_2 = num_gangs_request_2;
+       num_gangs_actual_3 = num_gangs_request_3;
+     }
+ 
+   /* For 'i = 0', 'results_*[i][0..num_gangs_actual_*]' are expected to each
+      contain one value of '(1 + var_init_*)..(var_init_* + num_gangs_actual_*)',
+      and so on for increasing 'i'.  Their order however is unspecified due to
+      the gang-redundant execution.  (Thus checking that their sums match.)  */
+ 
+   int result_1 = 0;
+   int result_2 = 0;
+   int result_3 = 0;
+   for (int i = 0; i < i_limit; ++i)
+     {
+       int result_1_ = 0;
+       for (int g = 0; g < num_gangs_actual_1; ++g)
+ 	{
+ 	  IF_DEBUG
+ 	    __builtin_printf ("results_1[%d][%d]: %d\n", i, g, results_1[i][g]);
+ 	  result_1_ += results_1[i][g];
+ 	}
+       IF_DEBUG
+ 	__builtin_printf ("%d result_1_: %d\n", i, result_1_);
+       assert (result_1_ == (((var_init_1 + num_gangs_actual_1 * (1 + i)) * (1 + var_init_1 + num_gangs_actual_1 * (1 + i)) / 2)
+ 			    - ((var_init_1 + num_gangs_actual_1 * (0 + i)) * (1 + var_init_1 + num_gangs_actual_1 * (0 + i)) / 2)));
+       result_1 += result_1_;
+ 
+       int result_2_ = 0;
+       for (int g = 0; g < num_gangs_actual_2; ++g)
+ 	{
+ 	  IF_DEBUG
+ 	    __builtin_printf ("results_2[%d][%d]: %d\n", i, g, results_2[i][g]);
+ 	  result_2_ += results_2[i][g];
+ 	}
+       IF_DEBUG
+ 	__builtin_printf ("%d result_2_: %d\n", i, result_2_);
+       assert (result_2_ == (((t2_var_init_2 + num_gangs_actual_2 * (1 + i)) * (1 + t2_var_init_2 + num_gangs_actual_2 * (1 + i)) / 2)
+ 			    - ((t2_var_init_2 + num_gangs_actual_2 * (0 + i)) * (1 + t2_var_init_2 + num_gangs_actual_2 * (0 + i)) / 2)));
+       result_2 += result_2_;
+ 
+       int result_3_ = 0;
+       for (int g = 0; g < num_gangs_actual_3; ++g)
+ 	{
+ 	  IF_DEBUG
+ 	    __builtin_printf ("results_3[%d][%d]: %d\n", i, g, results_3[i][g]);
+ 	  result_3_ += results_3[i][g];
+ 	}
+       IF_DEBUG
+ 	__builtin_printf ("%d result_3_: %d\n", i, result_3_);
+       assert (result_3_ == (((var_init_3 + num_gangs_actual_3 * (1 + i)) * (1 + var_init_3 + num_gangs_actual_3 * (1 + i)) / 2)
+ 			    - ((var_init_3 + num_gangs_actual_3 * (0 + i)) * (1 + var_init_3 + num_gangs_actual_3 * (0 + i)) / 2)));
+       result_3 += result_3_;
+     }
+   IF_DEBUG
+     __builtin_printf ("result_1: %d\n", result_1);
+   assert (result_1 == (((var_init_1 + num_gangs_actual_1 * i_limit) * (1 + var_init_1 + num_gangs_actual_1 * i_limit) / 2)
+ 		       - (var_init_1 * (var_init_1 + 1) / 2)));
+   IF_DEBUG
+     __builtin_printf ("result_2: %d\n", result_2);
+   assert (result_2 == (((t2_var_init_2 + num_gangs_actual_2 * i_limit) * (1 + t2_var_init_2 + num_gangs_actual_2 * i_limit) / 2)
+ 		       - (t2_var_init_2 * (t2_var_init_2 + 1) / 2)));
+   IF_DEBUG
+     __builtin_printf ("result_3: %d\n", result_3);
+   assert (result_3 == (((var_init_3 + num_gangs_actual_3 * i_limit) * (1 + var_init_3 + num_gangs_actual_3 * i_limit) / 2)
+ 		       - (var_init_3 * (var_init_3 + 1) / 2)));
+ }
+ 
+ 
+ #pragma acc routine seq
+ __attribute__((noinline))
+ static int pr84991_1_r_s(int n)
+ {
+   static const int test[] = {1,2,3,4};
+   return test[n];
+ }
+ 
+ static void pr84991_1(void)
+ {
+   int n[1];
+   n[0] = 3;
+ #pragma acc parallel copy(n)
+   {
+     n[0] = pr84991_1_r_s(n[0]);
+   }
+   assert(n[0] == 4);
+ }
+ 
+ 
+ static void pr84992_1(void)
+ {
+   int n[1];
+   n[0] = 3;
+ #pragma acc parallel copy(n)
+   {
+     static const int test[] = {1,2,3,4};
+     n[0] = test[n[0]];
+   }
+   assert(n[0] == 4);
+ }
+ 
+ 
+ int main(void)
+ {
+   t0_c();
+ 
+   t0_r();
+ 
+   t1_c();
+ 
+   t1_r2();
+ 
+   t2();
+ 
+   pr84991_1();
+ 
+   pr84992_1();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libhsail-rt/ChangeLog gcc-10.4.0/libhsail-rt/ChangeLog
*** gcc-10.3.0/libhsail-rt/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libhsail-rt/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libiberty/ChangeLog gcc-10.4.0/libiberty/ChangeLog
*** gcc-10.3.0/libiberty/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libiberty/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,37 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-09-01  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* configure: Regenerate.
+ 	* configure.ac: Do not search for sbrk on Darwin.
+ 	* xmalloc.c: Do not declare sbrk unless it has been found
+ 	by configure.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* simple-object-mach-o.c (simple_object_mach_o_write_segment):
+ 	Arrange to swap the LTO index tables where needed.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/104617
+ 	* simple-object-elf.c (simple_object_elf_match): Fix up URL
+ 	in comment.
+ 	(simple_object_elf_copy_lto_debug_sections): Remap sh_info and
+ 	sh_link even if they are in the SHN_LORESERVE .. SHN_HIRESERVE
+ 	range (inclusive).
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libiberty/configure gcc-10.4.0/libiberty/configure
*** gcc-10.3.0/libiberty/configure	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libiberty/configure	Tue Jun 28 08:54:31 2022
*************** vars="sys_errlist sys_nerr sys_siglist"
*** 5977,5985 ****
  
  checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
   getsysinfo gettimeofday on_exit pipe2 psignal pstat_getdynamic pstat_getstatic \
!  realpath setrlimit sbrk spawnve spawnvpe strerror strsignal sysconf sysctl \
   sysmp table times wait3 wait4"
  
  # These are neither executed nor required, but they help keep
  # autoheader happy without adding a bunch of text to acconfig.h.
  if test "x" = "y"; then
--- 5977,5992 ----
  
  checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
   getsysinfo gettimeofday on_exit pipe2 psignal pstat_getdynamic pstat_getstatic \
!  realpath setrlimit spawnve spawnvpe strerror strsignal sysconf sysctl \
   sysmp table times wait3 wait4"
  
+ # Darwin has sbrk, but it is deprecated and that produces build-time warnings
+ # so do not check for it.
+ case "${host}" in
+   *-*-darwin*) ;;
+   *) checkfuncs="$checkfuncs sbrk"
+ esac
+ 
  # These are neither executed nor required, but they help keep
  # autoheader happy without adding a bunch of text to acconfig.h.
  if test "x" = "y"; then
*************** fi
*** 7192,7198 ****
  cat >>confdefs.h <<_ACEOF
  #define HAVE_DECL_REALLOC $ac_have_decl
  _ACEOF
! ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default"
  if test "x$ac_cv_have_decl_sbrk" = xyes; then :
    ac_have_decl=1
  else
--- 7199,7208 ----
  cat >>confdefs.h <<_ACEOF
  #define HAVE_DECL_REALLOC $ac_have_decl
  _ACEOF
! 
!   case "${host}" in
!       *-*-darwin*) ;; # Darwin's sbrk implementation is deprecated.
!       *) ac_fn_c_check_decl "$LINENO" "sbrk" "ac_cv_have_decl_sbrk" "$ac_includes_default"
  if test "x$ac_cv_have_decl_sbrk" = xyes; then :
    ac_have_decl=1
  else
*************** fi
*** 7202,7208 ****
  cat >>confdefs.h <<_ACEOF
  #define HAVE_DECL_SBRK $ac_have_decl
  _ACEOF
! 
    ac_fn_c_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default"
  if test "x$ac_cv_have_decl_strtol" = xyes; then :
    ac_have_decl=1
--- 7212,7219 ----
  cat >>confdefs.h <<_ACEOF
  #define HAVE_DECL_SBRK $ac_have_decl
  _ACEOF
! ;;
!   esac
    ac_fn_c_check_decl "$LINENO" "strtol" "ac_cv_have_decl_strtol" "$ac_includes_default"
  if test "x$ac_cv_have_decl_strtol" = xyes; then :
    ac_have_decl=1
diff -Nrcpad gcc-10.3.0/libiberty/configure.ac gcc-10.4.0/libiberty/configure.ac
*** gcc-10.3.0/libiberty/configure.ac	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libiberty/configure.ac	Tue Jun 28 08:54:31 2022
*************** vars="sys_errlist sys_nerr sys_siglist"
*** 394,402 ****
  
  checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
   getsysinfo gettimeofday on_exit pipe2 psignal pstat_getdynamic pstat_getstatic \
!  realpath setrlimit sbrk spawnve spawnvpe strerror strsignal sysconf sysctl \
   sysmp table times wait3 wait4"
  
  # These are neither executed nor required, but they help keep
  # autoheader happy without adding a bunch of text to acconfig.h.
  if test "x" = "y"; then
--- 394,409 ----
  
  checkfuncs="__fsetlocking canonicalize_file_name dup3 getrlimit getrusage \
   getsysinfo gettimeofday on_exit pipe2 psignal pstat_getdynamic pstat_getstatic \
!  realpath setrlimit spawnve spawnvpe strerror strsignal sysconf sysctl \
   sysmp table times wait3 wait4"
  
+ # Darwin has sbrk, but it is deprecated and that produces build-time warnings
+ # so do not check for it.
+ case "${host}" in
+   *-*-darwin*) ;;
+   *) checkfuncs="$checkfuncs sbrk"
+ esac
+ 
  # These are neither executed nor required, but they help keep
  # autoheader happy without adding a bunch of text to acconfig.h.
  if test "x" = "y"; then
*************** if test -z "${setobjs}"; then
*** 688,694 ****
  
    AC_CHECK_FUNCS($checkfuncs)
    AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf])
!   AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc, sbrk])
    AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull])
    AC_CHECK_DECLS([strverscmp])
    AC_CHECK_DECLS([strnlen])
--- 695,705 ----
  
    AC_CHECK_FUNCS($checkfuncs)
    AC_CHECK_DECLS([basename(char *), ffs, asprintf, vasprintf, snprintf, vsnprintf])
!   AC_CHECK_DECLS([calloc, getenv, getopt, malloc, realloc])
!   case "${host}" in
!       *-*-darwin*) ;; # Darwin's sbrk implementation is deprecated.
!       *) AC_CHECK_DECLS([sbrk]);;
!   esac
    AC_CHECK_DECLS([strtol, strtoul, strtoll, strtoull])
    AC_CHECK_DECLS([strverscmp])
    AC_CHECK_DECLS([strnlen])
diff -Nrcpad gcc-10.3.0/libiberty/simple-object-elf.c gcc-10.4.0/libiberty/simple-object-elf.c
*** gcc-10.3.0/libiberty/simple-object-elf.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libiberty/simple-object-elf.c	Tue Jun 28 08:54:31 2022
*************** simple_object_elf_match (unsigned char h
*** 528,534 ****
  	     not handle objects with more than SHN_LORESERVE sections
  	     correctly.  All large section indexes were offset by
  	     0x100.  There is more information at
! 	     http://sourceware.org/bugzilla/show_bug.cgi?id-5900 .
  	     Fortunately these object files are easy to detect, as the
  	     GNU binutils always put the section header string table
  	     near the end of the list of sections.  Thus if the
--- 528,534 ----
  	     not handle objects with more than SHN_LORESERVE sections
  	     correctly.  All large section indexes were offset by
  	     0x100.  There is more information at
! 	     https://sourceware.org/PR5900 .
  	     Fortunately these object files are easy to detect, as the
  	     GNU binutils always put the section header string table
  	     near the end of the list of sections.  Thus if the
*************** simple_object_elf_copy_lto_debug_section
*** 1559,1575 ****
  	  {
  	    sh_info = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
  				       shdr, sh_info, Elf_Word);
! 	    if (sh_info < SHN_LORESERVE
! 		|| sh_info > SHN_HIRESERVE)
! 	      sh_info = sh_map[sh_info];
  	    ELF_SET_FIELD (type_functions, ei_class, Shdr,
  			   shdr, sh_info, Elf_Word, sh_info);
  	  }
  	sh_link = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
  				   shdr, sh_link, Elf_Word);
! 	if (sh_link < SHN_LORESERVE
! 	    || sh_link > SHN_HIRESERVE)
! 	  sh_link = sh_map[sh_link];
  	ELF_SET_FIELD (type_functions, ei_class, Shdr,
  		       shdr, sh_link, Elf_Word, sh_link);
        }
--- 1559,1571 ----
  	  {
  	    sh_info = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
  				       shdr, sh_info, Elf_Word);
! 	    sh_info = sh_map[sh_info];
  	    ELF_SET_FIELD (type_functions, ei_class, Shdr,
  			   shdr, sh_info, Elf_Word, sh_info);
  	  }
  	sh_link = ELF_FETCH_FIELD (type_functions, ei_class, Shdr,
  				   shdr, sh_link, Elf_Word);
! 	sh_link = sh_map[sh_link];
  	ELF_SET_FIELD (type_functions, ei_class, Shdr,
  		       shdr, sh_link, Elf_Word, sh_link);
        }
diff -Nrcpad gcc-10.3.0/libiberty/simple-object-mach-o.c gcc-10.4.0/libiberty/simple-object-mach-o.c
*** gcc-10.3.0/libiberty/simple-object-mach-o.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libiberty/simple-object-mach-o.c	Tue Jun 28 08:54:31 2022
*************** simple_object_mach_o_write_segment (simp
*** 1225,1230 ****
--- 1225,1235 ----
  	index[4 * i] -= index[0];
        index[0] = 0;
  
+       /* Swap the indices, if required.  */
+ 
+       for (i = 0; i < (nsects_in * 4); ++i)
+ 	set_32 ((unsigned char *) &index[i], index[i]);
+ 
        sechdr_offset += sechdrsize;
  
        /* Write out the section names.
diff -Nrcpad gcc-10.3.0/libiberty/xmalloc.c gcc-10.4.0/libiberty/xmalloc.c
*** gcc-10.3.0/libiberty/xmalloc.c	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libiberty/xmalloc.c	Tue Jun 28 08:54:31 2022
*************** extern "C" {
*** 87,93 ****
--- 87,95 ----
  void *malloc (size_t);
  void *realloc (void *, size_t);
  void *calloc (size_t, size_t);
+ #ifdef HAVE_SBRK
  void *sbrk (ptrdiff_t);
+ #endif
  #    ifdef __cplusplus
  }
  #    endif /* __cplusplus */
diff -Nrcpad gcc-10.3.0/libitm/ChangeLog gcc-10.4.0/libitm/ChangeLog
*** gcc-10.3.0/libitm/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libitm/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,22 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-02-13  Alan Modra  <amodra@gmail.com>
+ 
+ 	Backported from master:
+ 	2020-10-01  Alan Modra  <amodra@gmail.com>
+ 
+ 	* config/powerpc/sjlj.S: Support __PCREL__ code.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/91488
+ 	* testsuite/libitm.c++/libstdc++-pr91488.C: New test.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libitm/config/powerpc/sjlj.S gcc-10.4.0/libitm/config/powerpc/sjlj.S
*** gcc-10.3.0/libitm/config/powerpc/sjlj.S	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libitm/config/powerpc/sjlj.S	Tue Jun 28 08:54:31 2022
***************
*** 26,32 ****
  
  #include "asmcfi.h"
  
! #if defined(__powerpc64__) && _CALL_ELF == 2
  .macro FUNC name
          .globl  \name
          .type   \name, @function
--- 26,48 ----
  
  #include "asmcfi.h"
  
! #if defined(__powerpc64__) && _CALL_ELF == 2 && defined(__PCREL__)
! .macro FUNC name
! 	.globl	\name
! 	.type	\name, @function
! \name:
! 	.localentry \name, 1
! .endm
! .macro END name
! 	.size	\name, . - \name
! .endm
! .macro HIDDEN name
! 	.hidden	\name
! .endm
! .macro CALL name
! 	bl	\name @notoc
! .endm
! #elif defined(__powerpc64__) && _CALL_ELF == 2
  .macro FUNC name
          .globl  \name
          .type   \name, @function
diff -Nrcpad gcc-10.3.0/libitm/libitm.info gcc-10.4.0/libitm/libitm.info
*** gcc-10.3.0/libitm/libitm.info	Thu Apr  8 12:10:05 2021
--- gcc-10.4.0/libitm/libitm.info	Tue Jun 28 09:13:53 2022
***************
*** 1,4 ****
! This is libitm.info, produced by makeinfo version 6.5 from libitm.texi.
  
  Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
--- 1,4 ----
! This is libitm.info, produced by makeinfo version 6.8 from libitm.texi.
  
  Copyright (C) 2011-2020 Free Software Foundation, Inc.
  
*************** Node: GNU Free Documentation License358
*** 1306,1308 ****
--- 1306,1313 ----
  Node: Library Index61021
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/libitm/testsuite/libitm.c++/libstdc++-pr91488.C gcc-10.4.0/libitm/testsuite/libitm.c++/libstdc++-pr91488.C
*** gcc-10.3.0/libitm/testsuite/libitm.c++/libstdc++-pr91488.C	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libitm/testsuite/libitm.c++/libstdc++-pr91488.C	Tue Jun 28 08:54:31 2022
***************
*** 0 ****
--- 1,9 ----
+ // PR libstdc++/91488 "inlining failed in call to always_inline"
+ // { dg-do run }
+ // { dg-additional-options "-O1" }
+ 
+ #include <string>
+ 
+ int main() {
+     return std::char_traits<char>::length("");
+ }
diff -Nrcpad gcc-10.3.0/libobjc/ChangeLog gcc-10.4.0/libobjc/ChangeLog
*** gcc-10.3.0/libobjc/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libobjc/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/liboffloadmic/ChangeLog gcc-10.4.0/liboffloadmic/ChangeLog
*** gcc-10.3.0/liboffloadmic/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/liboffloadmic/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libphobos/ChangeLog gcc-10.4.0/libphobos/ChangeLog
*** gcc-10.3.0/libphobos/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libphobos/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,66 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-04-26  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-09-30  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* libdruntime/gcc/unwind/generic.d (__aligned__): Define.
+ 	(_Unwind_Exception): Align struct to __aligned__.
+ 
+ 2022-04-26  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2022-04-26  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* libdruntime/gcc/emutls.d (emutlsDestroyThread): Clear the per-thread
+ 	TLS array, don't call free().
+ 
+ 2021-12-21  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-12-21  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/103604
+ 	* libdruntime/core/sys/posix/sys/stat.d (struct stat_t): Fix
+ 	definition for MIPS64.
+ 
+ 2021-12-02  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-12-02  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* libdruntime/core/thread.d (callWithStackShell): Push all callee-save
+ 	registers on the stack using inline assembly.
+ 
+ 2021-11-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-11-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* libdruntime/core/thread.d (defaultStackPages): New constant.
+ 	(Fiber.this): Set stack size to be a multiple of defaultStackPages.
+ 
+ 2021-11-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-11-19  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* libdruntime/gcc/emutls.d (emutlsDestroyThread): Don't remove entry
+ 	from global array.
+ 	(_d_emutls_destroy): Don't call __gthread_key_delete.
+ 
+ 2021-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	Backported from master:
+ 	2021-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/100999
+ 	* src/std/typecons.d (template Proxy): Check for field or property
+ 	functions as the else branch.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libphobos/libdruntime/core/sys/posix/sys/stat.d gcc-10.4.0/libphobos/libdruntime/core/sys/posix/sys/stat.d
*** gcc-10.3.0/libphobos/libdruntime/core/sys/posix/sys/stat.d	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libphobos/libdruntime/core/sys/posix/sys/stat.d	Tue Jun 28 08:54:31 2022
*************** version (CRuntime_Glibc)
*** 337,362 ****
              }
              c_long[14]  st_pad5;
          }
      }
      else version (MIPS64)
      {
          struct stat_t
          {
!             c_ulong     st_dev;
              int[3]      st_pad1;
!             static if (!__USE_FILE_OFFSET64)
!             {
!                 ino_t       st_ino;
!             }
!             else
!             {
!                 c_ulong     st_ino;
!             }
              mode_t      st_mode;
              nlink_t     st_nlink;
              uid_t       st_uid;
              gid_t       st_gid;
!             c_ulong     st_rdev;
              static if (!__USE_FILE_OFFSET64)
              {
                  uint[2]     st_pad2;
--- 337,359 ----
              }
              c_long[14]  st_pad5;
          }
+         static if (!__USE_FILE_OFFSET64)
+             static assert(stat_t.sizeof == 144);
+         else
+             static assert(stat_t.sizeof == 160);
      }
      else version (MIPS64)
      {
          struct stat_t
          {
!             dev_t       st_dev;
              int[3]      st_pad1;
!             ino_t       st_ino;
              mode_t      st_mode;
              nlink_t     st_nlink;
              uid_t       st_uid;
              gid_t       st_gid;
!             dev_t       st_rdev;
              static if (!__USE_FILE_OFFSET64)
              {
                  uint[2]     st_pad2;
*************** version (CRuntime_Glibc)
*** 365,372 ****
              }
              else
              {
!                 c_long[3]   st_pad2;
!                 c_long      st_size;
              }
              static if (__USE_MISC || __USE_XOPEN2K8)
              {
--- 362,369 ----
              }
              else
              {
!                 uint[3]     st_pad2;
!                 off_t       st_size;
              }
              static if (__USE_MISC || __USE_XOPEN2K8)
              {
*************** version (CRuntime_Glibc)
*** 391,405 ****
              }
              blksize_t   st_blksize;
              uint        st_pad4;
              static if (!__USE_FILE_OFFSET64)
!             {
!                 blkcnt_t    st_blocks;
!             }
              else
!             {
!                 c_long  st_blocks;
!             }
!             c_long[14]  st_pad5;
          }
      }
      else version (PPC)
--- 388,413 ----
              }
              blksize_t   st_blksize;
              uint        st_pad4;
+             blkcnt_t    st_blocks;
+             int[14]     st_pad5;
+         }
+         version (MIPS_N32)
+         {
              static if (!__USE_FILE_OFFSET64)
!                 static assert(stat_t.sizeof == 160);
              else
!                 static assert(stat_t.sizeof == 176);
!         }
!         else version (MIPS_O64)
!         {
!             static if (!__USE_FILE_OFFSET64)
!                 static assert(stat_t.sizeof == 160);
!             else
!                 static assert(stat_t.sizeof == 176);
!         }
!         else
!         {
!             static assert(stat_t.sizeof == 216);
          }
      }
      else version (PPC)
diff -Nrcpad gcc-10.3.0/libphobos/libdruntime/core/thread.d gcc-10.4.0/libphobos/libdruntime/core/thread.d
*** gcc-10.3.0/libphobos/libdruntime/core/thread.d	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libphobos/libdruntime/core/thread.d	Tue Jun 28 08:54:31 2022
*************** body
*** 2422,2429 ****
  
      version (GNU)
      {
!         __builtin_unwind_init();
!         sp = &sp;
      }
      else version (AsmX86_Posix)
      {
--- 2422,2528 ----
  
      version (GNU)
      {
!         // The generic solution below using a call to __builtin_unwind_init ()
!         // followed by an assignment to sp has two issues:
!         // 1) On some archs it stores a huge amount of FP and Vector state which
!         //    is not the subject of the scan - and, indeed might produce false
!         //    hits.
!         // 2) Even on archs like X86, where there are no callee-saved FPRs/VRs there
!         //    tend to be 'holes' in the frame allocations (to deal with alignment) which
!         //    also will  contain random data which could produce false positives.
!         // This solution stores only the integer callee-saved registers.
!         version (X86)
!         {
!             void*[3] regs = void;
!             asm pure nothrow @nogc
!             {
!                 "movl   %%ebx, %0" : "=m" (regs[0]);
!                 "movl   %%esi, %0" : "=m" (regs[1]);
!                 "movl   %%edi, %0" : "=m" (regs[2]);
!             }
!             sp = cast(void*)&regs[0];
!         }
!         else version (X86_64)
!         {
!             void*[5] regs = void;
!             asm pure nothrow @nogc
!             {
!                 "movq   %%rbx, %0" : "=m" (regs[0]);
!                 "movq   %%r12, %0" : "=m" (regs[1]);
!                 "movq   %%r13, %0" : "=m" (regs[2]);
!                 "movq   %%r14, %0" : "=m" (regs[3]);
!                 "movq   %%r15, %0" : "=m" (regs[4]);
!             }
!             sp = cast(void*)&regs[0];
!         }
!         else version (PPC)
!         {
!             void*[19] regs = void;
!             version (Darwin)
!                 enum regname = "r";
!             else
!                 enum regname = "";
!             static foreach (i; 0 .. regs.length)
!             {{
!                 enum int j = 13 + i; // source register
!                 asm pure nothrow @nogc
!                 {
!                     "stw "~regname~j.stringof~", %0" : "=m" (regs[i]);
!                 }
!             }}
!             sp = cast(void*)&regs[0];
!         }
!         else version (PPC64)
!         {
!             void*[19] regs = void;
!             version (Darwin)
!                 enum regname = "r";
!             else
!                 enum regname = "";
!             static foreach (i; 0 .. regs.length)
!             {{
!                 enum int j = 13 + i; // source register
!                 asm pure nothrow @nogc
!                 {
!                     "std "~regname~j.stringof~", %0" : "=m" (regs[i]);
!                 }
!             }}
!             sp = cast(void*)&regs[0];
!         }
!         else version (AArch64)
!         {
!             // Callee-save registers, x19-x28 according to AAPCS64, section
!             // 5.1.1.  Include x29 fp because it optionally can be a callee
!             // saved reg
!             size_t[11] regs = void;
!             // store the registers in pairs
!             asm pure nothrow @nogc
!             {
!                 "stp x19, x20, %0" : "=m" (regs[ 0]), "=m" (regs[1]);
!                 "stp x21, x22, %0" : "=m" (regs[ 2]), "=m" (regs[3]);
!                 "stp x23, x24, %0" : "=m" (regs[ 4]), "=m" (regs[5]);
!                 "stp x25, x26, %0" : "=m" (regs[ 6]), "=m" (regs[7]);
!                 "stp x27, x28, %0" : "=m" (regs[ 8]), "=m" (regs[9]);
!                 "str x29, %0"      : "=m" (regs[10]);
!                 "mov %0, sp"       : "=r" (sp);
!             }
!         }
!         else version (ARM)
!         {
!             // Callee-save registers, according to AAPCS, section 5.1.1.
!             // arm and thumb2 instructions
!             size_t[8] regs = void;
!             asm pure nothrow @nogc
!             {
!                 "stm %0, {r4-r11}" : : "r" (regs.ptr) : "memory";
!                 "mov %0, sp"       : "=r" (sp);
!             }
!         }
!         else
!         {
!             __builtin_unwind_init();
!             sp = &sp;
!         }
      }
      else version (AsmX86_Posix)
      {
*************** class Fiber
*** 4146,4151 ****
--- 4245,4268 ----
      // Initialization
      ///////////////////////////////////////////////////////////////////////////
  
+     version (Windows)
+         // exception handling walks the stack, invoking DbgHelp.dll which
+         // needs up to 16k of stack space depending on the version of DbgHelp.dll,
+         // the existence of debug symbols and other conditions. Avoid causing
+         // stack overflows by defaulting to a larger stack size
+         enum defaultStackPages = 8;
+     else version (OSX)
+     {
+         version (X86_64)
+             // libunwind on macOS 11 now requires more stack space than 16k, so
+             // default to a larger stack size. This is only applied to X86 as
+             // the PAGESIZE is still 4k, however on AArch64 it is 16k.
+             enum defaultStackPages = 8;
+         else
+             enum defaultStackPages = 4;
+     }
+     else
+         enum defaultStackPages = 4;
  
      /**
       * Initializes a fiber object which is associated with a static
*************** class Fiber
*** 4160,4166 ****
       * In:
       *  fn must not be null.
       */
!     this( void function() fn, size_t sz = PAGESIZE*4,
            size_t guardPageSize = PAGESIZE ) nothrow
      in
      {
--- 4277,4283 ----
       * In:
       *  fn must not be null.
       */
!     this( void function() fn, size_t sz = PAGESIZE * defaultStackPages,
            size_t guardPageSize = PAGESIZE ) nothrow
      in
      {
*************** class Fiber
*** 4186,4192 ****
       * In:
       *  dg must not be null.
       */
!     this( void delegate() dg, size_t sz = PAGESIZE*4,
            size_t guardPageSize = PAGESIZE ) nothrow
      in
      {
--- 4303,4309 ----
       * In:
       *  dg must not be null.
       */
!     this( void delegate() dg, size_t sz = PAGESIZE * defaultStackPages,
            size_t guardPageSize = PAGESIZE ) nothrow
      in
      {
diff -Nrcpad gcc-10.3.0/libphobos/libdruntime/gcc/emutls.d gcc-10.4.0/libphobos/libdruntime/gcc/emutls.d
*** gcc-10.3.0/libphobos/libdruntime/gcc/emutls.d	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libphobos/libdruntime/gcc/emutls.d	Tue Jun 28 08:54:31 2022
*************** void** emutlsAlloc(shared __emutls_objec
*** 222,237 ****
  }
  
  /*
!  * When a thread has finished, remove the TLS array from the GC
!  * scan list emutlsArrays, free all allocated TLS variables and
!  * finally free the array.
   */
  extern (C) void emutlsDestroyThread(void* ptr) nothrow @nogc
  {
      auto arr = cast(TlsArray*) ptr;
-     emutlsMutex.lock_nothrow();
-     emutlsArrays.remove(arr);
-     emutlsMutex.unlock_nothrow();
  
      foreach (entry; *arr)
      {
--- 222,234 ----
  }
  
  /*
!  * When a thread has finished, free all allocated TLS variables and empty the
!  * array.  The pointer is not free'd as it is stil referenced by the GC scan
!  * list emutlsArrays, which gets destroyed when druntime is unloaded.
   */
  extern (C) void emutlsDestroyThread(void* ptr) nothrow @nogc
  {
      auto arr = cast(TlsArray*) ptr;
  
      foreach (entry; *arr)
      {
*************** extern (C) void emutlsDestroyThread(void
*** 239,245 ****
              free(entry[-1]);
      }
  
!     free(arr);
  }
  
  /*
--- 236,242 ----
              free(entry[-1]);
      }
  
!     arr.length = 0;
  }
  
  /*
*************** void _d_emutls_scan(scope void delegate(
*** 308,316 ****
  // Call this after druntime has been unloaded
  void _d_emutls_destroy() nothrow @nogc
  {
-     if (__gthread_key_delete(emutlsKey) != 0)
-         abort();
- 
      (cast(Mutex) _emutlsMutex.ptr).__dtor();
      destroy(emutlsArrays);
  }
--- 305,310 ----
diff -Nrcpad gcc-10.3.0/libphobos/libdruntime/gcc/unwind/generic.d gcc-10.4.0/libphobos/libdruntime/gcc/unwind/generic.d
*** gcc-10.3.0/libphobos/libdruntime/gcc/unwind/generic.d	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libphobos/libdruntime/gcc/unwind/generic.d	Tue Jun 28 08:54:31 2022
*************** enum : _Unwind_Reason_Code
*** 123,129 ****
  // @@@ The IA-64 ABI says that this structure must be double-word aligned.
  // Taking that literally does not make much sense generically.  Instead we
  // provide the maximum alignment required by any type for the machine.
! struct _Unwind_Exception
  {
      _Unwind_Exception_Class exception_class;
      _Unwind_Exception_Cleanup_Fn exception_cleanup;
--- 123,149 ----
  // @@@ The IA-64 ABI says that this structure must be double-word aligned.
  // Taking that literally does not make much sense generically.  Instead we
  // provide the maximum alignment required by any type for the machine.
!      version (ARM)      private enum __aligned__ = 8;
! else version (AArch64)  private enum __aligned__ = 16;
! else version (HPPA)     private enum __aligned__ = 8;
! else version (HPPA64)   private enum __aligned__ = 16;
! else version (MIPS_N32) private enum __aligned__ = 16;
! else version (MIPS_N64) private enum __aligned__ = 16;
! else version (MIPS32)   private enum __aligned__ = 8;
! else version (MIPS64)   private enum __aligned__ = 8;
! else version (PPC)      private enum __aligned__ = 16;
! else version (PPC64)    private enum __aligned__ = 16;
! else version (RISCV32)  private enum __aligned__ = 16;
! else version (RISCV64)  private enum __aligned__ = 16;
! else version (S390)     private enum __aligned__ = 8;
! else version (SPARC)    private enum __aligned__ = 8;
! else version (SPARC64)  private enum __aligned__ = 16;
! else version (SystemZ)  private enum __aligned__ = 8;
! else version (X86)      private enum __aligned__ = 16;
! else version (X86_64)   private enum __aligned__ = 16;
! else static assert( false, "Platform not supported.");
! 
! align(__aligned__) struct _Unwind_Exception
  {
      _Unwind_Exception_Class exception_class;
      _Unwind_Exception_Cleanup_Fn exception_cleanup;
diff -Nrcpad gcc-10.3.0/libphobos/src/std/typecons.d gcc-10.4.0/libphobos/src/std/typecons.d
*** gcc-10.3.0/libphobos/src/std/typecons.d	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libphobos/src/std/typecons.d	Tue Jun 28 08:54:31 2022
*************** mixin template Proxy(alias a)
*** 5933,5945 ****
              // built-in type field, manifest constant, and static non-mutable field
              enum opDispatch = mixin("a."~name);
          }
!         else static if (is(typeof(mixin("a."~name))) || __traits(getOverloads, a, name).length != 0)
!         {
!             // field or property function
!             @property auto ref opDispatch(this X)()                { return mixin("a."~name);        }
!             @property auto ref opDispatch(this X, V)(auto ref V v) { return mixin("a."~name~" = v"); }
!         }
!         else
          {
              // member template
              template opDispatch(T...)
--- 5933,5939 ----
              // built-in type field, manifest constant, and static non-mutable field
              enum opDispatch = mixin("a."~name);
          }
!         else static if (__traits(isTemplate, mixin("a."~name)))
          {
              // member template
              template opDispatch(T...)
*************** mixin template Proxy(alias a)
*** 5948,5953 ****
--- 5942,5954 ----
                  auto ref opDispatch(this X, Args...)(auto ref Args args){ return mixin("a."~name~targs~"(args)"); }
              }
          }
+         else
+         {
+             // field or property function
+             @property auto ref opDispatch(this X)()                { return mixin("a."~name);        }
+             @property auto ref opDispatch(this X, V)(auto ref V v) { return mixin("a."~name~" = v"); }
+         }
+ 
      }
  
      import std.traits : isArray;
diff -Nrcpad gcc-10.3.0/libquadmath/ChangeLog gcc-10.4.0/libquadmath/ChangeLog
*** gcc-10.3.0/libquadmath/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libquadmath/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libquadmath/libquadmath.info gcc-10.4.0/libquadmath/libquadmath.info
*** gcc-10.3.0/libquadmath/libquadmath.info	Thu Apr  8 12:10:04 2021
--- gcc-10.4.0/libquadmath/libquadmath.info	Tue Jun 28 09:13:52 2022
***************
*** 1,4 ****
! This is libquadmath.info, produced by makeinfo version 6.5 from
  libquadmath.texi.
  
  Copyright (C) 2010-2020 Free Software Foundation, Inc.
--- 1,4 ----
! This is libquadmath.info, produced by makeinfo version 6.8 from
  libquadmath.texi.
  
  Copyright (C) 2010-2020 Free Software Foundation, Inc.
*************** Node: GNU Free Documentation License109
*** 809,811 ****
--- 809,816 ----
  Node: Reporting Bugs36065
  
  End Tag Table
+ 
+ 
+ Local Variables:
+ coding: utf-8
+ End:
diff -Nrcpad gcc-10.3.0/libsanitizer/ChangeLog gcc-10.4.0/libsanitizer/ChangeLog
*** gcc-10.3.0/libsanitizer/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libsanitizer/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,52 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* sanitizer_common/sanitizer_linux_libcdep.cpp: Cherry-pick
+ 	llvm-project revision ef14b78d9a144ba81ba02083fe21eb286a88732b.
+ 
+ 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	Backported from master:
+ 	2022-01-12  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR sanitizer/102911
+ 	* asan/asan_malloc_linux.cpp (kDlsymAllocPoolSize): Set it to
+ 	8192 on Linux.
+ 
+ 2021-08-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/101749
+ 	* sanitizer_common/sanitizer_posix_libcdep.cpp: Prevent
+ 	generation of dependency on _cxa_guard for static
+ 	initialization.
+ 
+ 2021-05-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2021-05-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR sanitizer/100379
+ 	* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
+ 	llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
+ 	* sanitizer_common/sanitizer_platform_limits_posix.cpp: Likewise.
+ 	* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
+ 
+ 2021-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/100114
+ 	* sanitizer_common/sanitizer_posix_libcdep.cpp: Cherry-pick
+ 	llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe
+ 	and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libsanitizer/asan/asan_malloc_linux.cpp gcc-10.4.0/libsanitizer/asan/asan_malloc_linux.cpp
*** gcc-10.3.0/libsanitizer/asan/asan_malloc_linux.cpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libsanitizer/asan/asan_malloc_linux.cpp	Tue Jun 28 08:54:31 2022
*************** using namespace __asan;
*** 31,37 ****
  
  static uptr allocated_for_dlsym;
  static uptr last_dlsym_alloc_size_in_words;
! static const uptr kDlsymAllocPoolSize = SANITIZER_RTEMS ? 4096 : 1024;
  static uptr alloc_memory_for_dlsym[kDlsymAllocPoolSize];
  
  static INLINE bool IsInDlsymAllocPool(const void *ptr) {
--- 31,37 ----
  
  static uptr allocated_for_dlsym;
  static uptr last_dlsym_alloc_size_in_words;
! static const uptr kDlsymAllocPoolSize = SANITIZER_RTEMS ? 4096 : 8192;
  static uptr alloc_memory_for_dlsym[kDlsymAllocPoolSize];
  
  static INLINE bool IsInDlsymAllocPool(const void *ptr) {
diff -Nrcpad gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
*** gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc	Tue Jun 28 08:54:31 2022
*************** static void ioctl_table_fill() {
*** 366,380 ****
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
    // _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
-   _(CYGETDEFTHRESH, WRITE, sizeof(int));
-   _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
-   _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
-   _(CYGETTHRESH, WRITE, sizeof(int));
-   _(CYGETTIMEOUT, WRITE, sizeof(int));
-   _(CYSETDEFTHRESH, NONE, 0);
-   _(CYSETDEFTIMEOUT, NONE, 0);
-   _(CYSETTHRESH, NONE, 0);
-   _(CYSETTIMEOUT, NONE, 0);
    _(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
    _(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
    _(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
--- 366,371 ----
diff -Nrcpad gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
*** gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp	Tue Jun 28 08:54:31 2022
*************** void InitTlsSize() { }
*** 267,276 ****
  // sizeof(struct pthread) from glibc.
  static atomic_uintptr_t thread_descriptor_size;
  
! uptr ThreadDescriptorSize() {
!   uptr val = atomic_load_relaxed(&thread_descriptor_size);
!   if (val)
!     return val;
  #if defined(__x86_64__) || defined(__i386__) || defined(__arm__)
    int major;
    int minor;
--- 267,274 ----
  // sizeof(struct pthread) from glibc.
  static atomic_uintptr_t thread_descriptor_size;
  
! static uptr ThreadDescriptorSizeFallback() {
!   uptr val = 0;
  #if defined(__x86_64__) || defined(__i386__) || defined(__arm__)
    int major;
    int minor;
*************** uptr ThreadDescriptorSize() {
*** 310,317 ****
  #elif defined(__s390__)
    val = FIRST_32_SECOND_64(1152, 1776); // valid for glibc 2.22
  #endif
    if (val)
!     atomic_store_relaxed(&thread_descriptor_size, val);
    return val;
  }
  
--- 308,328 ----
  #elif defined(__s390__)
    val = FIRST_32_SECOND_64(1152, 1776); // valid for glibc 2.22
  #endif
+   return val;
+ }
+ 
+ uptr ThreadDescriptorSize() {
+   uptr val = atomic_load_relaxed(&thread_descriptor_size);
    if (val)
!     return val;
!   // _thread_db_sizeof_pthread is a GLIBC_PRIVATE symbol that is exported in
!   // glibc 2.34 and later.
!   if (unsigned *psizeof = static_cast<unsigned *>(
!           dlsym(RTLD_DEFAULT, "_thread_db_sizeof_pthread")))
!     val = *psizeof;
!   if (!val)
!     val = ThreadDescriptorSizeFallback();
!   atomic_store_relaxed(&thread_descriptor_size, val);
    return val;
  }
  
diff -Nrcpad gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
*** gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp	Tue Jun 28 08:54:31 2022
*************** typedef struct user_fpregs elf_fpregset_
*** 130,136 ****
  # include <sys/procfs.h>
  #endif
  #include <sys/user.h>
- #include <linux/cyclades.h>
  #include <linux/if_eql.h>
  #include <linux/if_plip.h>
  #include <linux/lp.h>
--- 130,135 ----
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 443,449 ****
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
    unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
-   unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
  #if EV_VERSION > (0x010000)
    unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
  #else
--- 442,447 ----
*************** unsigned struct_ElfW_Phdr_sz = sizeof(El
*** 809,823 ****
  #endif // SANITIZER_LINUX
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
-   unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
-   unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
-   unsigned IOCTL_CYGETMON = CYGETMON;
-   unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
-   unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
-   unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
-   unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
-   unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
-   unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
    unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
    unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
    unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
--- 807,812 ----
diff -Nrcpad gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
*** gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	Tue Jun 28 08:54:31 2022
*************** extern unsigned struct_vt_mode_sz;
*** 974,980 ****
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
  extern unsigned struct_ax25_parms_struct_sz;
- extern unsigned struct_cyclades_monitor_sz;
  extern unsigned struct_input_keymap_entry_sz;
  extern unsigned struct_ipx_config_data_sz;
  extern unsigned struct_kbdiacrs_sz;
--- 974,979 ----
*************** extern unsigned IOCTL_VT_WAITACTIVE;
*** 1319,1333 ****
  #endif  // SANITIZER_LINUX
  
  #if SANITIZER_LINUX && !SANITIZER_ANDROID
- extern unsigned IOCTL_CYGETDEFTHRESH;
- extern unsigned IOCTL_CYGETDEFTIMEOUT;
- extern unsigned IOCTL_CYGETMON;
- extern unsigned IOCTL_CYGETTHRESH;
- extern unsigned IOCTL_CYGETTIMEOUT;
- extern unsigned IOCTL_CYSETDEFTHRESH;
- extern unsigned IOCTL_CYSETDEFTIMEOUT;
- extern unsigned IOCTL_CYSETTHRESH;
- extern unsigned IOCTL_CYSETTIMEOUT;
  extern unsigned IOCTL_EQL_EMANCIPATE;
  extern unsigned IOCTL_EQL_ENSLAVE;
  extern unsigned IOCTL_EQL_GETMASTRCFG;
--- 1318,1323 ----
diff -Nrcpad gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
*** gcc-10.3.0/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp	Tue Jun 28 08:54:31 2022
*************** bool SupportsColoredOutput(fd_t fd) {
*** 169,175 ****
  
  #if !SANITIZER_GO
  // TODO(glider): different tools may require different altstack size.
! static const uptr kAltStackSize = SIGSTKSZ * 4;  // SIGSTKSZ is not enough.
  
  void SetAlternateSignalStack() {
    stack_t altstack, oldstack;
--- 169,180 ----
  
  #if !SANITIZER_GO
  // TODO(glider): different tools may require different altstack size.
! static uptr GetAltStackSize() {
!   // Note: since GLIBC_2.31, SIGSTKSZ may be a function call, so this may be
!   // more costly that you think. However GetAltStackSize is only call 2-3 times
!   // per thread so don't cache the evaluation.
!   return SIGSTKSZ * 4;
! }
  
  void SetAlternateSignalStack() {
    stack_t altstack, oldstack;
*************** void SetAlternateSignalStack() {
*** 180,189 ****
    // TODO(glider): the mapped stack should have the MAP_STACK flag in the
    // future. It is not required by man 2 sigaltstack now (they're using
    // malloc()).
!   void* base = MmapOrDie(kAltStackSize, __func__);
!   altstack.ss_sp = (char*) base;
    altstack.ss_flags = 0;
-   altstack.ss_size = kAltStackSize;
    CHECK_EQ(0, sigaltstack(&altstack, nullptr));
  }
  
--- 185,193 ----
    // TODO(glider): the mapped stack should have the MAP_STACK flag in the
    // future. It is not required by man 2 sigaltstack now (they're using
    // malloc()).
!   altstack.ss_size = GetAltStackSize();
!   altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__);
    altstack.ss_flags = 0;
    CHECK_EQ(0, sigaltstack(&altstack, nullptr));
  }
  
*************** void UnsetAlternateSignalStack() {
*** 191,197 ****
    stack_t altstack, oldstack;
    altstack.ss_sp = nullptr;
    altstack.ss_flags = SS_DISABLE;
!   altstack.ss_size = kAltStackSize;  // Some sane value required on Darwin.
    CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
    UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
  }
--- 195,201 ----
    stack_t altstack, oldstack;
    altstack.ss_sp = nullptr;
    altstack.ss_flags = SS_DISABLE;
!   altstack.ss_size = GetAltStackSize();  // Some sane value required on Darwin.
    CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
    UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
  }
diff -Nrcpad gcc-10.3.0/libssp/ChangeLog gcc-10.4.0/libssp/ChangeLog
*** gcc-10.3.0/libssp/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libssp/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/ChangeLog gcc-10.4.0/libstdc++-v3/ChangeLog
*** gcc-10.3.0/libstdc++-v3/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libstdc++-v3/ChangeLog	Tue Jun 28 08:54:31 2022
***************
*** 1,3 ****
--- 1,2110 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2022-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-06-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/atomic (__atomic_val_t): Use __type_identity_t
+ 	instead of atomic<T>::value_type, as per LWG 3220.
+ 	* testsuite/29_atomics/atomic/lwg3220.cc: New test.
+ 
+ 2022-06-15  Mark Mentovai  <mark@mentovai.com>
+ 
+ 	Backported from master:
+ 	2022-06-13  Mark Mentovai  <mark@mentovai.com>
+ 
+ 	* include/experimental/bits/fs_path.h (__detail::__null_terminated):
+ 	Rename to __nul_terminated to avoid colliding with a macro in
+ 	Apple's SDK.
+ 
+ 2022-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/104731
+ 	* testsuite/27_io/filesystem/iterators/error_reporting.cc:
+ 	Use a trailing char array as storage for dirent::d_name.
+ 
+ 2022-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/27_io/filesystem/iterators/error_reporting.cc: Use
+ 	autoconf macro to check whether d_type is present.
+ 	* testsuite/experimental/filesystem/iterators/error_reporting.cc:
+ 	Likewise.
+ 
+ 2022-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* src/c++17/fs_dir.cc (recursive_directory_iterator::increment):
+ 	Reset state to past-the-end iterator on error.
+ 	(fs::recursive_directory_iterator::pop(error_code&)): Likewise.
+ 	(fs::recursive_directory_iterator::pop()): Check _M_dirs before
+ 	it might get reset.
+ 	* src/filesystem/dir.cc (recursive_directory_iterator): Likewise,
+ 	for the TS implementation.
+ 	* testsuite/27_io/filesystem/iterators/error_reporting.cc: New test.
+ 	* testsuite/experimental/filesystem/iterators/error_reporting.cc: New test.
+ 
+ 2022-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/23_containers/map/allocator/move_cons.cc: New test.
+ 	* testsuite/23_containers/multimap/allocator/move_cons.cc: New test.
+ 	* testsuite/23_containers/multiset/allocator/move_cons.cc: New test.
+ 	* testsuite/23_containers/set/allocator/move_cons.cc: New test.
+ 
+ 2022-06-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103501
+ 	* include/bits/stl_tree.h (_Rb_tree(_Rb_tree&&, false_type)):
+ 	Clear container if elements have been moved-from.
+ 	* testsuite/23_containers/multiset/allocator/103501.cc: New test.
+ 	* testsuite/23_containers/set/allocator/103501.cc: New test.
+ 
+ 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/97944
+ 	* testsuite/30_threads/jthread/95989.cc: Mark XFAIL.
+ 
+ 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-11-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/30_threads/jthread/95989.cc: Run all three test
+ 	functions, not just the first one twice.
+ 
+ 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99290
+ 	* src/c++17/fs_ops.cc (fs::copy): Pass error_code to
+ 	directory_iterator constructor, and check on each iteration.
+ 	* src/filesystem/ops.cc (fs::copy): Likewise.
+ 	* testsuite/27_io/filesystem/operations/copy.cc: Check for
+ 	errors during recursion.
+ 	* testsuite/experimental/filesystem/operations/copy.cc:
+ 	Likewise.
+ 
+ 2022-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/lib/gdb-test.exp: Add target selector support to the
+ 	dg-final directives.
+ 	* testsuite/libstdc++-prettyprinters/80276.cc: Add xfail for
+ 	C++20.
+ 	* testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
+ 	* testsuite/libstdc++-prettyprinters/prettyprinters.exp: Tweak
+ 	comment.
+ 
+ 2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-06-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/105915
+ 	* include/experimental/bits/fs_path.h (path::begin, path::end):
+ 	Remove noexcept from declarations.
+ 
+ 2022-05-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-16  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/103904
+ 	PR libstdc++/101231
+ 	* include/std/ranges (_CachedPosition::_M_get): For non-forward
+ 	ranges, just call __builtin_unreachable.
+ 	* testsuite/std/ranges/istream_view.cc (test05): New test.
+ 
+ 2022-05-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/103904
+ 	* include/bits/iterator_concepts.h (weakly_incrementable): Remove
+ 	default_initializable requirement.
+ 	* include/bits/stl_iterator.h (common_iterator): Constrain the
+ 	default ctor.
+ 	(counted_iterator): Likewise.
+ 	* include/std/ranges (ranges::view): Remove default_initializable
+ 	requirement.
+ 	(subrange): Constrain the default ctor.
+ 	(__detail::__box::operator=): Handle self-assignment.
+ 	(single_view): Constraint the default ctor.
+ 	(iota_view): Relax semiregular constraint to copyable.
+ 	Constrain the default ctor.
+ 	(iota_view::_Iterator): Constraint the default ctor.
+ 	(filter_view): Likewise.
+ 	(filter_view::_Iterator): Likewise.
+ 	(transform_view): Likewise.
+ 	(transform_view::_Iterator): Likewise.
+ 	(take_view): Likewise.
+ 	(take_view::_Iterator): Likewise.
+ 	(take_while_view): Likewise.
+ 	(take_while_view::_Iterator): Likewise.
+ 	(drop_while_view): Likewise.
+ 	(drop_while_view::_Iterator): Likewise.
+ 	(join_view): Likewise.
+ 	(split_view): Constrain the default ctor.
+ 	(common_view): Likewise.
+ 	(reverse_view): Likewise.
+ 	(elements_view): Likewise.
+ 	(elements_view::_Iterator): Likewise.
+ 	* include/std/span (enable_view<span<_ElementType, _Extent>>):
+ 	Define this partial specialization to true unconditionally.
+ 	* testsuite/std/ranges/p2325.cc: New test.
+ 	* testsuite/std/ranges/single_view.cc (test06): New test.
+ 	* testsuite/std/ranges/view.cc: Adjust now that view doesn't
+ 	require default_initializable.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-03-15  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* testsuite/17_intro/names.cc: Exclude j from the list
+ 	of test symbols for Darwin.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2021-11-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* testsuite/lib/prune.exp: Prune dsymutil (ld64) warning.
+ 
+ 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/prerequisites.xml: Fix attributes for external
+ 	hyperlink.
+ 	* doc/html/manual/setup.html: Regenerate.
+ 
+ 2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/html/manual/status.html: Regenerate.
+ 	* doc/xml/manual/status_cxx2020.xml: Fix supported version for
+ 	C++20 bit operations.
+ 
+ 2022-05-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/93602
+ 	* doc/xml/manual/prerequisites.xml: Document libiconv
+ 	workarounds.
+ 	* doc/html/manual/setup.html: Regenerate.
+ 	* src/Makefile.am (CXXLINK): Add $(LTLIBICONV).
+ 	* src/Makefile.in: Regenerate.
+ 
+ 2022-05-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-05-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/105502
+ 	* include/bits/random.tcc
+ 	(operator>>(basic_istream<C,T>&, normal_distribution<R>&)):
+ 	Update state when __state_avail is false.
+ 	* testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
+ 	Check that deserialized object equals serialized one.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_iterator.h (operator==, operator<=>): Define
+ 	overloads for homogeneous specializations of reverse_iterator,
+ 	__normal_iterator and move_iterator.
+ 
+ 2022-04-26  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/stl_iterator.h (common_iterator::__arrow_proxy):
+ 	Make fully constexpr as per LWG 3595.
+ 	(common_iterator::__postfix_proxy): Likewise.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/104098
+ 	* include/bits/stl_iterator.h (reverse_iterator): Check
+ 	__cpp_lib_concepts instead of __cplusplus.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/range_access.h (ranges::empty): Check whether
+ 	conversion to bool can throw.
+ 	* testsuite/std/ranges/access/empty.cc: Check for correct
+ 	noexcept-specifier.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/102048
+ 	* include/ext/rope (rope::erase(size_type)): Deprecate broken
+ 	function.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100153
+ 	* include/bits/vector.tcc (vector<bool>::_M_shrink_to_fit()):
+ 	When size() is zero just deallocate and reset.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/span (span(Range&&)): Reorder constraints.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/26_numerics/random/random_device/cons/token.cc:
+ 	Retry if random devices produce the same value.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc:
+ 	Fix reads past the end of strings.
+ 	* testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc:
+ 	Likewise.
+ 	* testsuite/experimental/string_view/operations/compare/wchar_t/1.cc:
+ 	Likewise.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100117
+ 	* testsuite/17_intro/headers/c++1998/49745.cc: Explicitly list
+ 	all C++ headers instead of including <bits/stdc++.h>
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103630
+ 	* libsupc++/exception_ptr.h (make_exception_ptr): Decay the
+ 	template parameter. Use typeid of the static type.
+ 	* testsuite/18_support/exception_ptr/103630.cc: New test.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103650
+ 	* include/Makefile.am: Rename LT_OBJDIR and STDC_HEADERS.
+ 	* include/Makefile.in: Regenerate.
+ 	* testsuite/17_intro/headers/c++1998/103650.cc: New test.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/experimental/bits/fs_ops.h (fs::copy_file): Remove
+ 	noexcept.
+ 	(fs::create_directories): Likewise.
+ 	(fs::remove_all): Likewise.
+ 	* src/filesystem/ops.cc (fs::copy_file): Remove noexcept.
+ 	(fs::create_directories): Likewise.
+ 	(fs::remove_all): Likewise.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/experimental/bits/fs_fwd.h (copy_file): Remove
+ 	incorrect noexcept from declaration.
+ 	* include/experimental/bits/fs_path.h (path::begin, path::end):
+ 	Add noexcept to declarations, to match definitions.
+ 
+ 2022-04-26  Timm Bäder  <tbaeder@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-01  Timm Bäder  <tbaeder@redhat.com>
+ 
+ 	* include/bits/fs_ops.h: Fix filename in Doxygen comment.
+ 	* include/experimental/bits/fs_ops.h: Likewise.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc:
+ 	Check correct feature test macro.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/intro.xml: Fix comment.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-03-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/17_intro/names.cc (func): Undef on AIX.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-27  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/range_access.h (ranges::advance): Avoid signed
+ 	overflow. Do nothing if already equal to desired result.
+ 	* testsuite/24_iterators/range_operations/advance_overflow.cc:
+ 	New test.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/ext/rope/pthread7-rope.cc: Add dg-timeout-factor.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103911
+ 	* include/std/charconv (__from_chars_alpha_to_num): Return
+ 	char instead of unsigned char. Change invalid return value to
+ 	127 instead of using numeric trait.
+ 	(__from_chars_alnum): Fix comment. Do not use std::isdigit.
+ 	Change type of variable to char.
+ 
+ 2022-04-26  Pavel I. Kryukov  <pavel.kryukov@phystech.edu>
+ 
+ 	Backported from master:
+ 	2022-01-06  Pavel I. Kryukov  <pavel.kryukov@phystech.edu>
+ 		    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103853
+ 	* include/bits/forward_list.tcc (forward_list::merge): Check for
+ 	self-merge.
+ 	* testsuite/23_containers/forward_list/operations/merge.cc: New test.
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/regex_compiler.tcc (_Compiler::_M_match_token):
+ 	Use reserved name for parameter.
+ 	* testsuite/17_intro/names.cc: Check "token".
+ 
+ 2022-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/17_intro/names.cc: Check 'sz'.
+ 
+ 2022-04-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx1998.xml: Refer to GCC 10 not
+ 	mainline.
+ 	* doc/xml/manual/status_cxx2011.xml: Likewise.
+ 	* doc/xml/manual/status_cxx2014.xml: Likewise.
+ 	* doc/xml/manual/status_cxx2017.xml: Likewise.
+ 	* doc/xml/manual/status_cxx2020.xml: Likewise.
+ 	* doc/xml/manual/status_cxxtr1.xml: Likewise.
+ 	* doc/xml/manual/status_cxxtr24733.xml: Likewise.
+ 	* doc/html/manual/status.html: Regenerate.
+ 
+ 2022-02-17  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/102358
+ 	* include/bits/stl_iterator.h (__niter_base): Make constexpr
+ 	for C++20.
+ 	(__miter_base): Likewise.
+ 	* testsuite/25_algorithms/move/constexpr.cc: New test.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/char_traits.h (__gnu_cxx::char_traits::move):
+ 	Do not compare unrelated pointers during constant evaluation.
+ 	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
+ 	Improve tests for char_traits::move.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103877
+ 	* doc/xml/faq.xml: Add '-x c++' to preprocessor command.
+ 	* doc/html/faq.html: Regenerate.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-12-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103549
+ 	* include/bits/regex.h (match_results): Give names to template
+ 	parameters in first declaration.
+ 	(match_results::_M_begin): Add default member-initializer.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103453
+ 	* config/allocator/malloc_allocator_base.h
+ 	(_GLIBCXX_SANITIZE_STD_ALLOCATOR): Define for Clang.
+ 	* config/allocator/new_allocator_base.h
+ 	(_GLIBCXX_SANITIZE_STD_ALLOCATOR): Likewise.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Strip
+ 	versioned namespace from the type name that is printed.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/alloc_traits.h (allocator_traits): Add explicit
+ 	specialization for allocator<void>. Improve doxygen comments.
+ 	* include/bits/allocator.h (allocator<void>): Restore for the
+ 	versioned namespace.
+ 	(allocator<void>::construct, allocator<void>::destroy): Remove.
+ 	* include/ext/extptr_allocator.h (_Extptr_allocator<void>):
+ 	Add default constructor and converting constructor.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103086
+ 	* testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr
+ 	with non-empty pointer and non-empty deleter.
+ 
+ 2022-01-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103086
+ 	* python/libstdcxx/v6/printers.py (_tuple_impl_get): New helper
+ 	for accessing the tuple element stored in a _Tuple_impl node.
+ 	(tuple_get): New function for accessing a tuple element.
+ 	(unique_ptr_get): New function for accessing a unique_ptr.
+ 	(UniquePointerPrinter, StdPathPrinter): Use unique_ptr_get.
+ 	* python/libstdcxx/v6/xmethods.py (UniquePtrGetWorker): Cast
+ 	tuple to its base class before accessing _M_head_impl.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101571
+ 	* include/bits/ranges_uninitialized.h (_DestroyGuard): Change
+ 	constructor parameter to reference and use addressof.
+ 	* testsuite/util/testsuite_iterators.h: Define deleted operator&
+ 	overloads for test iterators.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101965
+ 	* include/std/charconv (__to_chars_i): Remove redundant check.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/102894
+ 	* include/std/any (make_any): Add SFINAE constraint.
+ 	* testsuite/20_util/any/102894.cc: New test.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/102270
+ 	* include/std/tuple (_Head_base, _Tuple_impl): Add
+ 	_GLIBCXX20_CONSTEXPR to allocator-extended constructors.
+ 	(tuple<>::swap(tuple&)): Add _GLIBCXX20_CONSTEXPR.
+ 	* testsuite/20_util/tuple/cons/102270.cc: New test.
+ 	* testsuite/util/testsuite_allocator.h (SimpleAllocator): Add
+ 	constexpr to constructor so it can be used for C++20 tests.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/23_containers/unordered_map/cons/default.cc: Add
+ 	equality comparison operators to allocator.
+ 	* testsuite/23_containers/unordered_set/cons/default.cc:
+ 	Likewise.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100863
+ 	* include/bits/hashtable.h (_Hashtable): Conditionally delete
+ 	default constructor by deriving from _Enable_default_constructor.
+ 	Construct that base-class explicitly in all non-forwarding,
+ 	non-defaulted constructors.
+ 	* testsuite/23_containers/unordered_map/cons/default.cc: New test.
+ 	* testsuite/23_containers/unordered_set/cons/default.cc: New test.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-02  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100863
+ 	PR libstdc++/65816
+ 	* include/bits/hashtable_policy.h (_Hashtable_ebo_helper):
+ 	Value-initialize subobject.
+ 	* testsuite/23_containers/unordered_map/allocator/default_init.cc:
+ 	Remove XFAIL.
+ 	* testsuite/23_containers/unordered_set/allocator/default_init.cc:
+ 	Remove XFAIL.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/move.h (forward(remove_reference_t<T>&&)):
+ 	Improve text of static_assert.
+ 	* testsuite/20_util/forward/c_neg.cc: Adjust dg-error.
+ 	* testsuite/20_util/forward/f_neg.cc: Likewise.
+ 
+ 2021-11-26  Antony Polukhin  <antoshkka@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-08-17  Antony Polukhin  <antoshkka@gmail.com>
+ 		    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/random.tcc (seed_seq::seed_seq): Reserve capacity
+ 	if distance is O(1).
+ 	* testsuite/26_numerics/random/pr60037-neg.cc: Adjust dg-error
+ 	line number.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101870
+ 	* include/c_global/cmath (hypot): Use __promoted_t.
+ 	(lerp): Add new overload accepting any arithmetic types.
+ 	* include/ext/type_traits.h (__promoted_t): New alias template.
+ 	* testsuite/26_numerics/lerp.cc: Moved to...
+ 	* testsuite/26_numerics/lerp/1.cc: ...here.
+ 	* testsuite/26_numerics/lerp/constexpr.cc: New test.
+ 	* testsuite/26_numerics/lerp/version.cc: New test.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/27_io/types/1.cc: Add c++11 target selector to
+ 	warnings.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/headers/memory/synopsis.cc: Define C++98
+ 	alternative for macro.
+ 	* testsuite/20_util/shared_ptr/creation/99006.cc: Add effective
+ 	target keyword.
+ 	* testsuite/25_algorithms/copy/debug/99402.cc: Avoid C++11
+ 	syntax.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/23_containers/array/comparison_operators/96851.cc:
+ 	Skip test in debug mode.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/stl_iterator.h: Include required header for
+ 	std::iterator class template and iterator category tags.
+ 
+ 2021-11-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-25  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101608
+ 	* include/bits/ranges_algobase.h (__fill_n_fn): Check for
+ 	constant evaluation before using memset.
+ 	* testsuite/25_algorithms/fill_n/constrained.cc: Check
+ 	byte-sized values as well.
+ 
+ 2021-11-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103381
+ 	* include/ext/bitmap_allocator.h: Include <bits/stl_function.h>
+ 	instead of <functional>.
+ 
+ 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/valarray (begin, end): Remove nodiscard attribute.
+ 
+ 2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-11-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/103022
+ 	* include/std/valarray (begin, end): Do not dereference an empty
+ 	valarray. Add noexcept and [[nodiscard]].
+ 	* testsuite/26_numerics/valarray/range_access.cc: Check empty
+ 	valarray. Check iterator properties. Run as well as compiling.
+ 	* testsuite/26_numerics/valarray/range_access2.cc: Likewise.
+ 	* testsuite/26_numerics/valarray/103022.cc: New test.
+ 
+ 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/28_regex/match_results/102667.C: Moved to...
+ 	* testsuite/28_regex/match_results/102667.cc: ...here.
+ 
+ 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc:
+ 	Use -std=gnu++17 option.
+ 
+ 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/90787
+ 	* testsuite/27_io/filesystem/iterators/directory_iterator.cc:
+ 	Use new __gnu_test::permissions_are_testable() function.
+ 	* testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc:
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/operations/exists.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/is_empty.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/remove.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/remove_all.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/status.cc: Likewise.
+ 	* testsuite/27_io/filesystem/operations/symlink_status.cc:
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/operations/temp_directory_path.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/iterators/directory_iterator.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/operations/exists.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/operations/is_empty.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/operations/remove.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/operations/remove_all.cc:
+ 	Likewise.
+ 	* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
+ 	Likewise.
+ 	* testsuite/util/testsuite_fs.h (__gnu_test::permissions_are_testable):
+ 	New function to guess whether testing permissions will work.
+ 
+ 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/27_io/filesystem/operations/remove_all.cc: Remove
+ 	test directory after making it writable again.
+ 	* testsuite/experimental/filesystem/operations/remove_all.cc:
+ 	Likewise.
+ 
+ 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/random.h (seed_seq): Constrain initializer-list
+ 	constructor.
+ 	* include/bits/random.tcc (seed_seq): Add template parameter.
+ 	* testsuite/26_numerics/random/seed_seq/cons/default.cc: Check
+ 	for noexcept.
+ 	* testsuite/26_numerics/random/seed_seq/cons/initlist.cc: Check
+ 	constraints.
+ 
+ 2021-10-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc:
+ 	Increase dg-timeout-factor to 4. Fix -Wunused-parameter
+ 	warnings. Replace bitwise AND with logical AND in loop
+ 	condition.
+ 	* testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc:
+ 	Replace bitwise AND with logical AND in loop condition.
+ 	* testsuite/util/pstl/test_utils.h: Remove unused parameter
+ 	names.
+ 
+ 2021-10-13  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100187
+ 	PR libstdc++/100237
+ 	PR libstdc++/100249
+ 	PR libstdc++/100287
+ 	* include/bits/ranges_algo.h (__search_n_fn::operator()): Give
+ 	the __value_comp lambda an explicit bool return type.
+ 	(__is_permutation_fn::operator()): Give the __proj_scan local
+ 	variable auto&& return type.  Give the __comp_scan lambda an
+ 	explicit bool return type.
+ 	(__remove_fn::operator()): Give the __pred lambda an explicit
+ 	bool return type.
+ 	(__partition_fn::operator()): Don't std::move __first twice
+ 	when returning an empty subrange.
+ 	(__min_fn::operator()): Don't std::move __comp.
+ 	(__max_fn::operator()): Likewise.
+ 	(__minmax_fn::operator()): Likewise.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-02  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/101599
+ 	* include/bits/ranges_algo.h (__reverse_copy_fn::operator()):
+ 	Add missing std::move in return statement.
+ 	(__partition_copy_fn::operator()): Rename templtae parameter
+ 	_O2 to _Out2.  Uglify function parameters out_true and out_false.
+ 	* include/bits/ranges_algobase.h (__copy_or_move): Add missing
+ 	std::move to recursive call that unwraps a __normal_iterator
+ 	output iterator.
+ 	* testsuite/25_algorithms/copy/constrained.cc (test06): New test.
+ 	* testsuite/25_algorithms/move/constrained.cc (test05): New test.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-02  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/101589
+ 	* include/std/ranges (lazy_split_view::_InnerIter::base): Make
+ 	the const& overload unconstrained and return a const reference
+ 	as per LWG 3533.  Make unconditionally noexcept.
+ 	(elements_view::base): Revert accidental r12-569 change.
+ 	(elements_view::_Iterator::base): Make the const& overload
+ 	unconstrained and return a const reference as per LWG 3533.
+ 	Make unconditionally noexcept.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-02  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/101483
+ 	* include/std/ranges (join_view::_Iterator::_Iterator): Add
+ 	missing std::move.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (split_view::_InnerIter::base): Define as
+ 	per P2210.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (transform_view::_Iterator::_S_iter_concept):
+ 	Consider _Base instead of _Vp as per LWG 3555.
+ 	(elements_view::_Iterator::_S_iter_concept): Likewise.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (split_view::_OuterIter::value_type::begin):
+ 	Remove the non-const overload, and remove the copyable constraint
+ 	on the const overload as per LWG 3553.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-19  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/stl_iterator.h
+ 	(__detail::__common_iter_use_postfix_proxy): Add
+ 	move_constructible constraint as per LWG 3546.
+ 	(common_iterator::__postfix_proxy): Adjust initializer of
+ 	_M_keep as per LWG 3546.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100387
+ 	* include/bits/ranges_algo.h (__minmax_fn::operator()): Rewrite
+ 	to limit comparison complexity to 3*N/2.
+ 	(__minmax_element_fn::operator()): Likewise.
+ 	(shift_right): Avoid premature std::move of __result.
+ 	* testsuite/25_algorithms/minmax/constrained.cc (test04, test05):
+ 	New tests.
+ 	* testsuite/25_algorithms/minmax_element/constrained.cc (test02):
+ 	Likewise.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/concepts (convertible_to): Just use declval as per
+ 	LWG 3557.
+ 
+ 2021-10-12  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100606
+ 	* include/std/ranges (drop_while_view::begin): Assert the
+ 	precondition added by LWG 3490.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/tuple/comparison_operators/overloaded.cc:
+ 	Restore test for operator<.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/27_io/basic_filebuf/close/81256.cc: Moved to...
+ 	* testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc: ...here.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc:
+ 	New test.
+ 	* testsuite/23_containers/span/trivially_copyable.cc: New test.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* python/Makefile.am [GLIBCXX_BUILD_DEBUG] (install-data-local):
+ 	Install another copy of the GDB hook.
+ 	* python/Makefile.in: Regenerate.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (StdErrorCodePrinter): Define.
+ 	(build_libstdcxx_dictionary): Register printer for
+ 	std::error_code and std::error_condition.
+ 	* testsuite/libstdc++-prettyprinters/cxx11.cc: Test it.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/102425
+ 	* src/c++11/system_error.cc
+ 	(system_error_category::default_error_condition): Add 0 to
+ 	switch.
+ 	* testsuite/19_diagnostics/error_category/102425.cc: New test.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/fs_path.h (advance): Remove non-deducible
+ 	template parameter.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99876
+ 	* src/c++17/fs_ops.cc (fs::absolute): Call non-throwing form,
+ 	to avoid unnecessary current_path() call.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/26_numerics/valarray/dr630-3.C: Moved to...
+ 	* testsuite/26_numerics/valarray/dr630-3.cc: ...here.
+ 	* testsuite/27_io/basic_iostream/cons/16251.C: Moved to...
+ 	* testsuite/27_io/basic_iostream/cons/16251.cc: ...here.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-09-16  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/102280
+ 	* include/std/span (span(Range&&)): Add constraint to deduction
+ 	guide.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/25_algorithms/is_permutation/2.cc: Include <iterator>.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/integer_comparisons/greater.cc: New test.
+ 
+ 2021-10-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-10-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/102667
+ 	* include/bits/regex.h (match_result::empty()): Optimize by
+ 	calling the base function directly.
+ 	(match_results::end()): Check _Base_type::empty() not empty().
+ 	* testsuite/28_regex/match_results/102667.C: New test.
+ 
+ 2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/ranges (basic_istream_view): Add default template
+ 	argument.
+ 	* testsuite/std/ranges/istream_view.cc: Check it.
+ 
+ 2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100139
+ 	* doc/xml/manual/status_cxx2020.xml: Add P1739R4 to status table.
+ 	* doc/html/manual/status.html: Regenerate.
+ 
+ 2021-08-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Backported from master:
+ 	2021-08-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* testsuite/lib/libstdc++.exp: Avoid illegal argument to verbose,
+ 	continued.
+ 
+ 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101866
+ 	* testsuite/experimental/random/randint.cc: Loop and retry if
+ 	reseed() produces the same sequence.
+ 
+ 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101510
+ 	* src/c++17/fs_ops.cc (fs::create_directories): Use status
+ 	instead of symlink_status.
+ 	* src/filesystem/ops.cc (fs::create_directories): Likewise.
+ 	* testsuite/27_io/filesystem/operations/create_directories.cc:
+ 	Check symlink to existing directory.
+ 	* testsuite/27_io/filesystem/operations/create_directory.cc: Do
+ 	not test with symlinks on Windows.
+ 	* testsuite/experimental/filesystem/operations/create_directories.cc:
+ 	Check symlink to existing directory.
+ 	* testsuite/experimental/filesystem/operations/create_directory.cc:
+ 	Do not test with symlinks on Windows.
+ 
+ 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-20  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101510
+ 	* src/c++17/fs_ops.cc (create_dir): Adjust whitespace.
+ 	* testsuite/27_io/filesystem/operations/create_directory.cc:
+ 	Test creating directory with name of existing symlink to
+ 	directory.
+ 	* testsuite/experimental/filesystem/operations/create_directory.cc:
+ 	Likewise.
+ 
+ 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101056
+ 	* libsupc++/compare (compare_partial_order_fallback): Add
+ 	constraint using reversed parameter order, as per LWG 3465.
+ 	* testsuite/18_support/comparisons/algorithms/fallback.cc:
+ 	Adjust expected result.
+ 
+ 2021-08-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* libsupc++/compare (__decayed_same_as): New helper concept.
+ 	(strong_order, weak_order, partial_order): Constrain with new
+ 	concept instead of using static_assert.
+ 	(compare_strong_order_fallback, compare_weak_order_fallback)
+ 	(compare_partial_order_fallback): Likewise. Do not deduce return
+ 	types. Remove redundant if-constexpr checks.
+ 	* testsuite/18_support/comparisons/algorithms/fallback.cc: New test.
+ 
+ 2021-08-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100894
+ 	* include/std/type_traits (__common_ref_impl<X&, Y&>): Only
+ 	use the type if it's a reference.
+ 	* testsuite/20_util/common_reference/100894.cc: New test.
+ 
+ 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/96657
+ 	* libsupc++/Makefile.am: Add atomicity.cc here.
+ 	* src/c++98/Makefile.am: Remove it from here.
+ 	* libsupc++/Makefile.in: Regenerate.
+ 	* src/c++98/Makefile.in: Regenerate.
+ 	* testsuite/18_support/exception_ptr/96657.cc: New test.
+ 
+ 2021-07-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/98842
+ 	* include/std/optional (operator<=>(const optional<T>& const U&)):
+ 	Add missing constraint and add workaround for template
+ 	recursion.
+ 	* testsuite/20_util/optional/relops/three_way.cc: Check that
+ 	type without equality comparison cannot be compared when wrapped
+ 	in std::optional.
+ 
+ 2021-07-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/101361
+ 	* include/std/string_view (ends_with): Use traits_type::compare
+ 	directly.
+ 
+ 2021-07-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-07-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101411
+ 	* include/std/span (as_writable_bytes): Add requires-clause.
+ 	* testsuite/23_containers/span/101411.cc: New test.
+ 
+ 2021-07-06  Avi Kivity  <avi@scylladb.com>
+ 
+ 	Backported from master:
+ 	2021-06-07  Avi Kivity  <avi@scylladb.com>
+ 
+ 	PR libstdc++/100900
+ 	* include/std/ranges (elements_view::__iter_cat::_S_iter_cat):
+ 	Add missing typename.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/95833
+ 	* include/std/numeric (reduce(Iter, Iter, T, BinaryOp)): Replace
+ 	incorrect static_assert with ones matching the 'Mandates'
+ 	conditions in the standard.
+ 	* testsuite/26_numerics/reduce/95833.cc: New test.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/variant (__same_types, __check_visitor_results):
+ 	Remove.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/future (promise::set_value): Check for existence
+ 	of shared state before dereferncing it.
+ 	(promise::set_exception, promise::set_value_at_thread_exit)
+ 	(promise::set_exception_at_thread_exit): Likewise.
+ 	(promise<R&>::set_value, promise<R&>::set_exception)
+ 	(promise<R&>::set_value_at_thread_exit)
+ 	(promise<R&>::set_exception_at_thread_exit): Likewise.
+ 	(promise<void>::set_value, promise<void>::set_exception)
+ 	(promise<void>::set_value_at_thread_exit)
+ 	(promise<void>::set_exception_at_thread_exit): Likewise.
+ 	* testsuite/30_threads/promise/members/at_thread_exit2.cc:
+ 	Remove unused variable.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/basic_string.h (basic_string(const CharT*, const A&)):
+ 	Do not do arithmetic on null pointer.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+ 	(find_key_pointer(key_const_reference, false_type))
+ 	(find_key_pointer(key_const_reference, true_type)): Do not
+ 	dereference null pointer.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/from_chars/3.cc: Use unsigned type to avoid
+ 	overflow.
+ 	* testsuite/24_iterators/reverse_iterator/2.cc: Do not add
+ 	non-zero value to null pointer.
+ 	* testsuite/25_algorithms/copy_backward/move_iterators/69478.cc:
+ 	Use past-the-end iterator for result.
+ 	* testsuite/25_algorithms/move_backward/69478.cc: Likewise.
+ 	* testsuite/25_algorithms/move_backward/93872.cc: Likewise.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100384
+ 	* include/std/variant (__get_t): New alias template yielding the
+ 	return type of std::get<N> on a variant.
+ 	(__visit_result_t): New alias template yielding the result of
+ 	std::visit.
+ 	(__same_types): Move into namespace __detail::__variant.
+ 	(__check_visitor_results): Likewise. Use __invoke_result_t and
+ 	__get_t.
+ 	(__check_visitor_result): Remove.
+ 	(visit): Use __visit_result_t for return type.
+ 	* testsuite/20_util/variant/100384.cc: New test.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-22  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99006
+ 	* include/bits/shared_ptr.h (allocate_shared): Assert that _Tp
+ 	is not an array type.
+ 	* include/bits/shared_ptr_base.h (__allocate_shared): Likewise.
+ 	* testsuite/20_util/shared_ptr/creation/99006.cc: New test.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/allocator.h (allocator<void>) [C++20]: Add
+ 	missing noexcept to constructor. Restore missing POCMA and
+ 	is_always_equal_traits.
+ 	* include/bits/memoryfwd.h (allocator_traits): Declare.
+ 	* include/ext/malloc_allocator.h (malloc_allocator::allocate):
+ 	Add nodiscard attribute. Add static assertion for LWG 3307.
+ 	* include/ext/new_allocator.h (new_allocator::allocate): Add
+ 	static assertion for LWG 3307.
+ 	* testsuite/20_util/allocator/void.cc: Check that converting
+ 	constructor is noexcept. Check for propagation traits and
+ 	size_type and difference_type. Check that pointer and
+ 	const_pointer are gone in C++20.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/shared_ptr_base.h (__shared_count(unique_ptr&&)):
+ 	Initialize a non-reference deleter from an rvalue, as per LWG
+ 	3548.
+ 	(__shared_ptr::_UniqCompatible): Add missing constraint.
+ 	* testsuite/20_util/shared_ptr/cons/lwg3548.cc: New test.
+ 	* testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc: Check
+ 	constraints.
+ 
+ 2021-06-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/91488
+ 	* include/bits/basic_string.h (__cpp_lib_constexpr_string): Only
+ 	define C++20 value when std::is_constant_evaluated is available.
+ 	* include/bits/char_traits.h (__cpp_lib_constexpr_char_traits):
+ 	Likewise.
+ 	(__constant_string_p, __constant_array_p): Give external
+ 	linkage.
+ 	* include/std/version (__cpp_lib_constexpr_char_traits)
+ 	(__cpp_lib_constexpr_string): Only define C++20 values when
+ 	is_constant_evaluated is available.
+ 
+ 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-10  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/20_util/scoped_allocator/69293_neg.cc: Add dg-error
+ 	for additional errors in C++20.
+ 	* testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
+ 	* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
+ 
+ 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100982
+ 	* include/std/optional (optional::operator=(const optional<U>&)):
+ 	Fix value category used in is_assignable check.
+ 	* testsuite/20_util/optional/assignment/100982.cc: New test.
+ 
+ 2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-14  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/101034
+ 	* include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
+ 	(any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
+ 	to use lvalue.
+ 	* testsuite/20_util/any/cons/101034.cc: New test.
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100770
+ 	* include/bits/ranges_algo.h (__detail::__can_reread_output):
+ 	Factor out this concept from ...
+ 	(__unique_copy_fn::operator()): ... here.  Use the concept
+ 	throughout.
+ 	* testsuite/std/ranges/range.cc: Remove now ill-formed use
+ 	of range_value_t on an output_range.
+ 	* testsuite/util/testsuite_iterators.h (output_iterator_wrapper):
+ 	Define value_type, pointer and reference member types to void.
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100690
+ 	* include/std/ranges (iota_view::_Sentinel::_M_distance_from):
+ 	Split out this member function from ...
+ 	(iota_view::_Sentinel::operator-): ... here, for sake of access
+ 	control.
+ 	* testsuite/std/ranges/iota/iota_view.cc (test05): New test.
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-06  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (filter_view::_Iterator::base): Make the
+ 	const& overload unconstrained and return a const reference as
+ 	per LWG 3533.  Make unconditionally noexcept.
+ 	(transform_view::_Iterator::base): Likewise.
+ 	(elements_view::_Iterator::base): Likewise.
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-06  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/bits/stl_iterator.h (move_iterator::base): Make the
+ 	const& overload unconstrained and return a const reference as
+ 	per LWG 3391.  Make unconditionally noexcept.
+ 	(counted_iterator::base): Likewise.
+ 	* testsuite/24_iterators/move_iterator/lwg3391.cc: New test.
+ 	* testsuite/24_iterators/move_iterator/move_only.cc: Adjust
+ 	has_member_base concept to decay-copy the result of base().
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100631
+ 	* include/std/ranges (elements_view::_Sentinel::operator-): Use
+ 	_M_distance_from in the other operator- overload too.
+ 	* testsuite/std/ranges/adaptors/elements.cc (test06): Augment test.
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-18  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100631
+ 	* include/std/ranges (elements_view::_Iterator): Also befriend
+ 	_Sentinel<!_Const>.
+ 	(elements_view::_Sentinel::_M_equal): Templatize.
+ 	(elements_view::_Sentinel::_M_distance_from): Split out from ...
+ 	(elements_view::_Sentinel::operator-): ... here.  Depend on
+ 	_Base2 instead of _Base in the return type.
+ 	* testsuite/std/ranges/adaptors/elements.cc (test06, test07):
+ 	New tests.
+ 
+ 2021-06-10  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100639
+ 	* include/bits/stl_iterator.h (reverse_iterator::difference_type):
+ 	In C++20 mode, define in terms of iter_difference_t as per P0896R4.
+ 	(reverse_iterator::reference): Likewise, but with iter_reference_t.
+ 	(reverse_iterator::value_type): Likewise, but with iter_value_t.
+ 	* testsuite/std/ranges/adaptors/reverse.cc (test08): New test.
+ 	* testsuite/24_iterators/reverse_iterator/100639.cc: New test.
+ 
+ 2021-06-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100833
+ 	* include/bits/range_access.h (ranges::advance(iter, n, sentinel)):
+ 	Fix return value for no-op case.
+ 	* testsuite/24_iterators/range_operations/advance.cc: Test
+ 	return values of three-argument overload.
+ 
+ 2021-06-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100768
+ 	* include/bits/range_access.h (ranges::advance)
+ 	(ranges::distance, ranges::next, ranges::prev): Replace
+ 	function templates with function objects.
+ 	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
+ 	Adjust for changes to function objects.
+ 	* testsuite/std/ranges/adaptors/elements.cc: Add using
+ 	declarations for names from namespace ranges.
+ 	* testsuite/std/ranges/adaptors/transform.cc: Likewise.
+ 	* testsuite/24_iterators/range_operations/100768.cc: New test.
+ 
+ 2021-06-03  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-06-01  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99453
+ 	* python/Makefile.am: Use archive name for printer hook if no
+ 	dynamic library name is available.
+ 	* python/Makefile.in: Regenerate.
+ 
+ 2021-06-03  Philippe Blain  <levraiphilippeblain@gmail.com>
+ 
+ 	Backported from master:
+ 	2021-04-21  Philippe Blain  <levraiphilippeblain@gmail.com>
+ 		    Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99453
+ 	* python/Makefile.am: Install libstdc++*-gdb.py more robustly.
+ 	* python/Makefile.in: Regenerate.
+ 
+ 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100630
+ 	* include/bits/fs_path.h (__is_constructible_from): Test
+ 	construction from a const lvalue, not an rvalue.
+ 	* include/experimental/bits/fs_path.h (__is_constructible_from):
+ 	Likewise.
+ 	* testsuite/27_io/filesystem/path/construct/100630.cc: New test.
+ 	* testsuite/experimental/filesystem/path/construct/100630.cc:
+ 	New test.
+ 
+ 2021-05-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-03-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* python/libstdcxx/v6/printers.py (find_type): Use tag attribute
+ 	instead of unqualified() method.
+ 
+ 2021-05-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-05-05  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (transform_view::_Iterator::iter_swap):
+ 	Remove as per LWG 3520.
+ 	(join_view::_Iterator::iter_swap): Add indirectly_swappable
+ 	constraint as per LWG 3517.
+ 
+ 2021-05-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (split_view::_InnerIter::operator++):
+ 	Depend on _Base instead of _Vp directly, as per LWG 3532.
+ 
+ 2021-05-04  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/95983
+ 	* include/bits/stl_iterator.h (__detail::__move_iter_cat):
+ 	Define.
+ 	(move_iterator): Derive from the above in C++20 in order to
+ 	conditionally define iterator_category as per P2259.
+ 	(move_iterator::__base_cat): No longer used, so remove.
+ 	(move_iterator::iterator_category): Remove in C++20.
+ 	(__detail::__common_iter_use_postfix_proxy): Define.
+ 	(common_iterator::_Proxy): Rename to ...
+ 	(common_iterator:__arrow_proxy): ... this.
+ 	(common_iterator::__postfix_proxy): Define as per P2259.
+ 	(common_iterator::operator->): Adjust.
+ 	(common_iterator::operator++): Adjust as per P2259.
+ 	(iterator_traits<common_iterator>::_S_iter_cat): Define.
+ 	(iterator_traits<common_iterator>::iterator_category): Change as
+ 	per P2259.
+ 	(__detail::__counted_iter_value_type): Define.
+ 	(__detail::__counted_iter_concept): Define.
+ 	(__detail::__counted_iter_cat): Define.
+ 	(counted_iterator): Derive from the above three classes in order
+ 	to conditionally define value_type, iterator_concept and
+ 	iterator category respectively as per P2259.
+ 	(counted_iterator::operator->): Define as per P2259.
+ 	(incrementable_traits<counted_iterator>): Remove as per P2259.
+ 	(iterator_traits<counted_iterator>): Adjust as per P2259.
+ 	* include/std/ranges (__detail::__iota_view_iter_cat): Define.
+ 	(iota_view::_Iterator): Derive from the above in order to
+ 	conditionally define iterator_category as per P2259.
+ 	(iota_view::_S_iter_cat): Rename to ...
+ 	(iota_view::_S_iter_concept): ... this.
+ 	(iota_view::iterator_concept): Use it to apply LWG 3291 changes.
+ 	(iota_view::iterator_category): Remove.
+ 	(__detail::__filter_view_iter_cat): Define.
+ 	(filter_view::_Iterator): Derive from the above in order to
+ 	conditionally define iterator_category as per P2259.
+ 	(filter_view::_Iterator): Move to struct __filter_view_iter_cat.
+ 	(filter_view::_Iterator::iterator_category): Remove.
+ 	(transform_view::_Base): Define.
+ 	(transform_view::__iter_cat): Define.
+ 	(transform_view::_Iterator): Derive from the above in order to
+ 	conditionally define iterator_category as per P2259.
+ 	(transform_view::_Iterator::_Base): Just alias
+ 	transform_view::_Base.
+ 	(transform_view::_Iterator::_S_iter_cat): Move to struct
+ 	transform_view::__iter_cat.
+ 	(transform_view::_Iterator::iterator_category): Remove.
+ 	(transform_view::_Sentinel::_Base): Just alias
+ 	transform_view::_Base.
+ 	(join_view::_Base): Define.
+ 	(join_view::_Outer_iter): Define.
+ 	(join_view::_Inner_iter): Define.
+ 	(join_view::_S_ref_is_glvalue): Define.
+ 	(join_view::__iter_cat): Define.
+ 	(join_view::_Iterator): Derive from it in order to conditionally
+ 	define iterator_category as per P2259.
+ 	(join_view::_Iterator::_Base): Just alias join_view::_Base.
+ 	(join_view::_Iterator::_S_ref_is_glvalue): Just alias
+ 	join_view::_S_ref_is_glvalue.
+ 	(join_view::_Iterator::_S_iter_cat): Move to struct
+ 	transform_view::__iter_cat.
+ 	(join_view::_Iterator::_Outer_iter): Just alias
+ 	join_view::_Outer_iter.
+ 	(join_view::_Iterator::_Inner_iter): Just alias
+ 	join_view::_Inner_iter.
+ 	(join_view::_Iterator::iterator_category): Remove.
+ 	(join_view::_Sentinel::_Base): Just alias join_view::_Base.
+ 	(__detail::__split_view_outer_iter_cat): Define.
+ 	(__detail::__split_view_inner_iter_cat): Define.
+ 	(split_view::_Base): Define.
+ 	(split_view::_Outer_iter): Derive from __split_view_outer_iter_cat
+ 	in order to conditionally define iterator_category as per P2259.
+ 	(split_view::_Outer_iter::iterator_category): Remove.
+ 	(split_view::_Inner_iter): Derive from __split_view_inner_iter_cat
+ 	in order to conditionally define iterator_category as per P2259.
+ 	(split_view::_Inner_iter::_S_iter_cat): Move to
+ 	__split_view_inner_iter_cat.
+ 	(split_view::_Inner_iter::iterator_category): Remove.
+ 	(elements_view::_Base): Define.
+ 	(elements_view::__iter_cat): Define.
+ 	(elements_view::_Iterator): Derive from the above in order to
+ 	conditionall define iterator_category as per P2259.
+ 	(elements_view::_Iterator::_Base): Just alias
+ 	elements_view::_Base.
+ 	(elements_view::_Iterator::_S_iter_concept)
+ 	(elements_view::_Iterator::iterator_concept): Define as per
+ 	P2259.
+ 	(elements_view::_Iterator::iterator_category): Remove.
+ 	(elements_view::_Sentinel::_Base): Just alias
+ 	elements_view::_Base.
+ 	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc:
+ 	Adjust constraints on iterator_traits<counted_iterator>.
+ 	* testsuite/std/ranges/p2259.cc: New test.
+ 
+ 2021-05-03  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-27  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/100290
+ 	* include/std/ranges (join_view::_Iterator::operator++): Correct
+ 	the return type of the lambda to avoid returning a copy of
+ 	_M_parent->_M_inner.
+ 	* testsuite/std/ranges/adaptors/join.cc (test10): New test.
+ 
+ 2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/basic_string.h (__cpp_lib_constexpr_string):
+ 	Only define for C++17 and later.
+ 
+ 2021-04-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100259
+ 	* include/experimental/internet (net::ip::make_error_code)
+ 	(net::ip::make_error_condition, net::ip::make_network_v4)
+ 	(net::ip::operator==(const udp&, const udp&)): Add 'inline'.
+ 
+ 2021-04-29  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/basic_string.h (__cpp_lib_constexpr_string): Define.
+ 	* include/std/version (__cpp_lib_constexpr_string): Define.
+ 	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
+ 	Check for __cpp_lib_constexpr_string.
+ 	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc:
+ 	Likewise.
+ 	* testsuite/21_strings/char_traits/requirements/version.cc: New test.
+ 
+ 2021-04-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100180
+ 	* testsuite/experimental/net/internet/address/v6/members.cc:
+ 	Require gthreads.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (__detail::find): Define.
+ 	(split_view::_OuterIter::operator++): Apply proposed resolution
+ 	of LWG 3505.
+ 	* testsuite/std/ranges/adaptors/split.cc (test10): New test.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (__detail::find_if): Simplify.
+ 	(__detail::find_if_not): Likewise.
+ 	(__detail::min): Remove.
+ 	(__detail::mismatch): Simplify.
+ 	(take_view::size): Use std::min instead of __detail::min.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* include/std/ranges (__detail::__returnable_element): New
+ 	concept.
+ 	(elements_view): Use this concept in its constraints.  Add
+ 	missing private access specifier.
+ 	(elements_view::_S_get_element): Define as per LWG 3502.
+ 	(elements_view::operator*, elements_view::operator[]): Use
+ 	_S_get_element.
+ 	(elements_view::operator++): Remove unnecessary constraint
+ 	as per LWG 3492.
+ 	* testsuite/std/ranges/adaptors/elements.cc (test05): New test.
+ 
+ 2021-04-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-10-31  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR libstdc++/97600
+ 	* include/std/ranges (basic_istream_view::begin): Initialize
+ 	_Iterator from 'this' instead of '*this'.
+ 	(basic_istream_view::_Iterator::_Iterator): Adjust constructor
+ 	accordingly.
+ 	(filter_view::_Iterator::_Iterator): Take a filter_view*
+ 	argument instead of a filter_view& argument.
+ 	(filter_view::_Sentinel::_Sentinel): Likewise.
+ 	(filter_view::begin): Initialize _Iterator from 'this' instead
+ 	of '*this'.
+ 	(filter_view::end): Likewise.
+ 	(transform_view::_Iterator::_Iterator): Take a _Parent* instead
+ 	of a _Parent&.
+ 	(filter_view::_Iterator::operator+): Adjust accordingly.
+ 	(filter_view::_Iterator::operator-): Likewise.
+ 	(filter_view::begin): Initialize _Iterator from 'this' instead
+ 	of '*this'.
+ 	(filter_view::end): Likewise.
+ 	(join_view::_Iterator): Take a _Parent* instead of a _Parent&.
+ 	(join_view::_Sentinel): Likewise.
+ 	(join_view::begin): Initialize _Iterator from 'this' instead of
+ 	'*this'.
+ 	(join_view::end): Initialize _Sentinel from 'this' instead of
+ 	'*this'.
+ 	(split_view::_OuterIter): Take a _Parent& instead of a _Parent*.
+ 	(split_view::begin): Initialize _OuterIter from 'this' instead
+ 	of '*this'.
+ 	(split_view::end): Likewise.
+ 	* testsuite/std/ranges/97600.cc: New test.
+ 
+ 2021-04-19  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	PR libstdc++/99402
+ 	* include/debug/helper_functions.h (__can_advance(_InputIterator,
+ 	const std::pair<_Diff, _Distance_precision>&, int)): New.
+ 	(__can_advance(const _Safe_iterator<>&,
+ 	const std::pair<_Diff, _Distance_precision>&, int)): New.
+ 	* include/debug/macros.h (__glibcxx_check_can_increment_dist): New,
+ 	use latter.
+ 	(__glibcxx_check_can_increment_range): Adapt to use latter.
+ 	(__glibcxx_check_can_decrement_range): Likewise.
+ 	* include/debug/safe_iterator.h
+ 	(_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
+ 	int)): New.
+ 	(__can_advance(const _Safe_iterator<>&,
+ 	const std::pair<_Diff, _Distance_precision>&, int)): New.
+ 	* include/debug/safe_iterator.tcc
+ 	(_Safe_iterator<>::_M_can_advance(const std::pair<_Diff, _Distance_precision>&,
+ 	int)): New.
+ 	(_Safe_iterator<>::_M_valid_range(const _Safe_iterator<>&,
+ 	std::pair<difference_type, _Distance_precision>&, bool)): Adapt for
+ 	__dp_sign_max_size.
+ 	(__copy_move_a): Adapt to use __glibcxx_check_can_increment_dist.
+ 	(__copy_move_backward_a): Likewise.
+ 	(__equal_aux): Likewise.
+ 	* include/debug/stl_iterator.h (__can_advance(const std::reverse_iterator<>&,
+ 	const std::pair<_Diff, _Distance_precision>&, int)): New.
+ 	(__can_advance(const std::move_iterator<>&,
+ 	const std::pair<_Diff, _Distance_precision>&, int)): New.
+ 	* testsuite/25_algorithms/copy/debug/99402.cc: New test.
+ 
+ 2021-04-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-10-26  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/97570
+ 	* libsupc++/new_opa.cc: Declare size_t in global namespace.
+ 	Remove unused header.
+ 
+ 2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100060
+ 	* include/std/bit: Only include <ext/numeric_traits.h> for
+ 	hosted build, use <limits> otherwise.
+ 
+ 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/100044
+ 	* include/std/ranges (__detail::__iterator_sentinel_pair):
+ 	Remove helper concept.
+ 	(subrange(_Pr), subrange(Pr, __make_unsigned_like<...>)): Remove
+ 	deduction guides, as per LWG 3404.
+ 	* testsuite/std/ranges/subrange/lwg3282_neg.cc: Check that class
+ 	template argument deduction fails.
+ 
+ 2021-04-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-08-24  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/iterator_concepts.h (indirectly_readable): Add
+ 	partial specializations to resolve ambiguities (LWG 3446).
+ 	* testsuite/24_iterators/associated_types/readable.traits.cc:
+ 	Check types with both value_type and element_type.
+ 
+ 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR bootstrap/99983
+ 	* include/bits/hashtable.h (_Hashtable): Fix noexcept-speciofier
+ 	on definition to match the one on the declaration.
+ 
+ 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99985
+ 	* include/bits/hashtable.h (_Hashtable::_S_nothrow_move()): Fix
+ 	to be a valid constexpr function in C++11.
+ 	* testsuite/23_containers/unordered_set/cons/99985.cc: New test.
+ 
+ 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/fs_fwd.h: Fix doxygen group command.
+ 	* include/bits/streambuf_iterator.h: Likewise.
+ 	* include/std/chrono: Likewise.
+ 	* include/std/memory: Likewise.
+ 	* include/std/thread: Likewise.
+ 	* include/tr1/complex: Likewise.
+ 
+ 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/basic_string.h: Tweak doxygen comment.
+ 
+ 2021-04-09  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/random.h: Fix doxygen group commands.
+ 	* include/bits/regex_constants.h: Likewise.
+ 	* include/tr1/random.h: Likewise.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2020-07-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
+ 	Use allocator with the correct value type.
+ 	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
+ 	Likewise.
+ 
+ 2021-04-08  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2020-07-29  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	PR libstdc++/96029
+ 	* include/bits/hashtable.h
+ 	(_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
+ 	Add noexcept qualification.
+ 	(_Hashtable(_Hashtable&&)): Fix noexcept qualification.
+ 	(_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
+ 	qualification.
+ 	* include/bits/unordered_map.h
+ 	(unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
+ 	qualification.
+ 	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
+ 	Likewise.
+ 	* include/bits/unordered_set.h
+ 	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
+ 	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
+ 	Likewise.
+ 	* include/debug/unordered_map
+ 	(unordered_map(unordered_map&&, const allocator_type&)): Likewise.
+ 	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
+ 	Likewise.
+ 	* include/debug/unordered_set
+ 	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
+ 	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
+ 	Likewise.
+ 	* testsuite/23_containers/unordered_map/allocator/default_init.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_set/allocator/default_init.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
+ 	New test.
+ 	* testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
+ 	New test.
+ 
+ 2021-04-08  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2020-07-08  François Dumont  <fdumont@gcc.gnu.org>
+ 
+ 	PR libstdc++/96029
+ 	* include/bits/stl_tree.h (_Rb_tree_impl(_Rb_tree_impl&&)): Add noexcept
+ 	qualification based only on _Compare one.
+ 	* testsuite/23_containers/map/cons/noexcept_move_construct.cc: Add
+ 	static asserts.
+ 	* testsuite/23_containers/multimap/cons/noexcept_move_construct.cc:
+ 	Likewise.
+ 	* testsuite/23_containers/multiset/cons/noexcept_move_construct.cc:
+ 	Likewise.
+ 	* testsuite/23_containers/set/cons/noexcept_move_construct.cc: Likewise.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/99805
+ 	* src/c++17/fs_path.cc (path::_M_split_cmpts): Do not call
+ 	non-const member on _M_pathname, to avoid copy-on-write.
+ 	* testsuite/27_io/filesystem/path/decompose/parent_path.cc:
+ 	Check construction from strings that might be shared.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/xml/manual/status_cxx2017.xml: Replace Intel parallelstl
+ 	link with LLVM repo for PSTL.
+ 	* doc/html/manual/status.html: Regenerate.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/alloc_traits.h: Use markdown for code font.
+ 	* include/bits/basic_string.h: Fix @param names.
+ 	* include/bits/regex.h: Fix duplicate @retval names, and rename.
+ 	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp: Add
+ 	group open to match existing group close.
+ 	* include/ext/pb_ds/priority_queue.hpp: Add blank line before group
+ 	open.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/bits/atomic_base.h: Fix doxygen group close.
+ 	* include/bits/basic_ios.h: Likewise.
+ 	* include/bits/forward_list.h: Likewise.
+ 	* include/bits/fs_dir.h: Likewise.
+ 	* include/bits/fs_ops.h: Likewise.
+ 	* include/bits/fs_path.h: Likewise.
+ 	* include/bits/functional_hash.h: Likewise.
+ 	* include/bits/gslice.h: Likewise.
+ 	* include/bits/gslice_array.h: Likewise.
+ 	* include/bits/hashtable_policy.h: Likewise.
+ 	* include/bits/indirect_array.h: Likewise.
+ 	* include/bits/locale_classes.h: Likewise.
+ 	* include/bits/locale_facets.h: Likewise.
+ 	* include/bits/locale_facets_nonio.h: Likewise.
+ 	* include/bits/mask_array.h: Likewise.
+ 	* include/bits/refwrap.h: Likewise.
+ 	* include/bits/regex.h: Likewise.
+ 	* include/bits/regex_automaton.h: Likewise.
+ 	* include/bits/regex_compiler.h: Likewise.
+ 	* include/bits/regex_constants.h: Likewise.
+ 	* include/bits/regex_error.h: Likewise.
+ 	* include/bits/regex_executor.h: Likewise.
+ 	* include/bits/regex_scanner.h: Likewise.
+ 	* include/bits/shared_ptr.h: Likewise.
+ 	* include/bits/shared_ptr_atomic.h: Likewise.
+ 	* include/bits/shared_ptr_base.h: Likewise.
+ 	* include/bits/slice_array.h: Likewise.
+ 	* include/bits/specfun.h: Likewise.
+ 	* include/bits/std_function.h: Likewise.
+ 	* include/bits/std_mutex.h: Likewise.
+ 	* include/bits/stl_deque.h: Likewise.
+ 	* include/bits/stl_iterator.h: Likewise.
+ 	* include/bits/stl_iterator_base_types.h: Likewise.
+ 	* include/bits/stl_map.h: Likewise.
+ 	* include/bits/stl_multimap.h: Likewise.
+ 	* include/bits/stl_multiset.h: Likewise.
+ 	* include/bits/stl_numeric.h: Likewise.
+ 	* include/bits/stl_pair.h: Likewise.
+ 	* include/bits/stl_set.h: Likewise.
+ 	* include/bits/stl_uninitialized.h: Likewise.
+ 	* include/bits/stream_iterator.h: Likewise.
+ 	* include/bits/streambuf_iterator.h: Likewise.
+ 	* include/bits/unique_ptr.h: Likewise.
+ 	* include/bits/unordered_map.h: Likewise.
+ 	* include/bits/unordered_set.h: Likewise.
+ 	* include/decimal/decimal: Likewise.
+ 	* include/experimental/any: Likewise.
+ 	* include/experimental/array: Likewise.
+ 	* include/experimental/bits/fs_dir.h: Likewise.
+ 	* include/experimental/bits/fs_fwd.h: Likewise.
+ 	* include/experimental/bits/fs_ops.h: Likewise.
+ 	* include/experimental/bits/fs_path.h: Likewise.
+ 	* include/experimental/buffer: Likewise.
+ 	* include/experimental/internet: Likewise.
+ 	* include/experimental/optional: Likewise.
+ 	* include/experimental/propagate_const: Likewise.
+ 	* include/experimental/socket: Likewise.
+ 	* include/ext/pb_ds/assoc_container.hpp: Likewise.
+ 	* include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp:
+ 	Likewise.
+ 	* include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp: Likewise.
+ 	* include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp: Likewise.
+ 	* include/ext/pb_ds/detail/types_traits.hpp: Likewise.
+ 	* include/ext/pb_ds/exception.hpp: Likewise.
+ 	* include/ext/pb_ds/priority_queue.hpp: Likewise.
+ 	* include/ext/pb_ds/tag_and_trait.hpp: Likewise.
+ 	* include/ext/random: Likewise.
+ 	* include/std/any: Likewise.
+ 	* include/std/atomic: Likewise.
+ 	* include/std/bitset: Likewise.
+ 	* include/std/chrono: Likewise.
+ 	* include/std/complex: Likewise.
+ 	* include/std/condition_variable: Likewise.
+ 	* include/std/fstream: Likewise.
+ 	* include/std/future: Likewise.
+ 	* include/std/istream: Likewise.
+ 	* include/std/iostream: Likewise.
+ 	* include/std/mutex: Likewise.
+ 	* include/std/numeric: Likewise.
+ 	* include/std/ostream: Likewise.
+ 	* include/std/ratio: Likewise.
+ 	* include/std/shared_mutex: Likewise.
+ 	* include/std/stdexcept: Likewise.
+ 	* include/std/streambuf: Likewise.
+ 	* include/std/system_error: Likewise.
+ 	* include/std/valarray: Likewise.
+ 	* include/std/variant: Likewise.
+ 	* include/tr1/cmath: Likewise.
+ 	* include/tr1/regex: Likewise.
+ 	* include/tr2/dynamic_bitset: Likewise.
+ 	* libsupc++/atomic_lockfree_defines.h: Likewise.
+ 	* libsupc++/exception: Likewise.
+ 	* libsupc++/exception.h: Likewise.
+ 	* libsupc++/exception_ptr.h: Likewise.
+ 	* libsupc++/nested_exception.h: Likewise.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* include/std/string_view: Adjust Doxygen @file comment.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/config/allocator/malloc_allocator_base.h gcc-10.4.0/libstdc++-v3/config/allocator/malloc_allocator_base.h
*** gcc-10.3.0/libstdc++-v3/config/allocator/malloc_allocator_base.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/config/allocator/malloc_allocator_base.h	Tue Jun 28 08:54:31 2022
*************** namespace std
*** 52,59 ****
  # define __allocator_base  __gnu_cxx::malloc_allocator
  #endif
  
! #if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR)
! # define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1
  #endif
  
  #endif
--- 52,65 ----
  # define __allocator_base  __gnu_cxx::malloc_allocator
  #endif
  
! #ifndef _GLIBCXX_SANITIZE_STD_ALLOCATOR
! # if defined(__SANITIZE_ADDRESS__)
! #  define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1
! # elif defined __has_feature
! #  if __has_feature(address_sanitizer)
! #   define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1
! #  endif
! # endif
  #endif
  
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/config/allocator/new_allocator_base.h gcc-10.4.0/libstdc++-v3/config/allocator/new_allocator_base.h
*** gcc-10.3.0/libstdc++-v3/config/allocator/new_allocator_base.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/config/allocator/new_allocator_base.h	Tue Jun 28 08:54:31 2022
*************** namespace std
*** 52,59 ****
  # define __allocator_base  __gnu_cxx::new_allocator
  #endif
  
! #if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR)
! # define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1
  #endif
  
  #endif
--- 52,65 ----
  # define __allocator_base  __gnu_cxx::new_allocator
  #endif
  
! #ifndef _GLIBCXX_SANITIZE_STD_ALLOCATOR
! # if defined(__SANITIZE_ADDRESS__)
! #  define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1
! # elif defined __has_feature
! #  if __has_feature(address_sanitizer)
! #   define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1
! #  endif
! # endif
  #endif
  
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/html/faq.html gcc-10.4.0/libstdc++-v3/doc/html/faq.html
*** gcc-10.3.0/libstdc++-v3/doc/html/faq.html	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/html/faq.html	Tue Jun 28 08:54:31 2022
***************
*** 456,462 ****
           <code class="varname">CPLUSPLUS_CPP_SPEC</code> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
!          <span class="command"><strong>g++ -E -dM - &lt; /dev/null"</strong></span> to display
           a list of predefined macros for any particular installation.
        </p><p>This has been discussed on the mailing lists
           <a class="link" href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris" target="_top">quite a bit</a>.
--- 456,462 ----
           <code class="varname">CPLUSPLUS_CPP_SPEC</code> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
!          <span class="command"><strong>g++ -E -dM -x c++ /dev/null</strong></span> to display
           a list of predefined macros for any particular installation.
        </p><p>This has been discussed on the mailing lists
           <a class="link" href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&amp;format=builtin-long&amp;sort=score&amp;words=_XOPEN_SOURCE+Solaris" target="_top">quite a bit</a>.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/html/manual/setup.html gcc-10.4.0/libstdc++-v3/doc/html/manual/setup.html
*** gcc-10.3.0/libstdc++-v3/doc/html/manual/setup.html	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/html/manual/setup.html	Tue Jun 28 08:54:31 2022
***************
*** 42,47 ****
--- 42,80 ----
     </p><p>
     Finally, a few system-specific requirements:
     </p><div class="variablelist"><dl class="variablelist"><dt><span class="term">linux</span></dt><dd><p>
+ 	  The 'gnu' locale model makes use of <code class="function">iconv</code>
+ 	  for character set conversions. The relevant functions are provided
+ 	  by Glibc and so are always available, however they can also be
+ 	  provided by the separate GNU libiconv library. If GNU libiconv is
+ 	  found when GCC is built (e.g., because its headers are installed
+ 	  in <code class="filename">/usr/local/include</code>)
+ 	  then the <code class="filename">libstdc++.so.6</code> library will have a
+ 	  run-time dependency on <code class="filename">libiconv.so.2</code>.
+ 	  If you do not want that run-time dependency then you should do
+ 	  one of the following:
+ 	</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ 	      Uninstall the libiconv headers before building GCC.
+ 	      Glibc already provides <code class="function">iconv</code> so you should
+ 	      not need libiconv anyway.
+ 	    </p></li><li class="listitem"><p>
+ 	    <a class="link" href="https://www.gnu.org/software/libiconv/#downloading" target="_top">
+ 	    Download</a> the libiconv sources and extract them into the
+ 	    top level of the GCC source tree, e.g.,
+ 	    </p><pre class="programlisting">
+ wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
+ tar xf libiconv-1.16.tar.gz
+ ln -s libiconv-1.16 libiconv
+ </pre><p>
+ 	      This will build libiconv as part of building GCC and link to
+ 	      it statically, so there is no <code class="filename">libiconv.so.2</code>
+ 	      dependency.
+ 	    </p></li><li class="listitem"><p>
+ 	      Configure GCC with <code class="option">--with-libiconv-type=static</code>.
+ 	      This requires the static <code class="filename">libiconv.a</code> library,
+ 	      which is not installed by default. You might need to reinstall
+ 	      libiconv using the <code class="option">--enable-static</code> configure
+ 	      option to get the static library.
+ 	    </p></li></ul></div><p>
  	  If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt
  	  will be made to use "C" library functionality necessary for
  	  C++ named locale support.  For GCC 4.6.0 and later, this
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/html/manual/status.html gcc-10.4.0/libstdc++-v3/doc/html/manual/status.html
*** gcc-10.3.0/libstdc++-v3/doc/html/manual/status.html	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/html/manual/status.html	Tue Jun 28 08:54:31 2022
***************
*** 5,12 ****
  </th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
  This status table is based on the table of contents of ISO/IEC 14882:2003.
  </p><p>
! This section describes the C++ support in mainline GCC, not in any
! particular release.
  </p><div class="table"><a id="table.cxx98_status"></a><p class="title"><strong>Table 1.1. C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>18</em></span>
        </td><td colspan="3" align="left">
--- 5,11 ----
  </th><td width="20%" align="right"> <a accesskey="n" href="license.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a id="manual.intro.status"></a>Chapter 1. Status</h2></div></div></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="section"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.1998.status">Implementation Status</a></span></dt><dt><span class="section"><a href="status.html#iso.1998.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2011">C++ 2011</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2011.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2014">C++ 2014</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.specific">Implementation Specific Behavior</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2014.filesystemts">Filesystem TS</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="status.html#status.iso.2017">C++ 2017</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.2017.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.2020">C++ 2020</a></span></dt><dt><span class="section"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.tr1.specific">Implementation Specific Behavior</a></span></dt></dl></dd><dt><span class="section"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt><dt><span class="section"><a href="status.html#status.iso.specfun">C++ IS 29124</a></span></dt><dd><dl><dt><span class="section"><a href="status.html#iso.specfun.specific">Implementation Specific Behavior</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="section"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="section"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="section"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="section"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.iso"></a>Implementation Status</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.1998"></a>C++ 1998/2003</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="iso.1998.status"></a>Implementation Status</h4></div></div></div><p>
  This status table is based on the table of contents of ISO/IEC 14882:2003.
  </p><p>
! This section describes the C++ support in the GCC 10 release series.
  </p><div class="table"><a id="table.cxx98_status"></a><p class="title"><strong>Table 1.1. C++ 1998/2003 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>18</em></span>
        </td><td colspan="3" align="left">
*************** since that release.
*** 160,167 ****
  </p><p>
  This status table is based on the table of contents of ISO/IEC 14882:2011.
  </p><p>
! This section describes the C++11 support in mainline GCC, not in any
! particular release.
  </p><div class="table"><a id="table.cxx11_status"></a><p class="title"><strong>Table 1.2. C++ 2011 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>18</em></span>
        </td><td colspan="3" align="left">
--- 159,165 ----
  </p><p>
  This status table is based on the table of contents of ISO/IEC 14882:2011.
  </p><p>
! This section describes the C++11 support in the GCC 10 release series.
  </p><div class="table"><a id="table.cxx11_status"></a><p class="title"><strong>Table 1.2. C++ 2011 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2011 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>18</em></span>
        </td><td colspan="3" align="left">
*************** This status table is based on the table
*** 419,426 ****
  Some subclauses are not shown in the table where the content is unchanged
  since C++11 and the implementation is complete.
  </p><p>
! This section describes the C++14 and library TS support in mainline GCC,
! not in any particular release.
  </p><div class="table"><a id="table.cxx14_status"></a><p class="title"><strong>Table 1.3. C++ 2014 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2014 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>18</em></span>
        </td><td colspan="3" align="left">
--- 417,423 ----
  Some subclauses are not shown in the table where the content is unchanged
  since C++11 and the implementation is complete.
  </p><p>
! This section describes the C++14 and library TS support in the GCC 10 release series.
  </p><div class="table"><a id="table.cxx14_status"></a><p class="title"><strong>Table 1.3. C++ 2014 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ 2014 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>18</em></span>
        </td><td colspan="3" align="left">
*************** GCC 9.1 was the first release with non-e
*** 563,570 ****
  so the API and ABI of features added in C++17 is only stable
  since that release.
  </p><p>
! This section describes the C++17 and library TS support in mainline GCC,
! not in any particular release.
  </p><p>
  The following table lists new library features that are included in
  the C++17 standard. The "Proposal" column provides a link to the
--- 560,566 ----
  so the API and ABI of features added in C++17 is only stable
  since that release.
  </p><p>
! This section describes the C++17 and library TS support in the GCC 10 release series.
  </p><p>
  The following table lists new library features that are included in
  the C++17 standard. The "Proposal" column provides a link to the
*************** since C++14 and the implementation is co
*** 932,938 ****
  	<span class="emphasis"><em>28</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>Algorithms</em></span>
!       </td></tr><tr><td align="left">28.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">28.2</td><td align="left">Header <code class="code">&lt;algorithm&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">28.3</td><td align="left">Algorithms requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">28.4</td><td align="left">Parallel algorithms</td><td align="left"> </td><td align="left">Using <a class="link" href="https://github.com/intel/parallelstl" target="_top">PSTL</a></td></tr><tr><td align="left">28.5</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.6</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.7</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.8</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
        <span class="emphasis"><em>29</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>Numerics</em></span>
--- 928,934 ----
  	<span class="emphasis"><em>28</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>Algorithms</em></span>
!       </td></tr><tr><td align="left">28.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">28.2</td><td align="left">Header <code class="code">&lt;algorithm&gt;</code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">28.3</td><td align="left">Algorithms requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">28.4</td><td align="left">Parallel algorithms</td><td align="left"> </td><td align="left">Using <a class="link" href="https://github.com/llvm/llvm-project/tree/main/pstl" target="_top">PSTL</a></td></tr><tr><td align="left">28.5</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.6</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.7</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.8</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">
        <span class="emphasis"><em>29</em></span>
        </td><td colspan="3" align="left">
  	<span class="emphasis"><em>Numerics</em></span>
*************** options. The pre-defined symbol
*** 1128,1135 ****
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This section describes the C++20 and library TS support in mainline GCC,
! not in any particular release.
  </p><p>
  The following table lists new library features that have been accepted into
  the C++20 working draft. The "Proposal" column provides a link to the
--- 1124,1130 ----
  <code class="constant">__cplusplus</code> is used to check for the
  presence of the required flag.
  </p><p>
! This section describes the C++20 and library TS support in the GCC 10 release series.
  </p><p>
  The following table lists new library features that have been accepted into
  the C++20 working draft. The "Proposal" column provides a link to the
*************** or any notes about the implementation.
*** 1285,1291 ****
        </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> Ranges Design Cleanup </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf" target="_top">
          P1252R2 </a>
!       </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
          <span class="bold"><strong>Time, dates, calendars, time zones</strong></span>
        </td></tr><tr bgcolor="#C8B0B0"><td align="left">  Extending chrono to Calendars and Time Zones </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html" target="_top">
--- 1280,1289 ----
        </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr><td align="left"> Ranges Design Cleanup </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1252r2.pdf" target="_top">
          P1252R2 </a>
!       </td><td align="center"> 10.1 </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left"> Avoid template bloat for <code class="code">safe_ranges</code> in combination with ‘subrange-y’ view adaptors.</td><td align="left">
!         <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1739r4.html" target="_top">
!         P1739R4 </a>
!       </td><td align="center"> </td><td align="left"> </td></tr><tr><td colspan="4" align="left">
          <span class="bold"><strong>Time, dates, calendars, time zones</strong></span>
        </td></tr><tr bgcolor="#C8B0B0"><td align="left">  Extending chrono to Calendars and Time Zones </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r7.html" target="_top">
*************** or any notes about the implementation.
*** 1558,1564 ****
        </td><td align="center"> 8.1 </td><td align="left"> <code class="code">__cpp_lib_endian &gt;= 201907L</code> </td></tr><tr><td align="left"> Bit operations </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html" target="_top">
          P0553R4 </a>
!       </td><td align="center"> 10.1 </td><td align="left"> <code class="code">__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left">  Well-behaved interpolation for numbers and pointers </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html" target="_top">
          P0811R3 </a>
        </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_interpolate &gt;= 201902L</code> </td></tr><tr><td align="left"> Mathematical constants </td><td align="left">
--- 1556,1562 ----
        </td><td align="center"> 8.1 </td><td align="left"> <code class="code">__cpp_lib_endian &gt;= 201907L</code> </td></tr><tr><td align="left"> Bit operations </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html" target="_top">
          P0553R4 </a>
!       </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </td></tr><tr><td align="left">  Well-behaved interpolation for numbers and pointers </td><td align="left">
          <a class="link" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0811r3.html" target="_top">
          P0811R3 </a>
        </td><td align="center"> 9.1 </td><td align="left"> <code class="code">__cpp_lib_interpolate &gt;= 201902L</code> </td></tr><tr><td align="left"> Mathematical constants </td><td align="left">
*************** In this implementation the header names
*** 1585,1592 ****
  <code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
  <code class="code">&lt;tr1/memory&gt;</code>, and so on.
  </p><p>
! This page describes the TR1 support in mainline GCC, not in any particular
! release.
  </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.9. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
  	<p>
  	  Uses code from
--- 1583,1589 ----
  <code class="code">tr1/</code>, for instance <code class="code">&lt;tr1/functional&gt;</code>,
  <code class="code">&lt;tr1/memory&gt;</code>, and so on.
  </p><p>
! This page describes the TR1 support in the GCC 10 release series.
  </p><div class="table"><a id="table.tr1_status"></a><p class="title"><strong>Table 1.9. C++ TR1 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code">&lt;functional&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code">&lt;memory&gt;</code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left">
  	<p>
  	  Uses code from
*************** ISO/IEC TR 24733 Date: 2009-08-28
*** 1606,1613 ****
  Extension for the programming language C++ to support
  decimal floating-point arithmetic
  </p><p>
! This page describes the TR 24733 support in mainline GCC, not in any
! particular release.
  </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.10. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>0</em></span>
        </td><td colspan="3" align="left">
--- 1603,1609 ----
  Extension for the programming language C++ to support
  decimal floating-point arithmetic
  </p><p>
! This page describes the TR 24733 support in the GCC 10 release series.
  </p><div class="table"><a id="table.decfp_status"></a><p class="title"><strong>Table 1.10. C++ TR 24733 Implementation Status</strong></p><div class="table-contents"><table class="table" summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" class="c1" /><col align="left" class="c2" /><col align="left" class="c3" /><col align="left" class="c4" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left">
  	<span class="emphasis"><em>0</em></span>
        </td><td colspan="3" align="left">
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/faq.xml gcc-10.4.0/libstdc++-v3/doc/xml/faq.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/faq.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/faq.xml	Tue Jun 28 08:54:31 2022
***************
*** 580,586 ****
           <varname>CPLUSPLUS_CPP_SPEC</varname> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
!          <command>g++ -E -dM - &lt; /dev/null"</command> to display
           a list of predefined macros for any particular installation.
        </para>
        <para>This has been discussed on the mailing lists
--- 580,586 ----
           <varname>CPLUSPLUS_CPP_SPEC</varname> in
           the gcc config headers for your target (and try changing them to
           see what happens when building complicated code).  You can also run
!          <command>g++ -E -dM -x c++ /dev/null</command> to display
           a list of predefined macros for any particular installation.
        </para>
        <para>This has been discussed on the mailing lists
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/intro.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/intro.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/intro.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/intro.xml	Tue Jun 28 08:54:31 2022
***************
*** 55,61 ****
      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
      </xi:include>
  
!     <!-- Section 01.7 : Status C++ IS 24733 -->
      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxis29124.xml">
      </xi:include>
    </section>
--- 55,61 ----
      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml">
      </xi:include>
  
!     <!-- Section 01.7 : Status C++ IS 29124 -->
      <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxis29124.xml">
      </xi:include>
    </section>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/prerequisites.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/prerequisites.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/prerequisites.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/prerequisites.xml	Tue Jun 28 08:54:31 2022
***************
*** 50,55 ****
--- 50,106 ----
  
  	<listitem>
  	<para>
+ 	  The 'gnu' locale model makes use of <function>iconv</function>
+ 	  for character set conversions. The relevant functions are provided
+ 	  by Glibc and so are always available, however they can also be
+ 	  provided by the separate GNU libiconv library. If GNU libiconv is
+ 	  found when GCC is built (e.g., because its headers are installed
+ 	  in <filename class="directory">/usr/local/include</filename>)
+ 	  then the <filename>libstdc++.so.6</filename> library will have a
+ 	  run-time dependency on <filename>libiconv.so.2</filename>.
+ 	  If you do not want that run-time dependency then you should do
+ 	  one of the following:
+ 	</para>
+ 	<itemizedlist>
+ 	  <listitem>
+ 	    <para>
+ 	      Uninstall the libiconv headers before building GCC.
+ 	      Glibc already provides <function>iconv</function> so you should
+ 	      not need libiconv anyway.
+ 	    </para>
+ 	  </listitem>
+ 	  <listitem>
+ 	    <para>
+ 	    <link xmlns:xlink="http://www.w3.org/1999/xlink"
+ 	      xlink:href="https://www.gnu.org/software/libiconv/#downloading">
+ 	    Download</link> the libiconv sources and extract them into the
+ 	    top level of the GCC source tree, e.g.,
+ 	    </para>
+ <programlisting>
+ wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz
+ tar xf libiconv-1.16.tar.gz
+ ln -s libiconv-1.16 libiconv
+ </programlisting>
+ 	    <para>
+ 	      This will build libiconv as part of building GCC and link to
+ 	      it statically, so there is no <filename>libiconv.so.2</filename>
+ 	      dependency.
+ 	    </para>
+ 	  </listitem>
+ 	  <listitem>
+ 	    <para>
+ 	      Configure GCC with <option>--with-libiconv-type=static</option>.
+ 	      This requires the static <filename>libiconv.a</filename> library,
+ 	      which is not installed by default. You might need to reinstall
+ 	      libiconv using the <option>--enable-static</option> configure
+ 	      option to get the static library.
+ 	    </para>
+ 	  </listitem>
+ 	</itemizedlist>
+ 	</listitem>
+ 
+ 	<listitem>
+ 	<para>
  	  If GCC 3.1.0 or later on is being used on GNU/Linux, an attempt
  	  will be made to use "C" library functionality necessary for
  	  C++ named locale support.  For GCC 4.6.0 and later, this
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml	Tue Jun 28 08:54:31 2022
*************** This status table is based on the table
*** 18,25 ****
  </para>
  
  <para>
! This section describes the C++ support in mainline GCC, not in any
! particular release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 18,24 ----
  </para>
  
  <para>
! This section describes the C++ support in the GCC 10 release series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2011.xml	Tue Jun 28 08:54:31 2022
*************** This status table is based on the table
*** 34,41 ****
  </para>
  
  <para>
! This section describes the C++11 support in mainline GCC, not in any
! particular release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 34,40 ----
  </para>
  
  <para>
! This section describes the C++11 support in the GCC 10 release series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2014.xml	Tue Jun 28 08:54:31 2022
*************** since C++11 and the implementation is co
*** 29,36 ****
  </para>
  
  <para>
! This section describes the C++14 and library TS support in mainline GCC,
! not in any particular release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 29,35 ----
  </para>
  
  <para>
! This section describes the C++14 and library TS support in the GCC 10 release series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2017.xml	Tue Jun 28 08:54:31 2022
*************** since that release.
*** 23,30 ****
  </para>
  
  <para>
! This section describes the C++17 and library TS support in mainline GCC,
! not in any particular release.
  </para>
  
  <para>
--- 23,29 ----
  </para>
  
  <para>
! This section describes the C++17 and library TS support in the GCC 10 release series.
  </para>
  
  <para>
*************** since C++14 and the implementation is co
*** 1885,1891 ****
        <entry>28.4</entry>
        <entry>Parallel algorithms</entry>
        <entry/>
!       <entry>Using <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://github.com/intel/parallelstl">PSTL</link></entry>
      </row>
      <row>
        <entry>28.5</entry>
--- 1884,1890 ----
        <entry>28.4</entry>
        <entry>Parallel algorithms</entry>
        <entry/>
!       <entry>Using <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="https://github.com/llvm/llvm-project/tree/main/pstl">PSTL</link></entry>
      </row>
      <row>
        <entry>28.5</entry>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2020.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2020.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxx2020.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxx2020.xml	Tue Jun 28 08:54:31 2022
*************** presence of the required flag.
*** 20,27 ****
  </para>
  
  <para>
! This section describes the C++20 and library TS support in mainline GCC,
! not in any particular release.
  </para>
  
  <para>
--- 20,26 ----
  </para>
  
  <para>
! This section describes the C++20 and library TS support in the GCC 10 release series.
  </para>
  
  <para>
*************** or any notes about the implementation.
*** 548,553 ****
--- 547,562 ----
        <entry />
      </row>
  
+     <row>
+       <?dbhtml bgcolor="#C8B0B0" ?>
+       <entry> Avoid template bloat for <code>safe_ranges</code> in combination with ‘subrange-y’ view adaptors.</entry>
+       <entry>
+         <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p1739r4.html">
+         P1739R4 </link>
+       </entry>
+       <entry align="center"> </entry>
+       <entry />
+     </row>
  
  
      <row>
*************** or any notes about the implementation.
*** 1388,1394 ****
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html">
          P0553R4 </link>
        </entry>
!       <entry align="center"> 10.1 </entry>
        <entry> <code>__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </entry>
      </row>
  
--- 1397,1403 ----
          <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0553r4.html">
          P0553R4 </link>
        </entry>
!       <entry align="center"> 9.1 </entry>
        <entry> <code>__cpp_lib_bitops &gt;= 201907L</code> (since 9.4, see Note 1) </entry>
      </row>
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml	Tue Jun 28 08:54:31 2022
*************** In this implementation the header names
*** 22,29 ****
  </para>
  
  <para>
! This page describes the TR1 support in mainline GCC, not in any particular
! release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 22,28 ----
  </para>
  
  <para>
! This page describes the TR1 support in the GCC 10 release series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
*** gcc-10.3.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml	Tue Jun 28 08:54:31 2022
*************** decimal floating-point arithmetic
*** 16,23 ****
  </para>
  
  <para>
! This page describes the TR 24733 support in mainline GCC, not in any
! particular release.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
--- 16,22 ----
  </para>
  
  <para>
! This page describes the TR 24733 support in the GCC 10 release series.
  </para>
  
  <!-- Status is Yes or No, Broken/Partial-->
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/Makefile.am gcc-10.4.0/libstdc++-v3/include/Makefile.am
*** gcc-10.3.0/libstdc++-v3/include/Makefile.am	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/Makefile.am	Tue Jun 28 08:54:31 2022
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1297,1302 ****
--- 1297,1304 ----
  	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
  	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
+ 	    -e 's/LT_OBJDIR/_GLIBCXX_LT_OBJDIR/g' \
+ 	    -e 's/STDC_HEADERS/_GLIBCXX_STDC_HEADERS/g' \
  	    -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \
  	    -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \
  	    -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/Makefile.in gcc-10.4.0/libstdc++-v3/include/Makefile.in
*** gcc-10.3.0/libstdc++-v3/include/Makefile.in	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/Makefile.in	Tue Jun 28 08:54:31 2022
*************** ${host_builddir}/c++config.h: ${CONFIG_H
*** 1778,1783 ****
--- 1778,1785 ----
  	    -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
  	    -e 's/VERSION/_GLIBCXX_VERSION/g' \
  	    -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
+ 	    -e 's/LT_OBJDIR/_GLIBCXX_LT_OBJDIR/g' \
+ 	    -e 's/STDC_HEADERS/_GLIBCXX_STDC_HEADERS/g' \
  	    -e 's/_DARWIN_USE_64_BIT_INODE/_GLIBCXX_DARWIN_USE_64_BIT_INODE/g' \
  	    -e 's/_FILE_OFFSET_BITS/_GLIBCXX_FILE_OFFSET_BITS/g' \
  	    -e 's/_LARGE_FILES/_GLIBCXX_LARGE_FILES/g' \
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/alloc_traits.h gcc-10.4.0/libstdc++-v3/include/bits/alloc_traits.h
*** gcc-10.3.0/libstdc++-v3/include/bits/alloc_traits.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/alloc_traits.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 341,347 ****
        { __a.deallocate(__p, __n); }
  
        /**
!        *  @brief  Construct an object of type @a _Tp
         *  @param  __a  An allocator.
         *  @param  __p  Pointer to memory of suitable size and alignment for Tp
         *  @param  __args Constructor arguments.
--- 341,347 ----
        { __a.deallocate(__p, __n); }
  
        /**
!        *  @brief  Construct an object of type `_Tp`
         *  @param  __a  An allocator.
         *  @param  __p  Pointer to memory of suitable size and alignment for Tp
         *  @param  __args Constructor arguments.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 556,561 ****
--- 556,665 ----
        */
        static _GLIBCXX20_CONSTEXPR allocator_type
        select_on_container_copy_construction(const allocator_type& __rhs)
+       { return __rhs; }
+     };
+ 
+   /// Explicit specialization for std::allocator<void>.
+   template<>
+     struct allocator_traits<allocator<void>>
+     {
+       /// The allocator type
+       using allocator_type = allocator<void>;
+ 
+       /// The allocated type
+       using value_type = void;
+ 
+       /// The allocator's pointer type.
+       using pointer = void*;
+ 
+       /// The allocator's const pointer type.
+       using const_pointer = const void*;
+ 
+       /// The allocator's void pointer type.
+       using void_pointer = void*;
+ 
+       /// The allocator's const void pointer type.
+       using const_void_pointer = const void*;
+ 
+       /// The allocator's difference type
+       using difference_type = std::ptrdiff_t;
+ 
+       /// The allocator's size type
+       using size_type = std::size_t;
+ 
+       /// How the allocator is propagated on copy assignment
+       using propagate_on_container_copy_assignment = false_type;
+ 
+       /// How the allocator is propagated on move assignment
+       using propagate_on_container_move_assignment = true_type;
+ 
+       /// How the allocator is propagated on swap
+       using propagate_on_container_swap = false_type;
+ 
+       /// Whether all instances of the allocator type compare equal.
+       using is_always_equal = true_type;
+ 
+       template<typename _Up>
+ 	using rebind_alloc = allocator<_Up>;
+ 
+       template<typename _Up>
+ 	using rebind_traits = allocator_traits<allocator<_Up>>;
+ 
+       /// allocate is ill-formed for allocator<void>
+       static void*
+       allocate(allocator_type&, size_type, const void* = nullptr) = delete;
+ 
+       /// deallocate is ill-formed for allocator<void>
+       static void
+       deallocate(allocator_type&, void*, size_type) = delete;
+ 
+       /**
+        *  @brief  Construct an object of type `_Up`
+        *  @param  __a  An allocator.
+        *  @param  __p  Pointer to memory of suitable size and alignment for
+        *	       an object of type `_Up`.
+        *  @param  __args Constructor arguments.
+        *
+        *  Calls `__a.construct(__p, std::forward<_Args>(__args)...)`
+        *  in C++11, C++14 and C++17. Changed in C++20 to call
+        *  `std::construct_at(__p, std::forward<_Args>(__args)...)` instead.
+       */
+       template<typename _Up, typename... _Args>
+ 	static _GLIBCXX20_CONSTEXPR void
+ 	construct(allocator_type&, _Up* __p, _Args&&... __args)
+ 	noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
+ 	{
+ #if __cplusplus <= 201703L
+ 	  ::new((void *)__p) _Up(std::forward<_Args>(__args)...);
+ #else
+ 	  std::construct_at(__p, std::forward<_Args>(__args)...);
+ #endif
+ 	}
+ 
+       /**
+        *  @brief  Destroy an object of type `_Up`
+        *  @param  __a  An allocator.
+        *  @param  __p  Pointer to the object to destroy
+        *
+        *  Invokes the destructor for `*__p`.
+       */
+       template<typename _Up>
+ 	static _GLIBCXX20_CONSTEXPR void
+ 	destroy(allocator_type&, _Up* __p)
+ 	noexcept(is_nothrow_destructible<_Up>::value)
+ 	{ std::_Destroy(__p); }
+ 
+       /// max_size is ill-formed for allocator<void>
+       static size_type
+       max_size(const allocator_type&) = delete;
+ 
+       /**
+        *  @brief  Obtain an allocator to use when copying a container.
+        *  @param  __rhs  An allocator.
+        *  @return `__rhs`
+       */
+       static _GLIBCXX20_CONSTEXPR allocator_type
+       select_on_container_copy_construction(const allocator_type& __rhs)
        { return __rhs; }
      };
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/allocator.h gcc-10.4.0/libstdc++-v3/include/bits/allocator.h
*** gcc-10.3.0/libstdc++-v3/include/bits/allocator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/allocator.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 60,65 ****
--- 60,72 ----
     *  @{
     */
  
+   // Since C++20 the primary template should be used for allocator<void>,
+   // but then it would have a non-trivial default ctor and dtor for C++20,
+   // but trivial for C++98-17, which would be an ABI incompatibiliy between
+   // different standard dialects. So C++20 still uses the allocator<void>
+   // explicit specialization, with the historical ABI properties, but with
+   // the same members that are present in the primary template.
+ 
    /// allocator<void> specialization.
    template<>
      class allocator<void>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 68,111 ****
        typedef void        value_type;
        typedef size_t      size_type;
        typedef ptrdiff_t   difference_type;
  #if __cplusplus <= 201703L
        typedef void*       pointer;
        typedef const void* const_pointer;
  
        template<typename _Tp1>
  	struct rebind
  	{ typedef allocator<_Tp1> other; };
! #else
!       allocator() = default;
! 
!       template<typename _Up>
! 	constexpr
! 	allocator(const allocator<_Up>&) { }
! #endif // ! C++20
  
! #if __cplusplus >= 201103L && __cplusplus <= 201703L
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 2103. std::allocator propagate_on_container_move_assignment
        typedef true_type propagate_on_container_move_assignment;
  
        typedef true_type is_always_equal;
  
!       template<typename _Up, typename... _Args>
! 	void
! 	construct(_Up* __p, _Args&&... __args)
! 	noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
! 	{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
  
        template<typename _Up>
! 	void
! 	destroy(_Up* __p)
! 	noexcept(std::is_nothrow_destructible<_Up>::value)
! 	{ __p->~_Up(); }
! #endif // C++11 to C++17
      };
  
    /**
!    * @brief  The @a standard allocator, as per [20.4].
     *
     *  See https://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#std.util.memory.allocator
     *  for further details.
--- 75,117 ----
        typedef void        value_type;
        typedef size_t      size_type;
        typedef ptrdiff_t   difference_type;
+ 
  #if __cplusplus <= 201703L
+       // These were removed for C++20, allocator_traits does the right thing.
        typedef void*       pointer;
        typedef const void* const_pointer;
  
        template<typename _Tp1>
  	struct rebind
  	{ typedef allocator<_Tp1> other; };
! #endif
  
! #if __cplusplus >= 201103L
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 2103. std::allocator propagate_on_container_move_assignment
        typedef true_type propagate_on_container_move_assignment;
  
        typedef true_type is_always_equal;
  
! #if __cplusplus > 201703L
!       // As noted above, these members are present for C++20 to provide the
!       // same API as the primary template, but still trivial as in pre-C++20.
!       allocator() = default;
!       ~allocator() = default;
  
        template<typename _Up>
! 	constexpr
! 	allocator(const allocator<_Up>&) noexcept { }
! 
!       // No allocate member because it's ill-formed by LWG 3307.
!       // No deallocate member because it would be undefined to call it
!       // with any pointer which wasn't obtained from allocate.
! #endif // C++20
! #endif // C++11
      };
  
    /**
!    * @brief  The @a standard allocator, as per C++03 [20.4.1].
     *
     *  See https://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#std.util.memory.allocator
     *  for further details.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 119,125 ****
--- 125,133 ----
        typedef _Tp        value_type;
        typedef size_t     size_type;
        typedef ptrdiff_t  difference_type;
+ 
  #if __cplusplus <= 201703L
+       // These were removed for C++20.
        typedef _Tp*       pointer;
        typedef const _Tp* const_pointer;
        typedef _Tp&       reference;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 184,190 ****
  	    return;
  	  }
  #endif
! 	  __allocator_base<_Tp>::deallocate(__p, __n);
        }
  #endif // C++20
  
--- 192,198 ----
  	    return;
  	  }
  #endif
! 	__allocator_base<_Tp>::deallocate(__p, __n);
        }
  #endif // C++20
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/atomic_base.h gcc-10.4.0/libstdc++-v3/include/bits/atomic_base.h
*** gcc-10.3.0/libstdc++-v3/include/bits/atomic_base.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/atomic_base.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1695,1701 ****
  
  #endif // C++2a
  
!   // @} group atomics
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 1695,1701 ----
  
  #endif // C++2a
  
!   /// @} group atomics
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/basic_ios.h gcc-10.4.0/libstdc++-v3/include/bits/basic_ios.h
*** gcc-10.3.0/libstdc++-v3/include/bits/basic_ios.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/basic_ios.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 67,73 ****
      class basic_ios : public ios_base
      {
      public:
!       //@{
        /**
         *  These are standard types.  They permit a standardized way of
         *  referring to names of (or names dependent on) the template
--- 67,73 ----
      class basic_ios : public ios_base
      {
      public:
!       ///@{
        /**
         *  These are standard types.  They permit a standardized way of
         *  referring to names of (or names dependent on) the template
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 78,86 ****
        typedef typename _Traits::pos_type             pos_type;
        typedef typename _Traits::off_type             off_type;
        typedef _Traits                                traits_type;
!       //@}
  
!       //@{
        /**
         *  These are non-standard types.
        */
--- 78,86 ----
        typedef typename _Traits::pos_type             pos_type;
        typedef typename _Traits::off_type             off_type;
        typedef _Traits                                traits_type;
!       ///@}
  
!       ///@{
        /**
         *  These are non-standard types.
        */
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 89,95 ****
  						     __num_put_type;
        typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
  						     __num_get_type;
!       //@}
  
        // Data members:
      protected:
--- 89,95 ----
  						     __num_put_type;
        typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
  						     __num_get_type;
!       ///@}
  
        // Data members:
      protected:
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 106,112 ****
        const __num_get_type*                          _M_num_get;
  
      public:
!       //@{
        /**
         *  @brief  The quick-and-easy status check.
         *
--- 106,112 ----
        const __num_get_type*                          _M_num_get;
  
      public:
!       ///@{
        /**
         *  @brief  The quick-and-easy status check.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 124,130 ****
        bool
        operator!() const
        { return this->fail(); }
!       //@}
  
        /**
         *  @brief  Returns the error state of the stream buffer.
--- 124,130 ----
        bool
        operator!() const
        { return this->fail(); }
!       ///@}
  
        /**
         *  @brief  Returns the error state of the stream buffer.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/basic_string.h gcc-10.4.0/libstdc++-v3/include/bits/basic_string.h
*** gcc-10.3.0/libstdc++-v3/include/bits/basic_string.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/basic_string.h	Tue Jun 28 08:54:31 2022
***************
*** 48,58 ****
  # include <string_view>
  #endif
  
- 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
  #if _GLIBCXX_USE_CXX11_ABI
  _GLIBCXX_BEGIN_NAMESPACE_CXX11
    /**
--- 48,66 ----
  # include <string_view>
  #endif
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
+ #ifdef __cpp_lib_is_constant_evaluated
+ // Support P1032R1 in C++20 (but not P0980R1 yet).
+ # define __cpp_lib_constexpr_string 201811L
+ #elif __cplusplus >= 201703L
+ // Support P0426R1 changes to char_traits in C++17.
+ # define __cpp_lib_constexpr_string 201611L
+ #elif __cplusplus > 201703L
+ #endif
+ 
  #if _GLIBCXX_USE_CXX11_ABI
  _GLIBCXX_BEGIN_NAMESPACE_CXX11
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 524,530 ****
  #endif
        basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
        : _M_dataplus(_M_local_data(), __a)
!       { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); }
  
        /**
         *  @brief  Construct string as multiple characters.
--- 532,543 ----
  #endif
        basic_string(const _CharT* __s, const _Alloc& __a = _Alloc())
        : _M_dataplus(_M_local_data(), __a)
!       {
! 	const _CharT* __end = __s ? __s + traits_type::length(__s)
! 	  // We just need a non-null pointer here to get an exception:
! 	  : reinterpret_cast<const _CharT*>(__alignof__(_CharT));
! 	_M_construct(__s, __end, random_access_iterator_tag());
!       }
  
        /**
         *  @brief  Construct string as multiple characters.
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 4672,4681 ****
  
        /**
         *  @brief  Insert a string_view.
!        *  @param __pos  Position in string to insert at.
!        *  @param __svt  The object convertible to string_view to insert from.
!        *  @param __pos  Position in string_view to insert
!        *  from.
         *  @param __n    The number of characters to insert.
         *  @return  Reference to this string.
        */
--- 4685,4693 ----
  
        /**
         *  @brief  Insert a string_view.
!        *  @param __pos1  Position in string to insert at.
!        *  @param __svt   The object convertible to string_view to insert from.
!        *  @param __pos2  Position in string_view to insert from.
         *  @param __n    The number of characters to insert.
         *  @return  Reference to this string.
        */
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/char_traits.h gcc-10.4.0/libstdc++-v3/include/bits/char_traits.h
*** gcc-10.3.0/libstdc++-v3/include/bits/char_traits.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/char_traits.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 192,209 ****
      {
        if (__n == 0)
  	return __s1;
! #ifdef __cpp_lib_is_constant_evaluated
        if (std::is_constant_evaluated())
  	{
! 	  if (__s1 > __s2 && __s1 < __s2 + __n)
! 	    std::copy_backward(__s2, __s2 + __n, __s1 + __n);
  	  else
! 	    std::copy(__s2, __s2 + __n, __s1);
  	  return __s1;
  	}
  #endif
!       return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
! 						    __n * sizeof(char_type)));
      }
  
    template<typename _CharT>
--- 192,237 ----
      {
        if (__n == 0)
  	return __s1;
! #if __cpp_lib_is_constant_evaluated
        if (std::is_constant_evaluated())
  	{
! 	  if (__s1 == __s2) // unlikely, but saves a lot of work
! 	    return __s1;
! #if __cpp_constexpr_dynamic_alloc
! 	  // The overlap detection below fails due to PR c++/89074,
! 	  // so use a temporary buffer instead.
! 	  char_type* __tmp = new char_type[__n];
! 	  copy(__tmp, __s2, __n);
! 	  copy(__s1, __tmp, __n);
! 	  delete[] __tmp;
! #else
! 	  const auto __end = __s2 + __n - 1;
! 	  bool __overlap = false;
! 	  for (std::size_t __i = 0; __i < __n - 1; ++__i)
! 	    {
! 	      if (__s1 + __i == __end)
! 		{
! 		  __overlap = true;
! 		  break;
! 		}
! 	    }
! 	  if (__overlap)
! 	    {
! 	      do
! 		{
! 		  --__n;
! 		  assign(__s1[__n], __s2[__n]);
! 		}
! 	      while (__n > 0);
! 	    }
  	  else
! 	    copy(__s1, __s2, __n);
! #endif
  	  return __s1;
  	}
  #endif
!       __builtin_memmove(__s1, __s2, __n * sizeof(char_type));
!       return __s1;
      }
  
    template<typename _CharT>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 237,248 ****
  
  #if __cplusplus >= 201703L
  
! #if __cplusplus == 201703L
! // Unofficial macro indicating P0426R1 support
! # define __cpp_lib_constexpr_char_traits 201611L
! #else
! // Also support P1032R1 in C++20
  # define __cpp_lib_constexpr_char_traits 201811L
  #endif
  
    /**
--- 265,276 ----
  
  #if __cplusplus >= 201703L
  
! #ifdef __cpp_lib_is_constant_evaluated
! // Unofficial macro indicating P1032R1 support in C++20
  # define __cpp_lib_constexpr_char_traits 201811L
+ #else
+ // Unofficial macro indicating P0426R1 support in C++17
+ # define __cpp_lib_constexpr_char_traits 201611L
  #endif
  
    /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 253,259 ****
     *  Assumes that _CharT is a built-in character type.
     */
    template<typename _CharT>
!     static _GLIBCXX_ALWAYS_INLINE constexpr bool
      __constant_string_p(const _CharT* __s)
      {
  #ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED
--- 281,287 ----
     *  Assumes that _CharT is a built-in character type.
     */
    template<typename _CharT>
!     _GLIBCXX_ALWAYS_INLINE constexpr bool
      __constant_string_p(const _CharT* __s)
      {
  #ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 276,282 ****
     *  Assumes that _CharT is a built-in character type.
     */
    template<typename _CharT>
!     static _GLIBCXX_ALWAYS_INLINE constexpr bool
      __constant_char_array_p(const _CharT* __a, size_t __n)
      {
  #ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED
--- 304,310 ----
     *  Assumes that _CharT is a built-in character type.
     */
    template<typename _CharT>
!     _GLIBCXX_ALWAYS_INLINE constexpr bool
      __constant_char_array_p(const _CharT* __a, size_t __n)
      {
  #ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/forward_list.h gcc-10.4.0/libstdc++-v3/include/bits/forward_list.h
*** gcc-10.3.0/libstdc++-v3/include/bits/forward_list.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/forward_list.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1152,1158 ****
        splice_after(const_iterator __pos, forward_list&,
  		   const_iterator __before, const_iterator __last) noexcept
        { _M_splice_after(__pos, __before, __last); }
!       // @}
  
      private:
  #if __cplusplus > 201703L
--- 1152,1158 ----
        splice_after(const_iterator __pos, forward_list&,
  		   const_iterator __before, const_iterator __last) noexcept
        { _M_splice_after(__pos, __before, __last); }
!       /// @}
  
      private:
  #if __cplusplus > 201703L
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/forward_list.tcc gcc-10.4.0/libstdc++-v3/include/bits/forward_list.tcc
*** gcc-10.3.0/libstdc++-v3/include/bits/forward_list.tcc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/forward_list.tcc	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 372,377 ****
--- 372,382 ----
        forward_list<_Tp, _Alloc>::
        merge(forward_list&& __list, _Comp __comp)
        {
+ 	// _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	// 3088. forward_list::merge behavior unclear when passed *this
+ 	if (std::__addressof(__list) == this)
+ 	  return;
+ 
  	_Node_base* __node = &this->_M_impl._M_head;
  	while (__node->_M_next && __list._M_impl._M_head._M_next)
  	  {
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/fs_dir.h gcc-10.4.0/libstdc++-v3/include/bits/fs_dir.h
*** gcc-10.3.0/libstdc++-v3/include/bits/fs_dir.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/fs_dir.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 455,461 ****
    inline directory_iterator
    end(directory_iterator) noexcept
    { return directory_iterator(); }
!   // @}
  
    /// Iterator type for recursively traversing a directory hierarchy.
    class recursive_directory_iterator
--- 455,461 ----
    inline directory_iterator
    end(directory_iterator) noexcept
    { return directory_iterator(); }
!   /// @}
  
    /// Iterator type for recursively traversing a directory hierarchy.
    class recursive_directory_iterator
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 553,563 ****
    inline recursive_directory_iterator
    end(recursive_directory_iterator) noexcept
    { return recursive_directory_iterator(); }
!   // @}
  
  _GLIBCXX_END_NAMESPACE_CXX11
  
!   // @} group filesystem
  } // namespace filesystem
  
    // Use explicit instantiations of these types. Any inconsistency in the
--- 553,563 ----
    inline recursive_directory_iterator
    end(recursive_directory_iterator) noexcept
    { return recursive_directory_iterator(); }
!   /// @}
  
  _GLIBCXX_END_NAMESPACE_CXX11
  
!   /// @} group filesystem
  } // namespace filesystem
  
    // Use explicit instantiations of these types. Any inconsistency in the
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/fs_fwd.h gcc-10.4.0/libstdc++-v3/include/bits/fs_fwd.h
*** gcc-10.3.0/libstdc++-v3/include/bits/fs_fwd.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/fs_fwd.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 339,345 ****
    bool is_symlink(file_status) noexcept;
  
  } // namespace filesystem
! // @}
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // C++17
--- 339,345 ----
    bool is_symlink(file_status) noexcept;
  
  } // namespace filesystem
! /// @}
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // C++17
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/fs_ops.h gcc-10.4.0/libstdc++-v3/include/bits/fs_ops.h
*** gcc-10.3.0/libstdc++-v3/include/bits/fs_ops.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/fs_ops.h	Tue Jun 28 08:54:31 2022
***************
*** 22,28 ****
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
! /** @file include/bits/fs_fwd.h
   *  This is an internal header file, included by other library headers.
   *  Do not attempt to use it directly. @headername{filesystem}
   */
--- 22,28 ----
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
! /** @file include/bits/fs_ops.h
   *  This is an internal header file, included by other library headers.
   *  Do not attempt to use it directly. @headername{filesystem}
   */
*************** namespace filesystem
*** 302,308 ****
    path weakly_canonical(const path& __p);
    path weakly_canonical(const path& __p, error_code& __ec);
  
!   // @} group filesystem
  } // namespace filesystem
  
  _GLIBCXX_END_NAMESPACE_VERSION
--- 302,308 ----
    path weakly_canonical(const path& __p);
    path weakly_canonical(const path& __p, error_code& __ec);
  
!   /// @} group filesystem
  } // namespace filesystem
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/fs_path.h gcc-10.4.0/libstdc++-v3/include/bits/fs_path.h
*** gcc-10.3.0/libstdc++-v3/include/bits/fs_path.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/fs_path.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 116,122 ****
  
    template<typename _Source>
      struct __constructible_from<_Source, void>
!     : decltype(__is_path_src(std::declval<_Source>(), 0))
      { };
  
    template<typename _Tp1, typename _Tp2 = void>
--- 116,122 ----
  
    template<typename _Source>
      struct __constructible_from<_Source, void>
!     : decltype(__is_path_src(std::declval<const _Source&>(), 0))
      { };
  
    template<typename _Tp1, typename _Tp2 = void>
*************** namespace __detail
*** 1340,1346 ****
      return _M_at_end == __rhs._M_at_end;
    }
  
!   // @} group filesystem
  _GLIBCXX_END_NAMESPACE_CXX11
  } // namespace filesystem
  
--- 1340,1346 ----
      return _M_at_end == __rhs._M_at_end;
    }
  
!   /// @} group filesystem
  _GLIBCXX_END_NAMESPACE_CXX11
  } // namespace filesystem
  
*************** inline ptrdiff_t
*** 1348,1354 ****
  distance(filesystem::path::iterator __first, filesystem::path::iterator __last)
  { return __path_iter_distance(__first, __last); }
  
! template<typename _InputIterator, typename _Distance>
    void
    advance(filesystem::path::iterator& __i, _Distance __n)
    { __path_iter_advance(__i, static_cast<ptrdiff_t>(__n)); }
--- 1348,1354 ----
  distance(filesystem::path::iterator __first, filesystem::path::iterator __last)
  { return __path_iter_distance(__first, __last); }
  
! template<typename _Distance>
    void
    advance(filesystem::path::iterator& __i, _Distance __n)
    { __path_iter_advance(__i, static_cast<ptrdiff_t>(__n)); }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/functional_hash.h gcc-10.4.0/libstdc++-v3/include/bits/functional_hash.h
*** gcc-10.3.0/libstdc++-v3/include/bits/functional_hash.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/functional_hash.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 269,275 ****
      };
  #endif
  
!   // @} group hashes
  
    // Hint about performance of hash functor. If not fast the hash-based
    // containers will cache the hash code.
--- 269,275 ----
      };
  #endif
  
!   /// @} group hashes
  
    // Hint about performance of hash functor. If not fast the hash-based
    // containers will cache the hash code.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/gslice.h gcc-10.4.0/libstdc++-v3/include/bits/gslice.h
*** gcc-10.3.0/libstdc++-v3/include/bits/gslice.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/gslice.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 177,183 ****
      return *this;
    }
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 177,183 ----
      return *this;
    }
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/gslice_array.h gcc-10.4.0/libstdc++-v3/include/bits/gslice_array.h
*** gcc-10.3.0/libstdc++-v3/include/bits/gslice_array.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/gslice_array.h	Tue Jun 28 08:54:31 2022
*************** _DEFINE_VALARRAY_OPERATOR(>>, __shift_ri
*** 215,221 ****
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 215,221 ----
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/hashtable.h gcc-10.4.0/libstdc++-v3/include/bits/hashtable.h
*** gcc-10.3.0/libstdc++-v3/include/bits/hashtable.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/hashtable.h	Tue Jun 28 08:54:31 2022
***************
*** 33,38 ****
--- 33,39 ----
  #pragma GCC system_header
  
  #include <bits/hashtable_policy.h>
+ #include <bits/enable_special_members.h>
  #if __cplusplus > 201402L
  # include <bits/node_handle.h>
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 48,53 ****
--- 49,64 ----
  		       // Mandatory to have erase not throwing.
  		       __is_nothrow_invocable<const _Hash&, const _Tp&>>>;
  
+   // Helper to conditionally delete the default constructor.
+   // The _Hash_node_base type is used to distinguish this specialization
+   // from any other potentially-overlapping subobjects of the hashtable.
+   template<typename _Equal, typename _Hash, typename _Allocator>
+     using _Hashtable_enable_default_ctor
+       = _Enable_default_constructor<__and_<is_default_constructible<_Equal>,
+ 				       is_default_constructible<_Hash>,
+ 				       is_default_constructible<_Allocator>>{},
+ 				    __detail::_Hash_node_base>;
+ 
    /**
     *  Primary class template _Hashtable.
     *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 184,190 ****
        private __detail::_Hashtable_alloc<
  	__alloc_rebind<_Alloc,
  		       __detail::_Hash_node<_Value,
! 					    _Traits::__hash_cached::value>>>
      {
        static_assert(is_same<typename remove_cv<_Value>::type, _Value>::value,
  	  "unordered container must have a non-const, non-volatile value_type");
--- 195,202 ----
        private __detail::_Hashtable_alloc<
  	__alloc_rebind<_Alloc,
  		       __detail::_Hash_node<_Value,
! 					    _Traits::__hash_cached::value>>>,
!       private _Hashtable_enable_default_ctor<_Equal, _H1, _Alloc>
      {
        static_assert(is_same<typename remove_cv<_Value>::type, _Value>::value,
  	  "unordered container must have a non-const, non-volatile value_type");
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 206,211 ****
--- 218,225 ----
  	typename __hashtable_alloc::__node_alloc_traits;
        using __node_base = typename __hashtable_alloc::__node_base;
        using __bucket_type = typename __hashtable_alloc::__bucket_type;
+       using __enable_default_ctor
+ 	= _Hashtable_enable_default_ctor<_Equal, _H1, _Alloc>;
  
      public:
        typedef _Key						key_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 443,451 ****
  		 const _Equal& __eq, const _ExtractKey& __exk,
  		 const allocator_type& __a)
        : __hashtable_base(__exk, __h1, __h2, __h, __eq),
! 	__hashtable_alloc(__node_alloc_type(__a))
        { }
  
      public:
        // Constructor, destructor, assignment, swap
        _Hashtable() = default;
--- 457,490 ----
  		 const _Equal& __eq, const _ExtractKey& __exk,
  		 const allocator_type& __a)
        : __hashtable_base(__exk, __h1, __h2, __h, __eq),
! 	__hashtable_alloc(__node_alloc_type(__a)),
! 	__enable_default_ctor(_Enable_default_constructor_tag{})
        { }
  
+       template<bool _No_realloc = true>
+ 	static constexpr bool
+ 	_S_nothrow_move()
+ 	{
+ #if __cplusplus <= 201402L
+ 	  return __and_<__bool_constant<_No_realloc>,
+ 			is_nothrow_copy_constructible<_H1>,
+ 			is_nothrow_copy_constructible<_Equal>>::value;
+ #else
+ 	  if constexpr (_No_realloc)
+ 	    if constexpr (is_nothrow_copy_constructible<_H1>())
+ 	      return is_nothrow_copy_constructible<_Equal>();
+ 	  return false;
+ #endif
+ 	}
+ 
+       _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a,
+ 		 true_type /* alloc always equal */)
+ 	noexcept(_S_nothrow_move());
+ 
+       _Hashtable(_Hashtable&&, __node_alloc_type&&,
+ 		 false_type /* alloc always equal */);
+ 
+ 
      public:
        // Constructor, destructor, assignment, swap
        _Hashtable() = default;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 463,478 ****
  
        _Hashtable(const _Hashtable&);
  
!       _Hashtable(_Hashtable&&) noexcept;
  
        _Hashtable(const _Hashtable&, const allocator_type&);
  
!       _Hashtable(_Hashtable&&, const allocator_type&);
  
        // Use delegating constructors.
        explicit
        _Hashtable(const allocator_type& __a)
!       : __hashtable_alloc(__node_alloc_type(__a))
        { }
  
        explicit
--- 502,526 ----
  
        _Hashtable(const _Hashtable&);
  
!       _Hashtable(_Hashtable&& __ht)
! 	noexcept(_S_nothrow_move())
!       : _Hashtable(std::move(__ht), std::move(__ht._M_node_allocator()),
! 		   true_type{})
!       { }
  
        _Hashtable(const _Hashtable&, const allocator_type&);
  
!       _Hashtable(_Hashtable&& __ht, const allocator_type& __a)
! 	noexcept(_S_nothrow_move<__node_alloc_traits::_S_always_equal()>())
!       : _Hashtable(std::move(__ht), __node_alloc_type(__a),
! 		   typename __node_alloc_traits::is_always_equal{})
!       { }
  
        // Use delegating constructors.
        explicit
        _Hashtable(const allocator_type& __a)
!       : __hashtable_alloc(__node_alloc_type(__a)),
! 	__enable_default_ctor(_Enable_default_constructor_tag{})
        { }
  
        explicit
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1270,1275 ****
--- 1318,1324 ----
        __rehash_base(__ht),
        __hashtable_alloc(
  	__node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())),
+       __enable_default_ctor(__ht),
        _M_buckets(nullptr),
        _M_bucket_count(__ht._M_bucket_count),
        _M_element_count(__ht._M_element_count),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1285,1302 ****
  	   typename _Traits>
      _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
  	       _H1, _H2, _Hash, _RehashPolicy, _Traits>::
!     _Hashtable(_Hashtable&& __ht) noexcept
      : __hashtable_base(__ht),
        __map_base(__ht),
        __rehash_base(__ht),
!       __hashtable_alloc(std::move(__ht._M_base_alloc())),
        _M_buckets(__ht._M_buckets),
        _M_bucket_count(__ht._M_bucket_count),
        _M_before_begin(__ht._M_before_begin._M_nxt),
        _M_element_count(__ht._M_element_count),
        _M_rehash_policy(__ht._M_rehash_policy)
      {
!       // Update, if necessary, buckets if __ht is using its single bucket.
        if (__ht._M_uses_single_bucket())
  	{
  	  _M_buckets = &_M_single_bucket;
--- 1334,1354 ----
  	   typename _Traits>
      _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
  	       _H1, _H2, _Hash, _RehashPolicy, _Traits>::
!     _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a,
! 	       true_type /* alloc always equal */)
!     noexcept(_S_nothrow_move())
      : __hashtable_base(__ht),
        __map_base(__ht),
        __rehash_base(__ht),
!       __hashtable_alloc(std::move(__a)),
!       __enable_default_ctor(__ht),
        _M_buckets(__ht._M_buckets),
        _M_bucket_count(__ht._M_bucket_count),
        _M_before_begin(__ht._M_before_begin._M_nxt),
        _M_element_count(__ht._M_element_count),
        _M_rehash_policy(__ht._M_rehash_policy)
      {
!       // Update buckets if __ht is using its single bucket.
        if (__ht._M_uses_single_bucket())
  	{
  	  _M_buckets = &_M_single_bucket;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1322,1327 ****
--- 1374,1380 ----
        __map_base(__ht),
        __rehash_base(__ht),
        __hashtable_alloc(__node_alloc_type(__a)),
+       __enable_default_ctor(__ht),
        _M_buckets(),
        _M_bucket_count(__ht._M_bucket_count),
        _M_element_count(__ht._M_element_count),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1337,1347 ****
  	   typename _Traits>
      _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
  	       _H1, _H2, _Hash, _RehashPolicy, _Traits>::
!     _Hashtable(_Hashtable&& __ht, const allocator_type& __a)
      : __hashtable_base(__ht),
        __map_base(__ht),
        __rehash_base(__ht),
!       __hashtable_alloc(__node_alloc_type(__a)),
        _M_buckets(nullptr),
        _M_bucket_count(__ht._M_bucket_count),
        _M_element_count(__ht._M_element_count),
--- 1390,1402 ----
  	   typename _Traits>
      _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal,
  	       _H1, _H2, _Hash, _RehashPolicy, _Traits>::
!     _Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a,
! 	       false_type /* alloc always equal */)
      : __hashtable_base(__ht),
        __map_base(__ht),
        __rehash_base(__ht),
!       __hashtable_alloc(std::move(__a)),
!       __enable_default_ctor(__ht),
        _M_buckets(nullptr),
        _M_bucket_count(__ht._M_bucket_count),
        _M_element_count(__ht._M_element_count),
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/hashtable_policy.h gcc-10.4.0/libstdc++-v3/include/bits/hashtable_policy.h
*** gcc-10.3.0/libstdc++-v3/include/bits/hashtable_policy.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/hashtable_policy.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 1109,1115 ****
      struct _Hashtable_ebo_helper<_Nm, _Tp, true>
      : private _Tp
      {
!       _Hashtable_ebo_helper() = default;
  
        template<typename _OtherTp>
  	_Hashtable_ebo_helper(_OtherTp&& __tp)
--- 1109,1115 ----
      struct _Hashtable_ebo_helper<_Nm, _Tp, true>
      : private _Tp
      {
!       _Hashtable_ebo_helper() noexcept(noexcept(_Tp())) : _Tp() { }
  
        template<typename _OtherTp>
  	_Hashtable_ebo_helper(_OtherTp&& __tp)
*************** namespace __detail
*** 1135,1141 ****
        _Tp& _M_get() { return _M_tp; }
  
      private:
!       _Tp _M_tp;
      };
  
    /**
--- 1135,1141 ----
        _Tp& _M_get() { return _M_tp; }
  
      private:
!       _Tp _M_tp{};
      };
  
    /**
*************** namespace __detail
*** 1789,1794 ****
--- 1789,1795 ----
  
    protected:
      _Hashtable_base() = default;
+ 
      _Hashtable_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2,
  		    const _Hash& __hash, const _Equal& __eq)
      : __hash_code_base(__ex, __h1, __h2, __hash), _EqualEBO(__eq)
*************** namespace __detail
*** 2099,2105 ****
        __bucket_alloc_traits::deallocate(__alloc, __ptr, __bkt_count);
      }
  
!  //@} hashtable-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 2100,2106 ----
        __bucket_alloc_traits::deallocate(__alloc, __ptr, __bkt_count);
      }
  
!  ///@} hashtable-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/indirect_array.h gcc-10.4.0/libstdc++-v3/include/bits/indirect_array.h
*** gcc-10.3.0/libstdc++-v3/include/bits/indirect_array.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/indirect_array.h	Tue Jun 28 08:54:31 2022
*************** _DEFINE_VALARRAY_OPERATOR(>>, __shift_ri
*** 204,210 ****
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 204,210 ----
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/iterator_concepts.h gcc-10.4.0/libstdc++-v3/include/bits/iterator_concepts.h
*** gcc-10.3.0/libstdc++-v3/include/bits/iterator_concepts.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/iterator_concepts.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 220,225 ****
--- 220,234 ----
      template<typename _Tp> requires is_object_v<_Tp>
        struct __cond_value_type<_Tp>
        { using value_type = remove_cv_t<_Tp>; };
+ 
+     template<typename _Tp>
+       concept __has_member_value_type
+ 	= requires { typename _Tp::value_type; };
+ 
+     template<typename _Tp>
+       concept __has_member_element_type
+ 	= requires { typename _Tp::element_type; };
+ 
    } // namespace __detail
  
    template<typename> struct indirectly_readable_traits { };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 238,253 ****
      : indirectly_readable_traits<_Iter>
      { };
  
!   template<typename _Tp> requires requires { typename _Tp::value_type; }
      struct indirectly_readable_traits<_Tp>
      : __detail::__cond_value_type<typename _Tp::value_type>
      { };
  
!   template<typename _Tp> requires requires { typename _Tp::element_type; }
      struct indirectly_readable_traits<_Tp>
      : __detail::__cond_value_type<typename _Tp::element_type>
      { };
  
    namespace __detail
    {
      template<typename _Tp>
--- 247,279 ----
      : indirectly_readable_traits<_Iter>
      { };
  
!   template<__detail::__has_member_value_type _Tp>
      struct indirectly_readable_traits<_Tp>
      : __detail::__cond_value_type<typename _Tp::value_type>
      { };
  
!   template<__detail::__has_member_element_type _Tp>
      struct indirectly_readable_traits<_Tp>
      : __detail::__cond_value_type<typename _Tp::element_type>
      { };
  
+   // _GLIBCXX_RESOLVE_LIB_DEFECTS
+   // 3446. indirectly_readable_traits ambiguity for types with both [...]
+   template<__detail::__has_member_value_type _Tp>
+     requires __detail::__has_member_element_type<_Tp>
+     && same_as<remove_cv_t<typename _Tp::element_type>,
+ 	       remove_cv_t<typename _Tp::value_type>>
+     struct indirectly_readable_traits<_Tp>
+     : __detail::__cond_value_type<typename _Tp::value_type>
+     { };
+ 
+   // LWG 3446 doesn't add this, but it's needed for the case where
+   // value_type and element_type are both present, but not the same type.
+   template<__detail::__has_member_value_type _Tp>
+     requires __detail::__has_member_element_type<_Tp>
+     struct indirectly_readable_traits<_Tp>
+     { };
+ 
    namespace __detail
    {
      template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 547,554 ****
  
    /// Requirements on types that can be incremented with ++.
    template<typename _Iter>
!     concept weakly_incrementable = default_initializable<_Iter>
!       && movable<_Iter>
        && requires(_Iter __i)
        {
  	typename iter_difference_t<_Iter>;
--- 573,579 ----
  
    /// Requirements on types that can be incremented with ++.
    template<typename _Iter>
!     concept weakly_incrementable = movable<_Iter>
        && requires(_Iter __i)
        {
  	typename iter_difference_t<_Iter>;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/locale_classes.h gcc-10.4.0/libstdc++-v3/include/bits/locale_classes.h
*** gcc-10.3.0/libstdc++-v3/include/bits/locale_classes.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/locale_classes.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 85,91 ****
      template<typename _Cache>
        friend struct __use_cache;
  
!     //@{
      /**
       *  @brief  Category values.
       *
--- 85,91 ----
      template<typename _Cache>
        friend struct __use_cache;
  
!     ///@{
      /**
       *  @brief  Category values.
       *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 104,110 ****
      static const category messages	= 1L << 5;
      static const category all		= (ctype | numeric | collate |
  					   time  | monetary | messages);
!     //@}
  
      // Construct/copy/destroy:
  
--- 104,110 ----
      static const category messages	= 1L << 5;
      static const category all		= (ctype | numeric | collate |
  					   time  | monetary | messages);
!     ///@}
  
      // Construct/copy/destroy:
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 645,655 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       //@}
  
      protected:
        // Underlying "C" library locale information saved from
--- 645,655 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       ///@}
  
      protected:
        // Underlying "C" library locale information saved from
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 818,828 ****
      class _GLIBCXX_NAMESPACE_CXX11 collate_byname : public collate<_CharT>
      {
      public:
!       //@{
        /// Public typedefs
        typedef _CharT               char_type;
        typedef basic_string<_CharT> string_type;
!       //@}
  
        explicit
        collate_byname(const char* __s, size_t __refs = 0)
--- 818,828 ----
      class _GLIBCXX_NAMESPACE_CXX11 collate_byname : public collate<_CharT>
      {
      public:
!       ///@{
        /// Public typedefs
        typedef _CharT               char_type;
        typedef basic_string<_CharT> string_type;
!       ///@}
  
        explicit
        collate_byname(const char* __s, size_t __refs = 0)
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/locale_facets.h gcc-10.4.0/libstdc++-v3/include/bits/locale_facets.h
*** gcc-10.3.0/libstdc++-v3/include/bits/locale_facets.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/locale_facets.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1671,1681 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       //@}
        typedef __numpunct_cache<_CharT>  __cache_type;
  
      protected:
--- 1671,1681 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       ///@}
        typedef __numpunct_cache<_CharT>  __cache_type;
  
      protected:
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 1953,1963 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _InIter			iter_type;
!       //@}
  
        /// Numpunct facet id.
        static locale::id			id;
--- 1953,1963 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _InIter			iter_type;
!       ///@}
  
        /// Numpunct facet id.
        static locale::id			id;
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2000,2006 ****
  	  ios_base::iostate& __err, bool& __v) const
        { return this->do_get(__in, __end, __io, __err, __v); }
  
!       //@{
        /**
         *  @brief  Numeric parsing.
         *
--- 2000,2006 ----
  	  ios_base::iostate& __err, bool& __v) const
        { return this->do_get(__in, __end, __io, __err, __v); }
  
!       ///@{
        /**
         *  @brief  Numeric parsing.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2063,2071 ****
  	  ios_base::iostate& __err, unsigned long long& __v)  const
        { return this->do_get(__in, __end, __io, __err, __v); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief  Numeric parsing.
         *
--- 2063,2071 ----
  	  ios_base::iostate& __err, unsigned long long& __v)  const
        { return this->do_get(__in, __end, __io, __err, __v); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief  Numeric parsing.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2106,2112 ****
        get(iter_type __in, iter_type __end, ios_base& __io,
  	  ios_base::iostate& __err, long double& __v) const
        { return this->do_get(__in, __end, __io, __err, __v); }
!       //@}
  
        /**
         *  @brief  Numeric parsing.
--- 2106,2112 ----
        get(iter_type __in, iter_type __end, ios_base& __io,
  	  ios_base::iostate& __err, long double& __v) const
        { return this->do_get(__in, __end, __io, __err, __v); }
!       ///@}
  
        /**
         *  @brief  Numeric parsing.
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2193,2199 ****
  	  return __ret;
  	}
  
!       //@{
        /**
         *  @brief  Numeric parsing.
         *
--- 2193,2199 ----
  	  return __ret;
  	}
  
!       ///@{
        /**
         *  @brief  Numeric parsing.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2270,2276 ****
        do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
  	     long double&) const;
  #endif
!       //@}
      };
  
    template<typename _CharT, typename _InIter>
--- 2270,2276 ----
        do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
  	     long double&) const;
  #endif
!       ///@}
      };
  
    template<typename _CharT, typename _InIter>
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2294,2304 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT		char_type;
        typedef _OutIter		iter_type;
!       //@}
  
        /// Numpunct facet id.
        static locale::id		id;
--- 2294,2304 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT		char_type;
        typedef _OutIter		iter_type;
!       ///@}
  
        /// Numpunct facet id.
        static locale::id		id;
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2332,2338 ****
        put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
        { return this->do_put(__s, __io, __fill, __v); }
  
!       //@{
        /**
         *  @brief  Numeric formatting.
         *
--- 2332,2338 ----
        put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
        { return this->do_put(__s, __io, __fill, __v); }
  
!       ///@{
        /**
         *  @brief  Numeric formatting.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2389,2397 ****
  	  unsigned long long __v) const
        { return this->do_put(__s, __io, __fill, __v); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief  Numeric formatting.
         *
--- 2389,2397 ----
  	  unsigned long long __v) const
        { return this->do_put(__s, __io, __fill, __v); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief  Numeric formatting.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2441,2447 ****
        put(iter_type __s, ios_base& __io, char_type __fill,
  	  long double __v) const
        { return this->do_put(__s, __io, __fill, __v); }
!       //@}
  
        /**
         *  @brief  Numeric formatting.
--- 2441,2447 ----
        put(iter_type __s, ios_base& __io, char_type __fill,
  	  long double __v) const
        { return this->do_put(__s, __io, __fill, __v); }
!       ///@}
  
        /**
         *  @brief  Numeric formatting.
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2492,2498 ****
        virtual
        ~num_put() { }
  
!       //@{
        /**
         *  @brief  Numeric formatting.
         *
--- 2492,2498 ----
        virtual
        ~num_put() { }
  
!       ///@{
        /**
         *  @brief  Numeric formatting.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL
*** 2550,2556 ****
        virtual iter_type
        do_put(iter_type, ios_base&, char_type, long double) const;
  #endif
!       //@}
      };
  
    template <typename _CharT, typename _OutIter>
--- 2550,2556 ----
        virtual iter_type
        do_put(iter_type, ios_base&, char_type, long double) const;
  #endif
!       ///@}
      };
  
    template <typename _CharT, typename _OutIter>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/locale_facets_nonio.h gcc-10.4.0/libstdc++-v3/include/bits/locale_facets_nonio.h
*** gcc-10.3.0/libstdc++-v3/include/bits/locale_facets_nonio.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/locale_facets_nonio.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 369,379 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _InIter			iter_type;
!       //@}
  
        /// Numpunct facet id.
        static locale::id			id;
--- 369,379 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _InIter			iter_type;
!       ///@}
  
        /// Numpunct facet id.
        static locale::id			id;
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 798,808 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _OutIter			iter_type;
!       //@}
  
        /// Numpunct facet id.
        static locale::id			id;
--- 798,808 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _OutIter			iter_type;
!       ///@}
  
        /// Numpunct facet id.
        static locale::id			id;
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1025,1035 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       //@}
        typedef __moneypunct_cache<_CharT, _Intl>     __cache_type;
  
      private:
--- 1025,1035 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       ///@}
        typedef __moneypunct_cache<_CharT, _Intl>     __cache_type;
  
      private:
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1201,1207 ****
        frac_digits() const
        { return this->do_frac_digits(); }
  
!       //@{
        /**
         *  @brief  Return pattern for money values.
         *
--- 1201,1207 ----
        frac_digits() const
        { return this->do_frac_digits(); }
  
!       ///@{
        /**
         *  @brief  Return pattern for money values.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1240,1246 ****
        pattern
        neg_format() const
        { return this->do_neg_format(); }
!       //@}
  
      protected:
        /// Destructor.
--- 1240,1246 ----
        pattern
        neg_format() const
        { return this->do_neg_format(); }
!       ///@}
  
      protected:
        /// Destructor.
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11
*** 1469,1480 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _InIter			iter_type;
        typedef basic_string<_CharT>	string_type;
!       //@}
  
        /// Numpunct facet id.
        static locale::id			id;
--- 1469,1480 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _InIter			iter_type;
        typedef basic_string<_CharT>	string_type;
!       ///@}
  
        /// Numpunct facet id.
        static locale::id			id;
*************** _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11
*** 1621,1632 ****
      class money_put : public locale::facet
      {
      public:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _OutIter			iter_type;
        typedef basic_string<_CharT>	string_type;
!       //@}
  
        /// Numpunct facet id.
        static locale::id			id;
--- 1621,1632 ----
      class money_put : public locale::facet
      {
      public:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef _OutIter			iter_type;
        typedef basic_string<_CharT>	string_type;
!       ///@}
  
        /// Numpunct facet id.
        static locale::id			id;
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1800,1810 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       //@}
  
      protected:
        // Underlying "C" library locale information saved from
--- 1800,1810 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
        typedef _CharT			char_type;
        typedef basic_string<_CharT>	string_type;
!       ///@}
  
      protected:
        // Underlying "C" library locale information saved from
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/mask_array.h gcc-10.4.0/libstdc++-v3/include/bits/mask_array.h
*** gcc-10.3.0/libstdc++-v3/include/bits/mask_array.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/mask_array.h	Tue Jun 28 08:54:31 2022
*************** _DEFINE_VALARRAY_OPERATOR(>>, __shift_ri
*** 205,211 ****
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 205,211 ----
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/memoryfwd.h gcc-10.4.0/libstdc++-v3/include/bits/memoryfwd.h
*** gcc-10.3.0/libstdc++-v3/include/bits/memoryfwd.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/memoryfwd.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 63,77 ****
    template<typename>
      class allocator;
  
- #if __cplusplus <= 201703L
    template<>
      class allocator<void>;
- #endif
  
  #if __cplusplus >= 201103L
!   /// Declare uses_allocator so it can be specialized in \<queue\> etc.
    template<typename, typename>
      struct uses_allocator;
  #endif
  
    /// @} group memory
--- 63,78 ----
    template<typename>
      class allocator;
  
    template<>
      class allocator<void>;
  
  #if __cplusplus >= 201103L
!   /// Declare uses_allocator so it can be specialized in `<queue>` etc.
    template<typename, typename>
      struct uses_allocator;
+ 
+   template<typename>
+     struct allocator_traits;
  #endif
  
    /// @} group memory
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/move.h gcc-10.4.0/libstdc++-v3/include/bits/move.h
*** gcc-10.3.0/libstdc++-v3/include/bits/move.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/move.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 86,93 ****
      constexpr _Tp&&
      forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
      {
!       static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument"
! 		    " substituting _Tp is an lvalue reference type");
        return static_cast<_Tp&&>(__t);
      }
  
--- 86,93 ----
      constexpr _Tp&&
      forward(typename std::remove_reference<_Tp>::type&& __t) noexcept
      {
!       static_assert(!std::is_lvalue_reference<_Tp>::value,
! 	  "std::forward must not be used to convert an rvalue to an lvalue");
        return static_cast<_Tp&&>(__t);
      }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/random.h gcc-10.4.0/libstdc++-v3/include/bits/random.h
*** gcc-10.3.0/libstdc++-v3/include/bits/random.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/random.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1673,1679 ****
      };
    };
  
!   /* @} */ // group random_generators
  
    /**
     * @addtogroup random_distributions Random Number Distributions
--- 1673,1679 ----
      };
    };
  
!   /// @} group random_generators
  
    /**
     * @addtogroup random_distributions Random Number Distributions
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1949,1955 ****
      operator>>(std::basic_istream<_CharT, _Traits>&,
  	       std::uniform_real_distribution<_RealType>&);
  
!   /* @} */ // group random_distributions_uniform
  
    /**
     * @addtogroup random_distributions_normal Normal Distributions
--- 1949,1955 ----
      operator>>(std::basic_istream<_CharT, _Traits>&,
  	       std::uniform_real_distribution<_RealType>&);
  
!   /// @} group random_distributions_uniform
  
    /**
     * @addtogroup random_distributions_normal Normal Distributions
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3504,3510 ****
      { return !(__d1 == __d2); }
  
  
!   /* @} */ // group random_distributions_normal
  
    /**
     * @addtogroup random_distributions_bernoulli Bernoulli Distributions
--- 3504,3510 ----
      { return !(__d1 == __d2); }
  
  
!   /// @} group random_distributions_normal
  
    /**
     * @addtogroup random_distributions_bernoulli Bernoulli Distributions
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 4400,4406 ****
      { return !(__d1 == __d2); }
  
  
!   /* @} */ // group random_distributions_bernoulli
  
    /**
     * @addtogroup random_distributions_poisson Poisson Distributions
--- 4400,4406 ----
      { return !(__d1 == __d2); }
  
  
!   /// @} group random_distributions_bernoulli
  
    /**
     * @addtogroup random_distributions_poisson Poisson Distributions
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 6046,6054 ****
      { return !(__d1 == __d2); }
  
  
!   /* @} */ // group random_distributions_poisson
  
!   /* @} */ // group random_distributions
  
    /**
     * @addtogroup random_utilities Random Number Utilities
--- 6046,6054 ----
      { return !(__d1 == __d2); }
  
  
!   /// @} group random_distributions_poisson
  
!   /// @} *group random_distributions
  
    /**
     * @addtogroup random_utilities Random Number Utilities
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 6071,6077 ****
      : _M_v()
      { }
  
!     template<typename _IntType>
        seed_seq(std::initializer_list<_IntType> __il);
  
      template<typename _InputIterator>
--- 6071,6077 ----
      : _M_v()
      { }
  
!     template<typename _IntType, typename = _Require<is_integral<_IntType>>>
        seed_seq(std::initializer_list<_IntType> __il);
  
      template<typename _InputIterator>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 6099,6107 ****
      std::vector<result_type> _M_v;
    };
  
!   /* @} */ // group random_utilities
  
!   /* @} */ // group random
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 6099,6107 ----
      std::vector<result_type> _M_v;
    };
  
!   /// @} group random_utilities
  
!   /// @} group random
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/random.tcc gcc-10.4.0/libstdc++-v3/include/bits/random.tcc
*** gcc-10.3.0/libstdc++-v3/include/bits/random.tcc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/random.tcc	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1921,1927 ****
        bool __saved_avail;
        if (__is >> __mean >> __stddev >> __saved_avail)
  	{
! 	  if (__saved_avail && (__is >> __x._M_saved))
  	    {
  	      __x._M_saved_available = __saved_avail;
  	      __x.param(param_type(__mean, __stddev));
--- 1921,1927 ----
        bool __saved_avail;
        if (__is >> __mean >> __stddev >> __saved_avail)
  	{
! 	  if (!__saved_avail || (__is >> __x._M_saved))
  	    {
  	      __x._M_saved_available = __saved_avail;
  	      __x.param(param_type(__mean, __stddev));
*************** namespace __detail
*** 3197,3205 ****
      }
  
  
!   template<typename _IntType>
      seed_seq::seed_seq(std::initializer_list<_IntType> __il)
      {
        for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter)
  	_M_v.push_back(__detail::__mod<result_type,
  		       __detail::_Shift<result_type, 32>::__value>(*__iter));
--- 3197,3206 ----
      }
  
  
!   template<typename _IntType, typename>
      seed_seq::seed_seq(std::initializer_list<_IntType> __il)
      {
+       _M_v.reserve(__il.size());
        for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter)
  	_M_v.push_back(__detail::__mod<result_type,
  		       __detail::_Shift<result_type, 32>::__value>(*__iter));
*************** namespace __detail
*** 3208,3213 ****
--- 3209,3217 ----
    template<typename _InputIterator>
      seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end)
      {
+       if _GLIBCXX17_CONSTEXPR (__is_random_access_iter<_InputIterator>::value)
+ 	_M_v.reserve(std::distance(__begin, __end));
+ 
        for (_InputIterator __iter = __begin; __iter != __end; ++__iter)
  	_M_v.push_back(__detail::__mod<result_type,
  		       __detail::_Shift<result_type, 32>::__value>(*__iter));
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/range_access.h gcc-10.4.0/libstdc++-v3/include/bits/range_access.h
*** gcc-10.3.0/libstdc++-v3/include/bits/range_access.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/range_access.h	Tue Jun 28 08:54:31 2022
*************** namespace ranges
*** 773,779 ****
  	_S_noexcept()
  	{
  	  if constexpr (__member_empty<_Tp>)
! 	    return noexcept(std::declval<_Tp>().empty());
  	  else if constexpr (__size0_empty<_Tp>)
  	    return noexcept(_Size{}(std::declval<_Tp>()) == 0);
  	  else
--- 773,779 ----
  	_S_noexcept()
  	{
  	  if constexpr (__member_empty<_Tp>)
! 	    return noexcept(bool(std::declval<_Tp>().empty()));
  	  else if constexpr (__size0_empty<_Tp>)
  	    return noexcept(_Size{}(std::declval<_Tp>()) == 0);
  	  else
*************** namespace ranges
*** 949,1151 ****
  
    // [range.iter.ops] range iterator operations
  
!   template<input_or_output_iterator _It>
!     constexpr void
!     advance(_It& __it, iter_difference_t<_It> __n)
!     {
!       if constexpr (random_access_iterator<_It>)
! 	__it += __n;
!       else if constexpr (bidirectional_iterator<_It>)
! 	{
! 	  if (__n > 0)
! 	    {
! 	      do
! 		{
! 		  ++__it;
! 		}
! 	      while (--__n);
! 	    }
! 	  else if (__n < 0)
! 	    {
! 	      do
! 		{
! 		  --__it;
! 		}
! 	      while (++__n);
! 	    }
! 	}
!       else
! 	{
  #ifdef __cpp_lib_is_constant_evaluated
! 	  if (std::is_constant_evaluated() && __n < 0)
! 	    throw "attempt to decrement a non-bidirectional iterator";
  #endif
! 	  __glibcxx_assert(__n >= 0);
! 	  while (__n-- > 0)
! 	    ++__it;
! 	}
!     }
  
!   template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!     constexpr void
!     advance(_It& __it, _Sent __bound)
!     {
!       if constexpr (assignable_from<_It&, _Sent>)
! 	__it = std::move(__bound);
!       else if constexpr (sized_sentinel_for<_Sent, _It>)
! 	ranges::advance(__it, __bound - __it);
!       else
! 	{
! 	  while (__it != __bound)
! 	    ++__it;
! 	}
!     }
  
!   template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!     constexpr iter_difference_t<_It>
!     advance(_It& __it, iter_difference_t<_It> __n, _Sent __bound)
!     {
!       if constexpr (sized_sentinel_for<_Sent, _It>)
! 	{
! 	  const auto __diff = __bound - __it;
  #ifdef __cpp_lib_is_constant_evaluated
! 	  if (std::is_constant_evaluated()
! 	      && !(__n == 0 || __diff == 0 || (__n < 0 == __diff < 0)))
! 	    throw "inconsistent directions for distance and bound";
  #endif
! 	  // n and bound must not lead in opposite directions:
! 	  __glibcxx_assert(__n == 0 || __diff == 0 || (__n < 0 == __diff < 0));
! 	  const auto __absdiff = __diff < 0 ? -__diff : __diff;
! 	  const auto __absn = __n < 0 ? -__n : __n;;
! 	  if (__absn >= __absdiff)
! 	    {
! 	      ranges::advance(__it, __bound);
! 	      return __n - __diff;
! 	    }
! 	  else
! 	    {
! 	      ranges::advance(__it, __n);
  	      return 0;
! 	    }
! 	}
!       else if (__it == __bound || __n == 0)
! 	return iter_difference_t<_It>(0);
!       else if (__n > 0)
! 	{
! 	  iter_difference_t<_It> __m = 0;
! 	  do
! 	    {
! 	      ++__it;
! 	      ++__m;
! 	    }
! 	  while (__m != __n && __it != __bound);
! 	  return __n - __m;
! 	}
!       else if constexpr (bidirectional_iterator<_It> && same_as<_It, _Sent>)
! 	{
! 	  iter_difference_t<_It> __m = 0;
! 	  do
! 	    {
! 	      --__it;
! 	      --__m;
! 	    }
! 	  while (__m != __n && __it != __bound);
! 	  return __n - __m;
! 	}
!       else
! 	{
  #ifdef __cpp_lib_is_constant_evaluated
! 	  if (std::is_constant_evaluated() && __n < 0)
! 	    throw "attempt to decrement a non-bidirectional iterator";
  #endif
! 	  __glibcxx_assert(__n >= 0);
! 	  return __n;
! 	}
!     }
  
!   template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!     constexpr iter_difference_t<_It>
!     distance(_It __first, _Sent __last)
!     {
!       if constexpr (sized_sentinel_for<_Sent, _It>)
! 	return __last - __first;
!       else
! 	{
! 	  iter_difference_t<_It> __n = 0;
! 	  while (__first != __last)
! 	    {
! 	      ++__first;
! 	      ++__n;
! 	    }
! 	  return __n;
! 	}
!     }
  
!   template<range _Range>
!     constexpr range_difference_t<_Range>
!     distance(_Range&& __r)
!     {
!       if constexpr (sized_range<_Range>)
! 	return static_cast<range_difference_t<_Range>>(ranges::size(__r));
!       else
! 	return ranges::distance(ranges::begin(__r), ranges::end(__r));
!     }
  
!   template<input_or_output_iterator _It>
!     constexpr _It
!     next(_It __x)
!     {
!       ++__x;
!       return __x;
!     }
  
!   template<input_or_output_iterator _It>
!     constexpr _It
!     next(_It __x, iter_difference_t<_It> __n)
!     {
!       ranges::advance(__x, __n);
!       return __x;
!     }
  
!   template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!     constexpr _It
!     next(_It __x, _Sent __bound)
!     {
!       ranges::advance(__x, __bound);
!       return __x;
!     }
  
!   template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!     constexpr _It
!     next(_It __x, iter_difference_t<_It> __n, _Sent __bound)
!     {
!       ranges::advance(__x, __n, __bound);
!       return __x;
!     }
  
!   template<bidirectional_iterator _It>
!     constexpr _It
!     prev(_It __x)
!     {
!       --__x;
!       return __x;
!     }
  
!   template<bidirectional_iterator _It>
!     constexpr _It
!     prev(_It __x, iter_difference_t<_It> __n)
!     {
!       ranges::advance(__x, -__n);
!       return __x;
!     }
  
!   template<bidirectional_iterator _It>
!     constexpr _It
!     prev(_It __x, iter_difference_t<_It> __n, _It __bound)
!     {
!       ranges::advance(__x, -__n, __bound);
!       return __x;
!     }
  
  } // namespace ranges
  #endif // library concepts
--- 949,1174 ----
  
    // [range.iter.ops] range iterator operations
  
!   struct __advance_fn
!   {
!     template<input_or_output_iterator _It>
!       constexpr void
!       operator()(_It& __it, iter_difference_t<_It> __n) const
!       {
! 	if constexpr (random_access_iterator<_It>)
! 	  __it += __n;
! 	else if constexpr (bidirectional_iterator<_It>)
! 	  {
! 	    if (__n > 0)
! 	      {
! 		do
! 		  {
! 		    ++__it;
! 		  }
! 		while (--__n);
! 	      }
! 	    else if (__n < 0)
! 	      {
! 		do
! 		  {
! 		    --__it;
! 		  }
! 		while (++__n);
! 	      }
! 	  }
! 	else
! 	  {
  #ifdef __cpp_lib_is_constant_evaluated
! 	    if (std::is_constant_evaluated() && __n < 0)
! 	      throw "attempt to decrement a non-bidirectional iterator";
  #endif
! 	    __glibcxx_assert(__n >= 0);
! 	    while (__n-- > 0)
! 	      ++__it;
! 	  }
!       }
  
!     template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       constexpr void
!       operator()(_It& __it, _Sent __bound) const
!       {
! 	if constexpr (assignable_from<_It&, _Sent>)
! 	  __it = std::move(__bound);
! 	else if constexpr (sized_sentinel_for<_Sent, _It>)
! 	  (*this)(__it, __bound - __it);
! 	else
! 	  {
! 	    while (__it != __bound)
! 	      ++__it;
! 	  }
!       }
  
!     template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       constexpr iter_difference_t<_It>
!       operator()(_It& __it, iter_difference_t<_It> __n, _Sent __bound) const
!       {
! 	if constexpr (sized_sentinel_for<_Sent, _It>)
! 	  {
! 	    const auto __diff = __bound - __it;
! 
! 	    if (__diff == 0)
! 	      return __n;
! 	    else if (__diff > 0 ? __n >= __diff : __n <= __diff)
! 	      {
! 		(*this)(__it, __bound);
! 		return __n - __diff;
! 	      }
! 	    else if (__n != 0) [[likely]]
! 	      {
  #ifdef __cpp_lib_is_constant_evaluated
! 		if (std::is_constant_evaluated() && !(__n < 0 == __diff < 0))
! 		  throw "inconsistent directions for distance and bound";
  #endif
! 		// n and bound must not lead in opposite directions:
! 		__glibcxx_assert(__n < 0 == __diff < 0);
! 
! 		(*this)(__it, __n);
! 		return 0;
! 	      }
! 	    else
  	      return 0;
! 	  }
! 	else if (__it == __bound || __n == 0)
! 	  return __n;
! 	else if (__n > 0)
! 	  {
! 	    iter_difference_t<_It> __m = 0;
! 	    do
! 	      {
! 		++__it;
! 		++__m;
! 	      }
! 	    while (__m != __n && __it != __bound);
! 	    return __n - __m;
! 	  }
! 	else if constexpr (bidirectional_iterator<_It> && same_as<_It, _Sent>)
! 	  {
! 	    iter_difference_t<_It> __m = 0;
! 	    do
! 	      {
! 		--__it;
! 		--__m;
! 	      }
! 	    while (__m != __n && __it != __bound);
! 	    return __n - __m;
! 	  }
! 	else
! 	  {
  #ifdef __cpp_lib_is_constant_evaluated
! 	    if (std::is_constant_evaluated() && __n < 0)
! 	      throw "attempt to decrement a non-bidirectional iterator";
  #endif
! 	    __glibcxx_assert(__n >= 0);
! 	    return __n;
! 	  }
!       }
!   };
  
!   inline constexpr __advance_fn advance{};
  
!   struct __distance_fn
!   {
!     template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       constexpr iter_difference_t<_It>
!       operator()(_It __first, _Sent __last) const
!       {
! 	if constexpr (sized_sentinel_for<_Sent, _It>)
! 	  return __last - __first;
! 	else
! 	  {
! 	    iter_difference_t<_It> __n = 0;
! 	    while (__first != __last)
! 	      {
! 		++__first;
! 		++__n;
! 	      }
! 	    return __n;
! 	  }
!       }
  
!     template<range _Range>
!       constexpr range_difference_t<_Range>
!       operator()(_Range&& __r) const
!       {
! 	if constexpr (sized_range<_Range>)
! 	  return static_cast<range_difference_t<_Range>>(ranges::size(__r));
! 	else
! 	  return (*this)(ranges::begin(__r), ranges::end(__r));
!       }
!   };
  
!   inline constexpr __distance_fn distance{};
  
!   struct __next_fn
!   {
!     template<input_or_output_iterator _It>
!       constexpr _It
!       operator()(_It __x) const
!       {
! 	++__x;
! 	return __x;
!       }
  
!     template<input_or_output_iterator _It>
!       constexpr _It
!       operator()(_It __x, iter_difference_t<_It> __n) const
!       {
! 	ranges::advance(__x, __n);
! 	return __x;
!       }
  
!     template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       constexpr _It
!       operator()(_It __x, _Sent __bound) const
!       {
! 	ranges::advance(__x, __bound);
! 	return __x;
!       }
  
!     template<input_or_output_iterator _It, sentinel_for<_It> _Sent>
!       constexpr _It
!       operator()(_It __x, iter_difference_t<_It> __n, _Sent __bound) const
!       {
! 	ranges::advance(__x, __n, __bound);
! 	return __x;
!       }
!   };
  
!   inline constexpr __next_fn next{};
! 
!   struct __prev_fn
!   {
!     template<bidirectional_iterator _It>
!       constexpr _It
!       operator()(_It __x) const
!       {
! 	--__x;
! 	return __x;
!       }
! 
!     template<bidirectional_iterator _It>
!       constexpr _It
!       operator()(_It __x, iter_difference_t<_It> __n) const
!       {
! 	ranges::advance(__x, -__n);
! 	return __x;
!       }
! 
!     template<bidirectional_iterator _It>
!       constexpr _It
!       operator()(_It __x, iter_difference_t<_It> __n, _It __bound) const
!       {
! 	ranges::advance(__x, -__n, __bound);
! 	return __x;
!       }
!   };
! 
!   inline constexpr __prev_fn prev{};
  
  } // namespace ranges
  #endif // library concepts
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/ranges_algo.h gcc-10.4.0/libstdc++-v3/include/bits/ranges_algo.h
*** gcc-10.3.0/libstdc++-v3/include/bits/ranges_algo.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/ranges_algo.h	Tue Jun 28 08:54:31 2022
*************** namespace ranges
*** 561,567 ****
  	if (__count <= 0)
  	  return {__first, __first};
  
! 	auto __value_comp = [&] <typename _Rp> (_Rp&& __arg) {
  	    return std::__invoke(__pred, std::forward<_Rp>(__arg), __value);
  	};
  	if (__count == 1)
--- 561,567 ----
  	if (__count <= 0)
  	  return {__first, __first};
  
! 	auto __value_comp = [&] <typename _Rp> (_Rp&& __arg) -> bool {
  	    return std::__invoke(__pred, std::forward<_Rp>(__arg), __value);
  	};
  	if (__count == 1)
*************** namespace ranges
*** 804,811 ****
  
  	for (auto __scan = __first1; __scan != __last1; ++__scan)
  	  {
! 	    auto __proj_scan = std::__invoke(__proj1, *__scan);
! 	    auto __comp_scan = [&] <typename _Tp> (_Tp&& __arg) {
  	      return std::__invoke(__pred, __proj_scan,
  				   std::forward<_Tp>(__arg));
  	    };
--- 804,811 ----
  
  	for (auto __scan = __first1; __scan != __last1; ++__scan)
  	  {
! 	    auto&& __proj_scan = std::__invoke(__proj1, *__scan);
! 	    auto __comp_scan = [&] <typename _Tp> (_Tp&& __arg) -> bool {
  	      return std::__invoke(__pred, __proj_scan,
  				   std::forward<_Tp>(__arg));
  	    };
*************** namespace ranges
*** 1255,1261 ****
        operator()(_Iter __first, _Sent __last,
  		 const _Tp& __value, _Proj __proj = {}) const
        {
! 	auto __pred = [&] (auto&& __arg) {
  	  return std::forward<decltype(__arg)>(__arg) == __value;
  	};
  	return ranges::remove_if(__first, __last,
--- 1255,1261 ----
        operator()(_Iter __first, _Sent __last,
  		 const _Tp& __value, _Proj __proj = {}) const
        {
! 	auto __pred = [&] (auto&& __arg) -> bool {
  	  return std::forward<decltype(__arg)>(__arg) == __value;
  	};
  	return ranges::remove_if(__first, __last,
*************** namespace ranges
*** 1395,1400 ****
--- 1395,1407 ----
  
    inline constexpr __unique_fn unique{};
  
+   namespace __detail
+   {
+     template<typename _Out, typename _Tp>
+       concept __can_reread_output = input_iterator<_Out>
+ 	&& same_as<_Tp, iter_value_t<_Out>>;
+   }
+ 
    template<typename _Iter, typename _Out>
      using unique_copy_result = in_out_result<_Iter, _Out>;
  
*************** namespace ranges
*** 1406,1413 ****
  	       projected<_Iter, _Proj>> _Comp = ranges::equal_to>
        requires indirectly_copyable<_Iter, _Out>
  	&& (forward_iterator<_Iter>
! 	    || (input_iterator<_Out>
! 		&& same_as<iter_value_t<_Iter>, iter_value_t<_Out>>)
  	    || indirectly_copyable_storable<_Iter, _Out>)
        constexpr unique_copy_result<_Iter, _Out>
        operator()(_Iter __first, _Sent __last, _Out __result,
--- 1413,1419 ----
  	       projected<_Iter, _Proj>> _Comp = ranges::equal_to>
        requires indirectly_copyable<_Iter, _Out>
  	&& (forward_iterator<_Iter>
! 	    || __detail::__can_reread_output<_Out, iter_value_t<_Iter>>
  	    || indirectly_copyable_storable<_Iter, _Out>)
        constexpr unique_copy_result<_Iter, _Out>
        operator()(_Iter __first, _Sent __last, _Out __result,
*************** namespace ranges
*** 1431,1438 ****
  		}
  	    return {__next, std::move(++__result)};
  	  }
! 	else if constexpr (input_iterator<_Out>
! 			   && same_as<iter_value_t<_Iter>, iter_value_t<_Out>>)
  	  {
  	    *__result = *__first;
  	    while (++__first != __last)
--- 1437,1443 ----
  		}
  	    return {__next, std::move(++__result)};
  	  }
! 	else if constexpr (__detail::__can_reread_output<_Out, iter_value_t<_Iter>>)
  	  {
  	    *__result = *__first;
  	    while (++__first != __last)
*************** namespace ranges
*** 1466,1473 ****
  	       projected<iterator_t<_Range>, _Proj>> _Comp = ranges::equal_to>
        requires indirectly_copyable<iterator_t<_Range>, _Out>
  	&& (forward_iterator<iterator_t<_Range>>
! 	    || (input_iterator<_Out>
! 		&& same_as<range_value_t<_Range>, iter_value_t<_Out>>)
  	    || indirectly_copyable_storable<iterator_t<_Range>, _Out>)
        constexpr unique_copy_result<borrowed_iterator_t<_Range>, _Out>
        operator()(_Range&& __r, _Out __result,
--- 1471,1477 ----
  	       projected<iterator_t<_Range>, _Proj>> _Comp = ranges::equal_to>
        requires indirectly_copyable<iterator_t<_Range>, _Out>
  	&& (forward_iterator<iterator_t<_Range>>
! 	    || __detail::__can_reread_output<_Out, range_value_t<_Range>>
  	    || indirectly_copyable_storable<iterator_t<_Range>, _Out>)
        constexpr unique_copy_result<borrowed_iterator_t<_Range>, _Out>
        operator()(_Range&& __r, _Out __result,
*************** namespace ranges
*** 1549,1555 ****
  	    *__result = *__tail;
  	    ++__result;
  	  }
! 	return {__i, __result};
        }
  
      template<bidirectional_range _Range, weakly_incrementable _Out>
--- 1553,1559 ----
  	    *__result = *__tail;
  	    ++__result;
  	  }
! 	return {__i, std::move(__result)};
        }
  
      template<bidirectional_range _Range, weakly_incrementable _Out>
*************** namespace ranges
*** 2534,2544 ****
  	else
  	  {
  	    if (__first == __last)
! 	      return {std::move(__first), std::move(__first)};
  
  	    while (std::__invoke(__pred, std::__invoke(__proj, *__first)))
  	      if (++__first == __last)
! 		return {std::move(__first), std::move(__first)};
  
  	    auto __next = __first;
  	    while (++__next != __last)
--- 2538,2548 ----
  	else
  	  {
  	    if (__first == __last)
! 	      return {__first, __first};
  
  	    while (std::__invoke(__pred, std::__invoke(__proj, *__first)))
  	      if (++__first == __last)
! 		return {__first, __first};
  
  	    auto __next = __first;
  	    while (++__next != __last)
*************** namespace ranges
*** 2627,2640 ****
    struct __partition_copy_fn
    {
      template<input_iterator _Iter, sentinel_for<_Iter> _Sent,
! 	     weakly_incrementable _Out1, weakly_incrementable _O2,
  	     typename _Proj = identity,
  	     indirect_unary_predicate<projected<_Iter, _Proj>> _Pred>
        requires indirectly_copyable<_Iter, _Out1>
! 	&& indirectly_copyable<_Iter, _O2>
!       constexpr partition_copy_result<_Iter, _Out1, _O2>
        operator()(_Iter __first, _Sent __last,
! 		 _Out1 __out_true, _O2 __out_false,
  		 _Pred __pred, _Proj __proj = {}) const
        {
  	for (; __first != __last; ++__first)
--- 2631,2644 ----
    struct __partition_copy_fn
    {
      template<input_iterator _Iter, sentinel_for<_Iter> _Sent,
! 	     weakly_incrementable _Out1, weakly_incrementable _Out2,
  	     typename _Proj = identity,
  	     indirect_unary_predicate<projected<_Iter, _Proj>> _Pred>
        requires indirectly_copyable<_Iter, _Out1>
! 	&& indirectly_copyable<_Iter, _Out2>
!       constexpr partition_copy_result<_Iter, _Out1, _Out2>
        operator()(_Iter __first, _Sent __last,
! 		 _Out1 __out_true, _Out2 __out_false,
  		 _Pred __pred, _Proj __proj = {}) const
        {
  	for (; __first != __last; ++__first)
*************** namespace ranges
*** 2654,2671 ****
        }
  
      template<input_range _Range, weakly_incrementable _Out1,
! 	     weakly_incrementable _O2,
  	     typename _Proj = identity,
  	     indirect_unary_predicate<projected<iterator_t<_Range>, _Proj>>
  	       _Pred>
        requires indirectly_copyable<iterator_t<_Range>, _Out1>
! 	&& indirectly_copyable<iterator_t<_Range>, _O2>
!       constexpr partition_copy_result<borrowed_iterator_t<_Range>, _Out1, _O2>
!       operator()(_Range&& __r, _Out1 out_true, _O2 out_false,
  		 _Pred __pred, _Proj __proj = {}) const
        {
  	return (*this)(ranges::begin(__r), ranges::end(__r),
! 		       std::move(out_true), std::move(out_false),
  		       std::move(__pred), std::move(__proj));
        }
    };
--- 2658,2675 ----
        }
  
      template<input_range _Range, weakly_incrementable _Out1,
! 	     weakly_incrementable _Out2,
  	     typename _Proj = identity,
  	     indirect_unary_predicate<projected<iterator_t<_Range>, _Proj>>
  	       _Pred>
        requires indirectly_copyable<iterator_t<_Range>, _Out1>
! 	&& indirectly_copyable<iterator_t<_Range>, _Out2>
!       constexpr partition_copy_result<borrowed_iterator_t<_Range>, _Out1, _Out2>
!       operator()(_Range&& __r, _Out1 __out_true, _Out2 __out_false,
  		 _Pred __pred, _Proj __proj = {}) const
        {
  	return (*this)(ranges::begin(__r), ranges::end(__r),
! 		       std::move(__out_true), std::move(__out_false),
  		       std::move(__pred), std::move(__proj));
        }
    };
*************** namespace ranges
*** 3115,3121 ****
        operator()(const _Tp& __a, const _Tp& __b,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (std::__invoke(std::move(__comp),
  			  std::__invoke(__proj, __b),
  			  std::__invoke(__proj, __a)))
  	  return __b;
--- 3119,3125 ----
        operator()(const _Tp& __a, const _Tp& __b,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (std::__invoke(__comp,
  			  std::__invoke(__proj, __b),
  			  std::__invoke(__proj, __a)))
  	  return __b;
*************** namespace ranges
*** 3169,3175 ****
        operator()(const _Tp& __a, const _Tp& __b,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (std::__invoke(std::move(__comp),
  			  std::__invoke(__proj, __a),
  			  std::__invoke(__proj, __b)))
  	  return __b;
--- 3173,3179 ----
        operator()(const _Tp& __a, const _Tp& __b,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (std::__invoke(__comp,
  			  std::__invoke(__proj, __a),
  			  std::__invoke(__proj, __b)))
  	  return __b;
*************** namespace ranges
*** 3269,3275 ****
        operator()(const _Tp& __a, const _Tp& __b,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (std::__invoke(std::move(__comp),
  			  std::__invoke(__proj, __b),
  			  std::__invoke(__proj, __a)))
  	  return {__b, __a};
--- 3273,3279 ----
        operator()(const _Tp& __a, const _Tp& __b,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (std::__invoke(__comp,
  			  std::__invoke(__proj, __b),
  			  std::__invoke(__proj, __a)))
  	  return {__b, __a};
*************** namespace ranges
*** 3280,3305 ****
      template<input_range _Range, typename _Proj = identity,
  	     indirect_strict_weak_order<projected<iterator_t<_Range>, _Proj>>
  	       _Comp = ranges::less>
!       requires indirectly_copyable_storable<iterator_t<_Range>,
!       range_value_t<_Range>*>
        constexpr minmax_result<range_value_t<_Range>>
        operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const
        {
  	auto __first = ranges::begin(__r);
  	auto __last = ranges::end(__r);
  	__glibcxx_assert(__first != __last);
  	minmax_result<range_value_t<_Range>> __result = {*__first, *__first};
  	while (++__first != __last)
  	  {
! 	    auto __tmp = *__first;
! 	    if (std::__invoke(__comp,
! 			      std::__invoke(__proj, __tmp),
! 			      std::__invoke(__proj, __result.min)))
! 	      __result.min = std::move(__tmp);
! 	    if (!(bool)std::__invoke(__comp,
! 				     std::__invoke(__proj, __tmp),
! 				     std::__invoke(__proj, __result.max)))
! 	      __result.max = std::move(__tmp);
  	  }
  	return __result;
        }
--- 3284,3342 ----
      template<input_range _Range, typename _Proj = identity,
  	     indirect_strict_weak_order<projected<iterator_t<_Range>, _Proj>>
  	       _Comp = ranges::less>
!       requires indirectly_copyable_storable<iterator_t<_Range>, range_value_t<_Range>*>
        constexpr minmax_result<range_value_t<_Range>>
        operator()(_Range&& __r, _Comp __comp = {}, _Proj __proj = {}) const
        {
  	auto __first = ranges::begin(__r);
  	auto __last = ranges::end(__r);
  	__glibcxx_assert(__first != __last);
+ 	auto __comp_proj = __detail::__make_comp_proj(__comp, __proj);
  	minmax_result<range_value_t<_Range>> __result = {*__first, *__first};
+ 	if (++__first == __last)
+ 	  return __result;
+ 	else
+ 	  {
+ 	    // At this point __result.min == __result.max, so a single
+ 	    // comparison with the next element suffices.
+ 	    auto&& __val = *__first;
+ 	    if (__comp_proj(__val, __result.min))
+ 	      __result.min = std::forward<decltype(__val)>(__val);
+ 	    else
+ 	      __result.max = std::forward<decltype(__val)>(__val);
+ 	  }
  	while (++__first != __last)
  	  {
! 	    // Now process two elements at a time so that we perform at most
! 	    // 1 + 3*(N-2)/2 comparisons in total (each of the (N-2)/2
! 	    // iterations of this loop performs three comparisons).
! 	    range_value_t<_Range> __val1 = *__first;
! 	    if (++__first == __last)
! 	      {
! 		// N is odd; in this final iteration, we perform at most two
! 		// comparisons, for a total of 1 + 3*(N-3)/2 + 2 comparisons,
! 		// which is not more than 3*N/2, as required.
! 		if (__comp_proj(__val1, __result.min))
! 		  __result.min = std::move(__val1);
! 		else if (!__comp_proj(__val1, __result.max))
! 		  __result.max = std::move(__val1);
! 		break;
! 	      }
! 	    auto&& __val2 = *__first;
! 	    if (!__comp_proj(__val2, __val1))
! 	      {
! 		if (__comp_proj(__val1, __result.min))
! 		  __result.min = std::move(__val1);
! 		if (!__comp_proj(__val2, __result.max))
! 		  __result.max = std::forward<decltype(__val2)>(__val2);
! 	      }
! 	    else
! 	      {
! 		if (__comp_proj(__val2, __result.min))
! 		  __result.min = std::forward<decltype(__val2)>(__val2);
! 		if (!__comp_proj(__val1, __result.max))
! 		  __result.max = std::move(__val1);
! 	      }
  	  }
  	return __result;
        }
*************** namespace ranges
*** 3405,3425 ****
        operator()(_Iter __first, _Sent __last,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	if (__first == __last)
! 	  return {__first, __first};
! 
  	minmax_element_result<_Iter> __result = {__first, __first};
! 	auto __i = __first;
! 	while (++__i != __last)
  	  {
! 	    if (std::__invoke(__comp,
! 			      std::__invoke(__proj, *__i),
! 			      std::__invoke(__proj, *__result.min)))
! 	      __result.min = __i;
! 	    if (!(bool)std::__invoke(__comp,
! 				     std::__invoke(__proj, *__i),
! 				     std::__invoke(__proj, *__result.max)))
! 	      __result.max = __i;
  	  }
  	return __result;
        }
--- 3442,3491 ----
        operator()(_Iter __first, _Sent __last,
  		 _Comp __comp = {}, _Proj __proj = {}) const
        {
! 	auto __comp_proj = __detail::__make_comp_proj(__comp, __proj);
  	minmax_element_result<_Iter> __result = {__first, __first};
! 	if (__first == __last || ++__first == __last)
! 	  return __result;
! 	else
  	  {
! 	    // At this point __result.min == __result.max, so a single
! 	    // comparison with the next element suffices.
! 	    if (__comp_proj(*__first, *__result.min))
! 	      __result.min = __first;
! 	    else
! 	      __result.max = __first;
! 	  }
! 	while (++__first != __last)
! 	  {
! 	    // Now process two elements at a time so that we perform at most
! 	    // 1 + 3*(N-2)/2 comparisons in total (each of the (N-2)/2
! 	    // iterations of this loop performs three comparisons).
! 	    auto __prev = __first;
! 	    if (++__first == __last)
! 	      {
! 		// N is odd; in this final iteration, we perform at most two
! 		// comparisons, for a total of 1 + 3*(N-3)/2 + 2 comparisons,
! 		// which is not more than 3*N/2, as required.
! 		if (__comp_proj(*__prev, *__result.min))
! 		  __result.min = __prev;
! 		else if (!__comp_proj(*__prev, *__result.max))
! 		  __result.max = __prev;
! 		break;
! 	      }
! 	    if (!__comp_proj(*__first, *__prev))
! 	      {
! 		if (__comp_proj(*__prev, *__result.min))
! 		  __result.min = __prev;
! 		if (!__comp_proj(*__first, *__result.max))
! 		  __result.max = __first;
! 	      }
! 	    else
! 	      {
! 		if (__comp_proj(*__first, *__result.min))
! 		  __result.min = __first;
! 		if (!__comp_proj(*__prev, *__result.max))
! 		  __result.max = __prev;
! 	      }
  	  }
  	return __result;
        }
*************** namespace ranges
*** 3746,3753 ****
  		  // i.e. we are shifting out at least half of the range.  In
  		  // this case we can safely perform the shift with a single
  		  // move.
! 		  std::move(std::move(__first), std::move(__dest_head),
! 			    std::move(__result));
  		  return __result;
  		}
  	      ++__dest_head;
--- 3812,3818 ----
  		  // i.e. we are shifting out at least half of the range.  In
  		  // this case we can safely perform the shift with a single
  		  // move.
! 		  std::move(std::move(__first), std::move(__dest_head), __result);
  		  return __result;
  		}
  	      ++__dest_head;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/ranges_algobase.h gcc-10.4.0/libstdc++-v3/include/bits/ranges_algobase.h
*** gcc-10.3.0/libstdc++-v3/include/bits/ranges_algobase.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/ranges_algobase.h	Tue Jun 28 08:54:31 2022
*************** namespace ranges
*** 245,251 ****
        else if constexpr (__is_normal_iterator<_Out>)
  	{
  	  auto [__in,__out]
! 	    = ranges::__copy_or_move<_IsMove>(__first, __last, __result.base());
  	  return {std::move(__in), decltype(__result){__out}};
  	}
        else if constexpr (sized_sentinel_for<_Sent, _Iter>)
--- 245,251 ----
        else if constexpr (__is_normal_iterator<_Out>)
  	{
  	  auto [__in,__out]
! 	    = ranges::__copy_or_move<_IsMove>(std::move(__first), __last, __result.base());
  	  return {std::move(__in), decltype(__result){__out}};
  	}
        else if constexpr (sized_sentinel_for<_Sent, _Iter>)
*************** namespace ranges
*** 526,542 ****
  	if (__n <= 0)
  	  return __first;
  
! 	// TODO: Generalize this optimization to contiguous iterators.
! 	if constexpr (is_pointer_v<_Out>
! 		      // Note that __is_byte already implies !is_volatile.
! 		      && __is_byte<remove_pointer_t<_Out>>::__value
! 		      && integral<_Tp>)
! 	  {
! 	    __builtin_memset(__first, static_cast<unsigned char>(__value), __n);
! 	    return __first + __n;
! 	  }
! 	else if constexpr (is_scalar_v<_Tp>)
  	  {
  	    const auto __tmp = __value;
  	    for (; __n > 0; --__n, (void)++__first)
  	      *__first = __tmp;
--- 526,550 ----
  	if (__n <= 0)
  	  return __first;
  
! 	if constexpr (is_scalar_v<_Tp>)
  	  {
+ 	    // TODO: Generalize this optimization to contiguous iterators.
+ 	    if constexpr (is_pointer_v<_Out>
+ 			  // Note that __is_byte already implies !is_volatile.
+ 			  && __is_byte<remove_pointer_t<_Out>>::__value
+ 			  && integral<_Tp>)
+ 	      {
+ #ifdef __cpp_lib_is_constant_evaluated
+ 		if (!std::is_constant_evaluated())
+ #endif
+ 		  {
+ 		    __builtin_memset(__first,
+ 				     static_cast<unsigned char>(__value),
+ 				     __n);
+ 		    return __first + __n;
+ 		  }
+ 	      }
+ 
  	    const auto __tmp = __value;
  	    for (; __n > 0; --__n, (void)++__first)
  	      *__first = __tmp;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/ranges_uninitialized.h gcc-10.4.0/libstdc++-v3/include/bits/ranges_uninitialized.h
*** gcc-10.3.0/libstdc++-v3/include/bits/ranges_uninitialized.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/ranges_uninitialized.h	Tue Jun 28 08:54:31 2022
*************** namespace ranges
*** 106,113 ****
  
        public:
  	explicit
! 	_DestroyGuard(const _Iter* __iter)
! 	  : _M_first(*__iter), _M_cur(__iter)
  	{ }
  
  	void
--- 106,113 ----
  
        public:
  	explicit
! 	_DestroyGuard(const _Iter& __iter)
! 	  : _M_first(__iter), _M_cur(std::__addressof(__iter))
  	{ }
  
  	void
*************** namespace ranges
*** 127,133 ****
        struct _DestroyGuard<_Iter>
        {
  	explicit
! 	_DestroyGuard(const _Iter*)
  	{ }
  
  	void
--- 127,133 ----
        struct _DestroyGuard<_Iter>
        {
  	explicit
! 	_DestroyGuard(const _Iter&)
  	{ }
  
  	void
*************** namespace ranges
*** 149,155 ****
  	  return ranges::next(__first, __last);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__first);
  	    for (; __first != __last; ++__first)
  	      ::new (__detail::__voidify(*__first)) _ValueType;
  	    __guard.release();
--- 149,155 ----
  	  return ranges::next(__first, __last);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__first);
  	    for (; __first != __last; ++__first)
  	      ::new (__detail::__voidify(*__first)) _ValueType;
  	    __guard.release();
*************** namespace ranges
*** 181,187 ****
  	  return ranges::next(__first, __n);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__first);
  	    for (; __n > 0; ++__first, (void) --__n)
  	      ::new (__detail::__voidify(*__first)) _ValueType;
  	    __guard.release();
--- 181,187 ----
  	  return ranges::next(__first, __n);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__first);
  	    for (; __n > 0; ++__first, (void) --__n)
  	      ::new (__detail::__voidify(*__first)) _ValueType;
  	    __guard.release();
*************** namespace ranges
*** 207,213 ****
  	  return ranges::fill(__first, __last, _ValueType());
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__first);
  	    for (; __first != __last; ++__first)
  	      ::new (__detail::__voidify(*__first)) _ValueType();
  	    __guard.release();
--- 207,213 ----
  	  return ranges::fill(__first, __last, _ValueType());
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__first);
  	    for (; __first != __last; ++__first)
  	      ::new (__detail::__voidify(*__first)) _ValueType();
  	    __guard.release();
*************** namespace ranges
*** 240,246 ****
  	  return ranges::fill_n(__first, __n, _ValueType());
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__first);
  	    for (; __n > 0; ++__first, (void) --__n)
  	      ::new (__detail::__voidify(*__first)) _ValueType();
  	    __guard.release();
--- 240,246 ----
  	  return ranges::fill_n(__first, __n, _ValueType());
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__first);
  	    for (; __n > 0; ++__first, (void) --__n)
  	      ::new (__detail::__voidify(*__first)) _ValueType();
  	    __guard.release();
*************** namespace ranges
*** 279,285 ****
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__ofirst);
  	    for (; __ifirst != __ilast && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst)
  	      ::new (__detail::__voidify(*__ofirst)) _OutType(*__ifirst);
--- 279,285 ----
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__ofirst);
  	    for (; __ifirst != __ilast && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst)
  	      ::new (__detail::__voidify(*__ofirst)) _OutType(*__ifirst);
*************** namespace ranges
*** 326,332 ****
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__ofirst);
  	    for (; __n > 0 && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst, (void)--__n)
  	      ::new (__detail::__voidify(*__ofirst)) _OutType(*__ifirst);
--- 326,332 ----
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__ofirst);
  	    for (; __n > 0 && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst, (void)--__n)
  	      ::new (__detail::__voidify(*__ofirst)) _OutType(*__ifirst);
*************** namespace ranges
*** 368,374 ****
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__ofirst);
  	    for (; __ifirst != __ilast && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst)
  	      ::new (__detail::__voidify(*__ofirst))
--- 368,374 ----
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__ofirst);
  	    for (; __ifirst != __ilast && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst)
  	      ::new (__detail::__voidify(*__ofirst))
*************** namespace ranges
*** 419,425 ****
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__ofirst);
  	    for (; __n > 0 && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst, (void)--__n)
  	      ::new (__detail::__voidify(*__ofirst))
--- 419,425 ----
  	  }
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__ofirst);
  	    for (; __n > 0 && __ofirst != __olast;
  		 ++__ofirst, (void)++__ifirst, (void)--__n)
  	      ::new (__detail::__voidify(*__ofirst))
*************** namespace ranges
*** 446,452 ****
  	  return ranges::fill(__first, __last, __x);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__first);
  	    for (; __first != __last; ++__first)
  	      ::new (__detail::__voidify(*__first)) _ValueType(__x);
  	    __guard.release();
--- 446,452 ----
  	  return ranges::fill(__first, __last, __x);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__first);
  	    for (; __first != __last; ++__first)
  	      ::new (__detail::__voidify(*__first)) _ValueType(__x);
  	    __guard.release();
*************** namespace ranges
*** 479,485 ****
  	  return ranges::fill_n(__first, __n, __x);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(&__first);
  	    for (; __n > 0; ++__first, (void)--__n)
  	      ::new (__detail::__voidify(*__first)) _ValueType(__x);
  	    __guard.release();
--- 479,485 ----
  	  return ranges::fill_n(__first, __n, __x);
  	else
  	  {
! 	    auto __guard = __detail::_DestroyGuard(__first);
  	    for (; __n > 0; ++__first, (void)--__n)
  	      ::new (__detail::__voidify(*__first)) _ValueType(__x);
  	    __guard.release();
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/refwrap.h gcc-10.4.0/libstdc++-v3/include/bits/refwrap.h
*** gcc-10.3.0/libstdc++-v3/include/bits/refwrap.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/refwrap.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_MEM_FN_TRAITS(&& noexcept, fals
*** 391,397 ****
      cref(reference_wrapper<_Tp> __t) noexcept
      { return { __t.get() }; }
  
!   // @}
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 391,397 ----
      cref(reference_wrapper<_Tp> __t) noexcept
      { return { __t.get() }; }
  
!   /// @}
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex.h gcc-10.4.0/libstdc++-v3/include/bits/regex.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 35,41 ****
    template<typename, typename>
      class basic_regex;
  
!   template<typename, typename>
      class match_results;
  
  _GLIBCXX_END_NAMESPACE_CXX11
--- 35,41 ----
    template<typename, typename>
      class basic_regex;
  
!   template<typename _Bi_iter, typename _Alloc>
      class match_results;
  
  _GLIBCXX_END_NAMESPACE_CXX11
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 402,408 ****
         * @name Constants
         * std [28.8.1](1)
         */
!       //@{
        static constexpr flag_type icase = regex_constants::icase;
        static constexpr flag_type nosubs = regex_constants::nosubs;
        static constexpr flag_type optimize = regex_constants::optimize;
--- 402,408 ----
         * @name Constants
         * std [28.8.1](1)
         */
!       ///@{
        static constexpr flag_type icase = regex_constants::icase;
        static constexpr flag_type nosubs = regex_constants::nosubs;
        static constexpr flag_type optimize = regex_constants::optimize;
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 413,419 ****
        static constexpr flag_type awk = regex_constants::awk;
        static constexpr flag_type grep = regex_constants::grep;
        static constexpr flag_type egrep = regex_constants::egrep;
!       //@}
  
        // [7.8.2] construct/copy/destroy
        /**
--- 413,419 ----
        static constexpr flag_type awk = regex_constants::awk;
        static constexpr flag_type grep = regex_constants::grep;
        static constexpr flag_type egrep = regex_constants::egrep;
!       ///@}
  
        // [7.8.2] construct/copy/destroy
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 915,923 ****
         *
         * @param __s Another matched sequence to compare to this one.
         *
!        * @retval <0 this matched sequence will collate before @p __s.
!        * @retval =0 this matched sequence is equivalent to @p __s.
!        * @retval <0 this matched sequence will collate after @p __s.
         */
        int
        compare(const sub_match& __s) const
--- 915,923 ----
         *
         * @param __s Another matched sequence to compare to this one.
         *
!        * @retval negative  This matched sequence will collate before `__s`.
!        * @retval zero      This matched sequence is equivalent to `__s`.
!        * @retval positive  This matched sequence will collate after `__s`.
         */
        int
        compare(const sub_match& __s) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 925,937 ****
  
        /**
         * @{
!        * @brief Compares this sub_match to a string.
         *
!        * @param __s A string to compare to this sub_match.
         *
!        * @retval <0 this matched sequence will collate before @p __s.
!        * @retval =0 this matched sequence is equivalent to @p __s.
!        * @retval <0 this matched sequence will collate after @p __s.
         */
        int
        compare(const string_type& __s) const
--- 925,937 ----
  
        /**
         * @{
!        * @brief Compares this `sub_match` to a string.
         *
!        * @param __s A string to compare to this `sub_match`.
         *
!        * @retval negative  This matched sequence will collate before `__s`.
!        * @retval zero      This matched sequence is equivalent to `__s`.
!        * @retval positive  This matched sequence will collate after `__s`.
         */
        int
        compare(const string_type& __s) const
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 940,946 ****
        int
        compare(const value_type* __s) const
        { return this->_M_str().compare(__s); }
!       // @}
  
        /// @cond undocumented
        // Non-standard, used by comparison operators
--- 940,946 ----
        int
        compare(const value_type* __s) const
        { return this->_M_str().compare(__s); }
!       /// @}
  
        /// @cond undocumented
        // Non-standard, used by comparison operators
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1648,1654 ****
  	       const sub_match<_Bi_iter>& __m)
      { return __os << __m.str(); }
  
!   // @} relates sub_match
  
    // [7.10] Class template match_results
  
--- 1648,1654 ----
  	       const sub_match<_Bi_iter>& __m)
      { return __os << __m.str(); }
  
!   /// @} relates sub_match
  
    // [7.10] Class template match_results
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1702,1708 ****
        /**
         * @name 28.10 Public Types
         */
!       //@{
        typedef sub_match<_Bi_iter>			   value_type;
        typedef const value_type&				   const_reference;
        typedef value_type&				   reference;
--- 1702,1708 ----
        /**
         * @name 28.10 Public Types
         */
!       ///@{
        typedef sub_match<_Bi_iter>			   value_type;
        typedef const value_type&				   const_reference;
        typedef value_type&				   reference;
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1713,1725 ****
        typedef _Alloc					   allocator_type;
        typedef typename __iter_traits::value_type 	   char_type;
        typedef std::basic_string<char_type>		   string_type;
!       //@}
  
      public:
        /**
         * @name 28.10.1 Construction, Copying, and Destruction
         */
!       //@{
  
        /**
         * @brief Constructs a default %match_results container.
--- 1713,1725 ----
        typedef _Alloc					   allocator_type;
        typedef typename __iter_traits::value_type 	   char_type;
        typedef std::basic_string<char_type>		   string_type;
!       ///@}
  
      public:
        /**
         * @name 28.10.1 Construction, Copying, and Destruction
         */
!       ///@{
  
        /**
         * @brief Constructs a default %match_results container.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1763,1769 ****
         */
        ~match_results() = default;
  
!       //@}
  
        // 28.10.2, state:
        /**
--- 1763,1769 ----
         */
        ~match_results() = default;
  
!       ///@}
  
        // 28.10.2, state:
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1776,1782 ****
        /**
         * @name 28.10.2 Size
         */
!       //@{
  
        /**
         * @brief Gets the number of matches and submatches.
--- 1776,1782 ----
        /**
         * @name 28.10.2 Size
         */
!       ///@{
  
        /**
         * @brief Gets the number of matches and submatches.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1802,1815 ****
         */
        _GLIBCXX_NODISCARD bool
        empty() const noexcept
!       { return size() == 0; }
  
!       //@}
  
        /**
         * @name 28.10.4 Element Access
         */
!       //@{
  
        /**
         * @brief Gets the length of the indicated submatch.
--- 1802,1815 ----
         */
        _GLIBCXX_NODISCARD bool
        empty() const noexcept
!       { return _Base_type::size() <= 3; }
  
!       ///@}
  
        /**
         * @name 28.10.4 Element Access
         */
!       ///@{
  
        /**
         * @brief Gets the length of the indicated submatch.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1920,1926 ****
         */
        const_iterator
        end() const noexcept
!       { return _Base_type::end() - (empty() ? 0 : 3); }
  
        /**
         * @brief Gets an iterator to one-past-the-end of the collection.
--- 1920,1926 ----
         */
        const_iterator
        end() const noexcept
!       { return _Base_type::end() - (_Base_type::empty() ? 0 : 3); }
  
        /**
         * @brief Gets an iterator to one-past-the-end of the collection.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1929,1935 ****
        cend() const noexcept
        { return this->end(); }
  
!       //@}
  
        /**
         * @name 28.10.5 Formatting
--- 1929,1935 ----
        cend() const noexcept
        { return this->end(); }
  
!       ///@}
  
        /**
         * @name 28.10.5 Formatting
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1939,1945 ****
         * escape sequences accepted by these functions are determined by
         * their @p flags parameter as documented above.
         */
!        //@{
  
        /**
         * @pre   ready() == true
--- 1939,1945 ----
         * escape sequences accepted by these functions are determined by
         * their @p flags parameter as documented above.
         */
!        ///@{
  
        /**
         * @pre   ready() == true
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 1990,2001 ****
  	return __result;
        }
  
!       //@}
  
        /**
         * @name 28.10.6 Allocator
         */
!       //@{
  
        /**
         * @brief Gets a copy of the allocator.
--- 1990,2001 ----
  	return __result;
        }
  
!       ///@}
  
        /**
         * @name 28.10.6 Allocator
         */
!       ///@{
  
        /**
         * @brief Gets a copy of the allocator.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 2004,2015 ****
        get_allocator() const noexcept
        { return _Base_type::get_allocator(); }
  
!       //@}
  
        /**
         * @name 28.10.7 Swap
         */
!        //@{
  
        /**
         * @brief Swaps the contents of two match_results.
--- 2004,2015 ----
        get_allocator() const noexcept
        { return _Base_type::get_allocator(); }
  
!       ///@}
  
        /**
         * @name 28.10.7 Swap
         */
!        ///@{
  
        /**
         * @brief Swaps the contents of two match_results.
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 2021,2027 ****
  	_Base_type::swap(__that);
  	swap(_M_begin, __that._M_begin);
        }
!       //@}
  
      private:
        template<typename, typename, typename>
--- 2021,2027 ----
  	_Base_type::swap(__that);
  	swap(_M_begin, __that._M_begin);
        }
!       ///@}
  
      private:
        template<typename, typename, typename>
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 2078,2084 ****
        _M_suffix()
        { return _Base_type::operator[](_Base_type::size() - 1); }
  
!       _Bi_iter _M_begin;
        /// @endcond
      };
  
--- 2078,2084 ----
        _M_suffix()
        { return _Base_type::operator[](_Base_type::size() - 1); }
  
!       _Bi_iter _M_begin {};
        /// @endcond
      };
  
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 2148,2154 ****
    /**
     * @name Matching, Searching, and Replacing
     */
!   //@{
  
    /**
     * @brief Determines if there is a match between the regular expression @p e
--- 2148,2154 ----
    /**
     * @name Matching, Searching, and Replacing
     */
!   ///@{
  
    /**
     * @brief Determines if there is a match between the regular expression @p e
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 2610,2616 ****
        return __result;
      }
  
!   //@}
  
  _GLIBCXX_BEGIN_NAMESPACE_CXX11
  
--- 2610,2616 ----
        return __result;
      }
  
!   ///@}
  
  _GLIBCXX_BEGIN_NAMESPACE_CXX11
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 2973,2979 ****
    typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
  #endif
  
!   //@} // group regex
  
  _GLIBCXX_END_NAMESPACE_CXX11
  _GLIBCXX_END_NAMESPACE_VERSION
--- 2973,2979 ----
    typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
  #endif
  
!   ///@} // group regex
  
  _GLIBCXX_END_NAMESPACE_CXX11
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_automaton.h gcc-10.4.0/libstdc++-v3/include/bits/regex_automaton.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_automaton.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_automaton.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 392,398 ****
        _StateIdT _M_end;
      };
  
!  //@} regex-detail
  } // namespace __detail
  
  _GLIBCXX_END_NAMESPACE_VERSION
--- 392,398 ----
        _StateIdT _M_end;
      };
  
!  ///@} regex-detail
  } // namespace __detail
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_compiler.h gcc-10.4.0/libstdc++-v3/include/bits/regex_compiler.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_compiler.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_compiler.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 552,558 ****
  #endif
      };
  
!  //@} regex-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 552,558 ----
  #endif
      };
  
!  ///@} regex-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_compiler.tcc gcc-10.4.0/libstdc++-v3/include/bits/regex_compiler.tcc
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_compiler.tcc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_compiler.tcc	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 586,594 ****
    template<typename _TraitsT>
      bool
      _Compiler<_TraitsT>::
!     _M_match_token(_TokenT token)
      {
!       if (token == _M_scanner._M_get_token())
  	{
  	  _M_value = _M_scanner._M_get_value();
  	  _M_scanner._M_advance();
--- 586,594 ----
    template<typename _TraitsT>
      bool
      _Compiler<_TraitsT>::
!     _M_match_token(_TokenT __token)
      {
!       if (__token == _M_scanner._M_get_token())
  	{
  	  _M_value = _M_scanner._M_get_value();
  	  _M_scanner._M_advance();
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_constants.h gcc-10.4.0/libstdc++-v3/include/bits/regex_constants.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_constants.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_constants.h	Tue Jun 28 08:54:31 2022
*************** namespace regex_constants
*** 50,56 ****
    /**
     * @name 5.1 Regular Expression Syntax Options
     */
!   //@{
    enum __syntax_option
    {
      _S_icase,
--- 50,56 ----
    /**
     * @name 5.1 Regular Expression Syntax Options
     */
!   ///@{
    enum __syntax_option
    {
      _S_icase,
*************** namespace regex_constants
*** 216,222 ****
    operator^=(syntax_option_type& __a, syntax_option_type __b)
    { return __a = __a ^ __b; }
  
!   //@}
  
    /**
     * @name 5.2 Matching Rules
--- 216,222 ----
    operator^=(syntax_option_type& __a, syntax_option_type __b)
    { return __a = __a ^ __b; }
  
!   ///@}
  
    /**
     * @name 5.2 Matching Rules
*************** namespace regex_constants
*** 227,233 ****
     * below for any bitmask elements set.
     *
     */
!   //@{
  
    enum __match_flag
    {
--- 227,233 ----
     * below for any bitmask elements set.
     *
     */
!   ///@{
  
    enum __match_flag
    {
*************** namespace regex_constants
*** 407,415 ****
    operator^=(match_flag_type& __a, match_flag_type __b)
    { return __a = __a ^ __b; }
  
!   //@}
  } // namespace regex_constants
! /* @} */ // group regex
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 407,415 ----
    operator^=(match_flag_type& __a, match_flag_type __b)
    { return __a = __a ^ __b; }
  
!   ///@}
  } // namespace regex_constants
! /// @} group regex
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_error.h gcc-10.4.0/libstdc++-v3/include/bits/regex_error.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_error.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_error.h	Tue Jun 28 08:54:31 2022
*************** namespace regex_constants
*** 44,50 ****
    /**
     * @name 5.3 Error Types
     */
!   //@{
  
    enum error_type
      {
--- 44,50 ----
    /**
     * @name 5.3 Error Types
     */
!   ///@{
  
    enum error_type
      {
*************** namespace regex_constants
*** 119,125 ****
     */
    constexpr error_type error_stack(_S_error_stack);
  
!   //@}
  } // namespace regex_constants
  
    // [7.8] Class regex_error
--- 119,125 ----
     */
    constexpr error_type error_stack(_S_error_stack);
  
!   ///@}
  } // namespace regex_constants
  
    // [7.8] Class regex_error
*************** namespace regex_constants
*** 161,167 ****
      friend void __throw_regex_error(regex_constants::error_type, const char*);
    };
  
!   //@} // group regex
  
    void
    __throw_regex_error(regex_constants::error_type __ecode);
--- 161,167 ----
      friend void __throw_regex_error(regex_constants::error_type, const char*);
    };
  
!   ///@} // group regex
  
    void
    __throw_regex_error(regex_constants::error_type __ecode);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_executor.h gcc-10.4.0/libstdc++-v3/include/bits/regex_executor.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_executor.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_executor.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 250,256 ****
        bool                                                  _M_has_sol;
      };
  
!  //@} regex-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 250,256 ----
        bool                                                  _M_has_sol;
      };
  
!  ///@} regex-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/regex_scanner.h gcc-10.4.0/libstdc++-v3/include/bits/regex_scanner.h
*** gcc-10.3.0/libstdc++-v3/include/bits/regex_scanner.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/regex_scanner.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 264,270 ****
        void (_Scanner::* _M_eat_escape)();
      };
  
!  //@} regex-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 264,270 ----
        void (_Scanner::* _M_eat_escape)();
      };
  
!  ///@} regex-detail
  } // namespace __detail
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/shared_ptr.h gcc-10.4.0/libstdc++-v3/include/bits/shared_ptr.h
*** gcc-10.3.0/libstdc++-v3/include/bits/shared_ptr.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/shared_ptr.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 661,667 ****
  #endif // C++20
  #endif // C++17
  
!   // @}
  
    /**
     * @brief  A non-owning observer for a pointer owned by a shared_ptr
--- 661,667 ----
  #endif // C++20
  #endif // C++17
  
!   /// @}
  
    /**
     * @brief  A non-owning observer for a pointer owned by a shared_ptr
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 856,861 ****
--- 856,863 ----
      inline shared_ptr<_Tp>
      allocate_shared(const _Alloc& __a, _Args&&... __args)
      {
+       static_assert(!is_array<_Tp>::value, "make_shared<T[]> not supported");
+ 
        return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
  			     std::forward<_Args>(__args)...);
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 888,895 ****
        }
      };
  
!   // @} relates shared_ptr
!   // @} group pointer_abstractions
  
  #if __cplusplus >= 201703L
    namespace __detail::__variant
--- 890,897 ----
        }
      };
  
!   /// @} relates shared_ptr
!   /// @} group pointer_abstractions
  
  #if __cplusplus >= 201703L
    namespace __detail::__variant
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/shared_ptr_atomic.h gcc-10.4.0/libstdc++-v3/include/bits/shared_ptr_atomic.h
*** gcc-10.3.0/libstdc++-v3/include/bits/shared_ptr_atomic.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/shared_ptr_atomic.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 87,93 ****
      atomic_is_lock_free(const shared_ptr<_Tp>* __p)
      { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); }
  
!   // @}
  
    /**
     *  @brief  Atomic load for shared_ptr objects.
--- 87,93 ----
      atomic_is_lock_free(const shared_ptr<_Tp>* __p)
      { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); }
  
!   /// @}
  
    /**
     *  @brief  Atomic load for shared_ptr objects.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 123,129 ****
      inline __shared_ptr<_Tp, _Lp>
      atomic_load(const __shared_ptr<_Tp, _Lp>* __p)
      { return std::atomic_load_explicit(__p, memory_order_seq_cst); }
!   // @}
  
    /**
     *  @brief  Atomic store for shared_ptr objects.
--- 123,129 ----
      inline __shared_ptr<_Tp, _Lp>
      atomic_load(const __shared_ptr<_Tp, _Lp>* __p)
      { return std::atomic_load_explicit(__p, memory_order_seq_cst); }
!   /// @}
  
    /**
     *  @brief  Atomic store for shared_ptr objects.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 162,168 ****
      inline void
      atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
      { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
!   // @}
  
    /**
     *  @brief  Atomic exchange for shared_ptr objects.
--- 162,168 ----
      inline void
      atomic_store(__shared_ptr<_Tp, _Lp>* __p, __shared_ptr<_Tp, _Lp> __r)
      { std::atomic_store_explicit(__p, std::move(__r), memory_order_seq_cst); }
!   /// @}
  
    /**
     *  @brief  Atomic exchange for shared_ptr objects.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 207,213 ****
        return std::atomic_exchange_explicit(__p, std::move(__r),
  					   memory_order_seq_cst);
      }
!   // @}
  
    /**
     *  @brief  Atomic compare-and-swap for shared_ptr objects.
--- 207,213 ----
        return std::atomic_exchange_explicit(__p, std::move(__r),
  					   memory_order_seq_cst);
      }
!   /// @}
  
    /**
     *  @brief  Atomic compare-and-swap for shared_ptr objects.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 325,334 ****
        return std::atomic_compare_exchange_weak_explicit(__p, __v,
  	  std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
      }
!   // @}
  
!   // @} relates shared_ptr
!   // @} group pointer_abstractions
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 325,334 ----
        return std::atomic_compare_exchange_weak_explicit(__p, __v,
  	  std::move(__w), memory_order_seq_cst, memory_order_seq_cst);
      }
!   /// @}
  
!   /// @} relates shared_ptr
!   /// @} group pointer_abstractions
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/shared_ptr_base.h gcc-10.4.0/libstdc++-v3/include/bits/shared_ptr_base.h
*** gcc-10.3.0/libstdc++-v3/include/bits/shared_ptr_base.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/shared_ptr_base.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 716,723 ****
  	  using _Alloc_traits = allocator_traits<_Alloc>;
  	  _Alloc __a;
  	  _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1);
  	  _Alloc_traits::construct(__a, __mem, __r.release(),
! 				   __r.get_deleter());  // non-throwing
  	  _M_pi = __mem;
  	}
  
--- 716,726 ----
  	  using _Alloc_traits = allocator_traits<_Alloc>;
  	  _Alloc __a;
  	  _Sp_cd_type* __mem = _Alloc_traits::allocate(__a, 1);
+ 	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	  // 3548. shared_ptr construction from unique_ptr should move
+ 	  // (not copy) the deleter
  	  _Alloc_traits::construct(__a, __mem, __r.release(),
! 				   std::forward<_Del>(__r.get_deleter()));
  	  _M_pi = __mem;
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1104,1112 ****
        // Constraint for construction from unique_ptr:
        template<typename _Yp, typename _Del, typename _Res = void,
  	       typename _Ptr = typename unique_ptr<_Yp, _Del>::pointer>
! 	using _UniqCompatible = typename enable_if<__and_<
! 	  __sp_compatible_with<_Yp*, _Tp*>, is_convertible<_Ptr, element_type*>
! 	  >::value, _Res>::type;
  
        // Constraint for assignment from unique_ptr:
        template<typename _Yp, typename _Del>
--- 1107,1117 ----
        // Constraint for construction from unique_ptr:
        template<typename _Yp, typename _Del, typename _Res = void,
  	       typename _Ptr = typename unique_ptr<_Yp, _Del>::pointer>
! 	using _UniqCompatible = __enable_if_t<__and_<
! 	  __sp_compatible_with<_Yp*, _Tp*>,
! 	  is_convertible<_Ptr, element_type*>,
! 	  is_move_constructible<_Del>
! 	  >::value, _Res>;
  
        // Constraint for assignment from unique_ptr:
        template<typename _Yp, typename _Del>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1362,1368 ****
  	bool
  	owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept
  	{ return _M_refcount._M_less(__rhs._M_refcount); }
!       // @}
  
      protected:
        // This constructor is non-standard, it is used by allocate_shared.
--- 1367,1373 ----
  	bool
  	owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept
  	{ return _M_refcount._M_less(__rhs._M_refcount); }
!       /// @}
  
      protected:
        // This constructor is non-standard, it is used by allocate_shared.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1865,1870 ****
--- 1870,1877 ----
      inline __shared_ptr<_Tp, _Lp>
      __allocate_shared(const _Alloc& __a, _Args&&... __args)
      {
+       static_assert(!is_array<_Tp>::value, "make_shared<T[]> not supported");
+ 
        return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a},
  				    std::forward<_Args>(__args)...);
      }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/slice_array.h gcc-10.4.0/libstdc++-v3/include/bits/slice_array.h
*** gcc-10.3.0/libstdc++-v3/include/bits/slice_array.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/slice_array.h	Tue Jun 28 08:54:31 2022
*************** _DEFINE_VALARRAY_OPERATOR(>>, __shift_ri
*** 276,282 ****
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 276,282 ----
  
  #undef _DEFINE_VALARRAY_OPERATOR
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/specfun.h gcc-10.4.0/libstdc++-v3/include/bits/specfun.h
*** gcc-10.3.0/libstdc++-v3/include/bits/specfun.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/specfun.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1196,1202 ****
        return __detail::__sph_neumann<__type>(__n, __x);
      }
  
!   // @} group mathsf
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 1196,1202 ----
        return __detail::__sph_neumann<__type>(__n, __x);
      }
  
!   /// @} group mathsf
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1380,1386 ****
        return std::__detail::__hyperg<__type>(__a, __b, __c, __x);
      }
  
!   // @}
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace __gnu_cxx
  #endif // __STRICT_ANSI__
--- 1380,1386 ----
        return std::__detail::__hyperg<__type>(__a, __b, __c, __x);
      }
  
!   /// @}
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace __gnu_cxx
  #endif // __STRICT_ANSI__
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/std_function.h gcc-10.4.0/libstdc++-v3/include/bits/std_function.h
*** gcc-10.3.0/libstdc++-v3/include/bits/std_function.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/std_function.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 537,543 ****
        template<typename _Functor>       _Functor* target() noexcept;
  
        template<typename _Functor> const _Functor* target() const noexcept;
!       // @}
  #endif
  
      private:
--- 537,543 ----
        template<typename _Functor>       _Functor* target() noexcept;
  
        template<typename _Functor> const _Functor* target() const noexcept;
!       /// @}
  #endif
  
      private:
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/std_mutex.h gcc-10.4.0/libstdc++-v3/include/bits/std_mutex.h
*** gcc-10.3.0/libstdc++-v3/include/bits/std_mutex.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/std_mutex.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 171,177 ****
        mutex_type&  _M_device;
      };
  
!   // @} group mutexes
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  #endif // C++11
--- 171,177 ----
        mutex_type&  _M_device;
      };
  
!   /// @} group mutexes
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  #endif // C++11
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_deque.h gcc-10.4.0/libstdc++-v3/include/bits/stl_deque.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_deque.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_deque.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1836,1842 ****
        }
  
        // called by the second initialize_dispatch above
!       //@{
        /**
         *  @brief Fills the deque with whatever is in [first,last).
         *  @param  __first  An input iterator.
--- 1836,1842 ----
        }
  
        // called by the second initialize_dispatch above
!       ///@{
        /**
         *  @brief Fills the deque with whatever is in [first,last).
         *  @param  __first  An input iterator.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1857,1863 ****
  	void
  	_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
  			    std::forward_iterator_tag);
!       //@}
  
        /**
         *  @brief Fills the %deque with copies of value.
--- 1857,1863 ----
  	void
  	_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
  			    std::forward_iterator_tag);
!       ///@}
  
        /**
         *  @brief Fills the %deque with copies of value.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1941,1947 ****
  	  }
        }
  
!       //@{
        /// Helper functions for push_* and pop_*.
  #if __cplusplus < 201103L
        void _M_push_back_aux(const value_type&);
--- 1941,1947 ----
  	  }
        }
  
!       ///@{
        /// Helper functions for push_* and pop_*.
  #if __cplusplus < 201103L
        void _M_push_back_aux(const value_type&);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1958,1964 ****
        void _M_pop_back_aux();
  
        void _M_pop_front_aux();
!       //@}
  
        // Internal insert functions follow.  The *_aux functions do the actual
        // insertion work when all shortcuts fail.
--- 1958,1964 ----
        void _M_pop_back_aux();
  
        void _M_pop_front_aux();
!       ///@}
  
        // Internal insert functions follow.  The *_aux functions do the actual
        // insertion work when all shortcuts fail.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2081,2087 ****
        _M_shrink_to_fit();
  #endif
  
!       //@{
        /// Memory-handling helpers for the previous internal insert functions.
        iterator
        _M_reserve_elements_at_front(size_type __n)
--- 2081,2087 ----
        _M_shrink_to_fit();
  #endif
  
!       ///@{
        /// Memory-handling helpers for the previous internal insert functions.
        iterator
        _M_reserve_elements_at_front(size_type __n)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2108,2117 ****
  
        void
        _M_new_elements_at_back(size_type __new_elements);
!       //@}
  
  
!       //@{
        /**
         *  @brief Memory-handling helpers for the major %map.
         *
--- 2108,2117 ----
  
        void
        _M_new_elements_at_back(size_type __new_elements);
!       ///@}
  
  
!       ///@{
        /**
         *  @brief Memory-handling helpers for the major %map.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2137,2143 ****
  
        void
        _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
!       //@}
  
  #if __cplusplus >= 201103L
        // Constant-time, nothrow move assignment when source object's memory
--- 2137,2143 ----
  
        void
        _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
!       ///@}
  
  #if __cplusplus >= 201103L
        // Constant-time, nothrow move assignment when source object's memory
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_iterator.h gcc-10.4.0/libstdc++-v3/include/bits/stl_iterator.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_iterator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_iterator.h	Tue Jun 28 08:54:31 2022
***************
*** 61,66 ****
--- 61,67 ----
  #define _STL_ITERATOR_H 1
  
  #include <bits/cpp_type_traits.h>
+ #include <bits/stl_iterator_base_types.h>
  #include <ext/type_traits.h>
  #include <bits/move.h>
  #include <bits/ptr_traits.h>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 91,97 ****
     * @{
     */
  
! #if __cplusplus > 201703L && __cpp_lib_concepts
    namespace __detail
    {
      // Weaken iterator_category _Cat to _Limit if it is derived from that,
--- 92,98 ----
     * @{
     */
  
! #if __cpp_lib_concepts
    namespace __detail
    {
      // Weaken iterator_category _Cat to _Limit if it is derived from that,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 136,146 ****
  
      public:
        typedef _Iterator					iterator_type;
-       typedef typename __traits_type::difference_type	difference_type;
        typedef typename __traits_type::pointer		pointer;
        typedef typename __traits_type::reference		reference;
! 
! #if __cplusplus > 201703L && __cpp_lib_concepts
        using iterator_concept
  	= conditional_t<random_access_iterator<_Iterator>,
  			random_access_iterator_tag,
--- 137,147 ----
  
      public:
        typedef _Iterator					iterator_type;
        typedef typename __traits_type::pointer		pointer;
+ #if ! __cpp_lib_concepts
+       typedef typename __traits_type::difference_type	difference_type;
        typedef typename __traits_type::reference		reference;
! #else
        using iterator_concept
  	= conditional_t<random_access_iterator<_Iterator>,
  			random_access_iterator_tag,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 148,153 ****
--- 149,157 ----
        using iterator_category
  	= __detail::__clamp_iter_cat<typename __traits_type::iterator_category,
  				     random_access_iterator_tag>;
+       using value_type = iter_value_t<_Iterator>;
+       using difference_type = iter_difference_t<_Iterator>;
+       using reference = iter_reference_t<_Iterator>;
  #endif
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 369,375 ****
          { return __t.operator->(); }
      };
  
!   //@{
    /**
     *  @param  __x  A %reverse_iterator.
     *  @param  __y  A %reverse_iterator.
--- 373,379 ----
          { return __t.operator->(); }
      };
  
!   ///@{
    /**
     *  @param  __x  A %reverse_iterator.
     *  @param  __y  A %reverse_iterator.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 502,509 ****
      operator<=>(const reverse_iterator<_IteratorL>& __x,
  		const reverse_iterator<_IteratorR>& __y)
      { return __y.base() <=> __x.base(); }
  #endif // C++20
!   //@}
  
  #if __cplusplus < 201103L
    template<typename _Iterator>
--- 506,529 ----
      operator<=>(const reverse_iterator<_IteratorL>& __x,
  		const reverse_iterator<_IteratorR>& __y)
      { return __y.base() <=> __x.base(); }
+ 
+   // Additional, non-standard overloads to avoid ambiguities with greedy,
+   // unconstrained overloads in associated namespaces.
+ 
+   template<typename _Iterator>
+     constexpr bool
+     operator==(const reverse_iterator<_Iterator>& __x,
+ 	       const reverse_iterator<_Iterator>& __y)
+     requires requires { { __x.base() == __y.base() } -> convertible_to<bool>; }
+     { return __x.base() == __y.base(); }
+ 
+   template<three_way_comparable _Iterator>
+     constexpr compare_three_way_result_t<_Iterator, _Iterator>
+     operator<=>(const reverse_iterator<_Iterator>& __x,
+ 		const reverse_iterator<_Iterator>& __y)
+     { return __y.base() <=> __x.base(); }
  #endif // C++20
!   ///@}
  
  #if __cplusplus < 201103L
    template<typename _Iterator>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 932,938 ****
      { return insert_iterator<_Container>(__x, __i); }
  #endif
  
!   // @} group iterators
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 952,958 ----
      { return insert_iterator<_Container>(__x, __i); }
  #endif
  
!   /// @} group iterators
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1078,1083 ****
--- 1098,1120 ----
  		const __normal_iterator<_IteratorR, _Container>& __rhs)
      noexcept(noexcept(std::__detail::__synth3way(__lhs.base(), __rhs.base())))
      { return std::__detail::__synth3way(__lhs.base(), __rhs.base()); }
+ 
+   template<typename _Iterator, typename _Container>
+     constexpr bool
+     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
+ 	       const __normal_iterator<_Iterator, _Container>& __rhs)
+     noexcept(noexcept(__lhs.base() == __rhs.base()))
+     requires requires {
+       { __lhs.base() == __rhs.base() } -> std::convertible_to<bool>;
+     }
+     { return __lhs.base() == __rhs.base(); }
+ 
+   template<typename _Iterator, typename _Container>
+     constexpr std::__detail::__synth3way_t<_Iterator>
+     operator<=>(const __normal_iterator<_Iterator, _Container>& __lhs,
+ 		const __normal_iterator<_Iterator, _Container>& __rhs)
+     noexcept(noexcept(std::__detail::__synth3way(__lhs.base(), __rhs.base())))
+     { return std::__detail::__synth3way(__lhs.base(), __rhs.base()); }
  #else
     // Forward iterator requirements
    template<typename _IteratorL, typename _IteratorR, typename _Container>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1270,1275 ****
--- 1307,1330 ----
      };
  #endif // C++20
  
+   namespace __detail
+   {
+ #if __cplusplus > 201703L && __cpp_lib_concepts
+     template<typename _Iterator>
+       struct __move_iter_cat
+       { };
+ 
+     template<typename _Iterator>
+       requires requires { typename iterator_traits<_Iterator>::iterator_category; }
+       struct __move_iter_cat<_Iterator>
+       {
+ 	using iterator_category
+ 	  = __clamp_iter_cat<typename iterator_traits<_Iterator>::iterator_category,
+ 			     random_access_iterator_tag>;
+       };
+ #endif
+   }
+ 
    // 24.4.3  Move iterators
    /**
     *  Class template move_iterator is an iterator adapter with the same
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1281,1293 ****
     */
    template<typename _Iterator>
      class move_iterator
      {
        _Iterator _M_current;
  
        using __traits_type = iterator_traits<_Iterator>;
! #if __cplusplus > 201703L && __cpp_lib_concepts
!       using __base_cat = typename __traits_type::iterator_category;
! #else
        using __base_ref = typename __traits_type::reference;
  #endif
  
--- 1336,1349 ----
     */
    template<typename _Iterator>
      class move_iterator
+ #if __cplusplus > 201703L && __cpp_lib_concepts
+       : public __detail::__move_iter_cat<_Iterator>
+ #endif
      {
        _Iterator _M_current;
  
        using __traits_type = iterator_traits<_Iterator>;
! #if ! (__cplusplus > 201703L && __cpp_lib_concepts)
        using __base_ref = typename __traits_type::reference;
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1296,1303 ****
  
  #if __cplusplus > 201703L && __cpp_lib_concepts
        using iterator_concept = input_iterator_tag;
!       using iterator_category
! 	= __detail::__clamp_iter_cat<__base_cat, random_access_iterator_tag>;
        using value_type = iter_value_t<_Iterator>;
        using difference_type = iter_difference_t<_Iterator>;
        using pointer = _Iterator;
--- 1352,1358 ----
  
  #if __cplusplus > 201703L && __cpp_lib_concepts
        using iterator_concept = input_iterator_tag;
!       // iterator_category defined in __move_iter_cat
        using value_type = iter_value_t<_Iterator>;
        using difference_type = iter_difference_t<_Iterator>;
        using pointer = _Iterator;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1341,1351 ****
        base() const
        { return _M_current; }
  #else
!       constexpr iterator_type
!       base() const &
! #if __cpp_lib_concepts
! 	requires copy_constructible<iterator_type>
! #endif
        { return _M_current; }
  
        constexpr iterator_type
--- 1396,1403 ----
        base() const
        { return _M_current; }
  #else
!       constexpr const iterator_type&
!       base() const & noexcept
        { return _M_current; }
  
        constexpr iterator_type
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1520,1539 ****
  #endif
      { return !(__x < __y); }
  
- #if ! (__cplusplus > 201703L && __cpp_lib_concepts)
    // Note: See __normal_iterator operators note from Gaby to understand
    // why we have these extra overloads for some move_iterator operators.
  
-   // These extra overloads are not needed in C++20, because the ones above
-   // are constrained with a requires-clause and so overload resolution will
-   // prefer them to greedy unconstrained function templates.
- 
    template<typename _Iterator>
      inline _GLIBCXX17_CONSTEXPR bool
      operator==(const move_iterator<_Iterator>& __x,
  	       const move_iterator<_Iterator>& __y)
      { return __x.base() == __y.base(); }
  
    template<typename _Iterator>
      inline _GLIBCXX17_CONSTEXPR bool
      operator!=(const move_iterator<_Iterator>& __x,
--- 1572,1593 ----
  #endif
      { return !(__x < __y); }
  
    // Note: See __normal_iterator operators note from Gaby to understand
    // why we have these extra overloads for some move_iterator operators.
  
    template<typename _Iterator>
      inline _GLIBCXX17_CONSTEXPR bool
      operator==(const move_iterator<_Iterator>& __x,
  	       const move_iterator<_Iterator>& __y)
      { return __x.base() == __y.base(); }
  
+ #if __cpp_lib_three_way_comparison
+   template<three_way_comparable _Iterator>
+     constexpr compare_three_way_result_t<_Iterator>
+     operator<=>(const move_iterator<_Iterator>& __x,
+ 		const move_iterator<_Iterator>& __y)
+     { return __x.base() <=> __y.base(); }
+ #else
    template<typename _Iterator>
      inline _GLIBCXX17_CONSTEXPR bool
      operator!=(const move_iterator<_Iterator>& __x,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1612,1617 ****
--- 1666,1676 ----
  	    || is_reference_v<iter_reference_t<_It>>
  	    || constructible_from<iter_value_t<_It>, iter_reference_t<_It>>);
  
+     template<typename _It>
+       concept __common_iter_use_postfix_proxy
+ 	= (!requires (_It& __i) { { *__i++ } -> __can_reference; })
+ 	  && constructible_from<iter_value_t<_It>, iter_reference_t<_It>>
+ 	  && move_constructible<iter_value_t<_It>>;
    } // namespace __detail
  
    /// An iterator/sentinel adaptor for representing a non-common range.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1634,1658 ****
        _S_noexcept()
        { return _S_noexcept1<_It, _It2>() && _S_noexcept1<_Sent, _Sent2>(); }
  
!     class _Proxy
      {
        iter_value_t<_It> _M_keep;
  
!       _Proxy(iter_reference_t<_It>&& __x)
        : _M_keep(std::move(__x)) { }
  
        friend class common_iterator;
  
      public:
!       const iter_value_t<_It>*
!       operator->() const
        { return std::__addressof(_M_keep); }
      };
  
    public:
      constexpr
      common_iterator()
      noexcept(is_nothrow_default_constructible_v<_It>)
      : _M_it(), _M_index(0)
      { }
  
--- 1693,1735 ----
        _S_noexcept()
        { return _S_noexcept1<_It, _It2>() && _S_noexcept1<_Sent, _Sent2>(); }
  
!     class __arrow_proxy
      {
        iter_value_t<_It> _M_keep;
  
!       constexpr
!       __arrow_proxy(iter_reference_t<_It>&& __x)
        : _M_keep(std::move(__x)) { }
  
        friend class common_iterator;
  
      public:
!       constexpr const iter_value_t<_It>*
!       operator->() const noexcept
        { return std::__addressof(_M_keep); }
      };
  
+     class __postfix_proxy
+     {
+       iter_value_t<_It> _M_keep;
+ 
+       constexpr
+       __postfix_proxy(iter_reference_t<_It>&& __x)
+       : _M_keep(std::forward<iter_reference_t<_It>>(__x)) { }
+ 
+       friend class common_iterator;
+ 
+     public:
+       constexpr const iter_value_t<_It>&
+       operator*() const noexcept
+       { return _M_keep; }
+     };
+ 
    public:
      constexpr
      common_iterator()
      noexcept(is_nothrow_default_constructible_v<_It>)
+     requires default_initializable<_It>
      : _M_it(), _M_index(0)
      { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1805,1811 ****
  	  return std::__addressof(__tmp);
  	}
        else
! 	return _Proxy{*_M_it};
      }
  
      common_iterator&
--- 1882,1888 ----
  	  return std::__addressof(__tmp);
  	}
        else
! 	return __arrow_proxy{*_M_it};
      }
  
      common_iterator&
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1826,1833 ****
  	  ++*this;
  	  return __tmp;
  	}
!       else
  	return _M_it++;
      }
  
      template<typename _It2, sentinel_for<_It> _Sent2>
--- 1903,1916 ----
  	  ++*this;
  	  return __tmp;
  	}
!       else if constexpr (!__detail::__common_iter_use_postfix_proxy<_It>)
  	return _M_it++;
+       else
+ 	{
+ 	  __postfix_proxy __p(**this);
+ 	  ++*this;
+ 	  return __p;
+ 	}
      }
  
      template<typename _It2, sentinel_for<_It> _Sent2>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1958,1969 ****
  	  using type = decltype(std::declval<const _CIter&>().operator->());
  	};
  
      public:
        using iterator_concept = conditional_t<forward_iterator<_It>,
  	    forward_iterator_tag, input_iterator_tag>;
!       using iterator_category = __detail::__clamp_iter_cat<
! 	typename iterator_traits<_It>::iterator_category,
! 	forward_iterator_tag, input_iterator_tag>;
        using value_type = iter_value_t<_It>;
        using difference_type = iter_difference_t<_It>;
        using pointer = typename __ptr<_It>::type;
--- 2041,2061 ----
  	  using type = decltype(std::declval<const _CIter&>().operator->());
  	};
  
+       static auto
+       _S_iter_cat()
+       {
+ 	using _Traits = iterator_traits<_It>;
+ 	if constexpr (requires { requires derived_from<typename _Traits::iterator_category,
+ 						       forward_iterator_tag>; })
+ 	  return forward_iterator_tag{};
+ 	else
+ 	  return input_iterator_tag{};
+       }
+ 
      public:
        using iterator_concept = conditional_t<forward_iterator<_It>,
  	    forward_iterator_tag, input_iterator_tag>;
!       using iterator_category = decltype(_S_iter_cat());
        using value_type = iter_value_t<_It>;
        using difference_type = iter_difference_t<_It>;
        using pointer = typename __ptr<_It>::type;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1972,1985 ****
  
    // [iterators.counted] Counted iterators
  
    /// An iterator adaptor that keeps track of the distance to the end.
    template<input_or_output_iterator _It>
      class counted_iterator
      {
      public:
        using iterator_type = _It;
  
!       constexpr counted_iterator() = default;
  
        constexpr
        counted_iterator(_It __i, iter_difference_t<_It> __n)
--- 2064,2113 ----
  
    // [iterators.counted] Counted iterators
  
+   namespace __detail
+   {
+     template<typename _It>
+       struct __counted_iter_value_type
+       { };
+ 
+     template<indirectly_readable _It>
+       struct __counted_iter_value_type<_It>
+       { using value_type = iter_value_t<_It>; };
+ 
+     template<typename _It>
+       struct __counted_iter_concept
+       { };
+ 
+     template<typename _It>
+       requires requires { typename _It::iterator_concept; }
+       struct __counted_iter_concept<_It>
+       { using iterator_concept = typename _It::iterator_concept; };
+ 
+     template<typename _It>
+       struct __counted_iter_cat
+       { };
+ 
+     template<typename _It>
+       requires requires { typename _It::iterator_category; }
+       struct __counted_iter_cat<_It>
+       { using iterator_category = typename _It::iterator_category; };
+   }
+ 
    /// An iterator adaptor that keeps track of the distance to the end.
    template<input_or_output_iterator _It>
      class counted_iterator
+       : public __detail::__counted_iter_value_type<_It>,
+ 	public __detail::__counted_iter_concept<_It>,
+ 	public __detail::__counted_iter_cat<_It>
      {
      public:
        using iterator_type = _It;
+       // value_type defined in __counted_iter_value_type
+       using difference_type = iter_difference_t<_It>;
+       // iterator_concept defined in __counted_iter_concept
+       // iterator_category defined in __counted_iter_cat
  
!       constexpr counted_iterator() requires default_initializable<_It> = default;
  
        constexpr
        counted_iterator(_It __i, iter_difference_t<_It> __n)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2003,2012 ****
  	  return *this;
  	}
  
!       constexpr _It
!       base() const &
!       noexcept(is_nothrow_copy_constructible_v<_It>)
!       requires copy_constructible<_It>
        { return _M_current; }
  
        constexpr _It
--- 2131,2138 ----
  	  return *this;
  	}
  
!       constexpr const _It&
!       base() const & noexcept
        { return _M_current; }
  
        constexpr _It
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2028,2033 ****
--- 2154,2164 ----
        requires __detail::__dereferenceable<const _It>
        { return *_M_current; }
  
+       constexpr auto
+       operator->() const noexcept
+       requires contiguous_iterator<_It>
+       { return std::to_address(_M_current); }
+ 
        constexpr counted_iterator&
        operator++()
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2170,2191 ****
        iter_difference_t<_It> _M_length = 0;
      };
  
-   template<typename _It>
-     struct incrementable_traits<counted_iterator<_It>>
-     {
-       using difference_type = iter_difference_t<_It>;
-     };
- 
    template<input_iterator _It>
      struct iterator_traits<counted_iterator<_It>> : iterator_traits<_It>
      {
!       using pointer = void;
      };
  #endif // C++20
  
!   // @} group iterators
  
    template<typename _Iterator>
      auto
      __niter_base(move_iterator<_Iterator> __it)
      -> decltype(make_move_iterator(__niter_base(__it.base())))
--- 2301,2320 ----
        iter_difference_t<_It> _M_length = 0;
      };
  
    template<input_iterator _It>
+     requires same_as<__detail::__iter_traits<_It>, iterator_traits<_It>>
      struct iterator_traits<counted_iterator<_It>> : iterator_traits<_It>
      {
!       using pointer = conditional_t<contiguous_iterator<_It>,
! 				    add_pointer_t<iter_reference_t<_It>>,
! 				    void>;
      };
  #endif // C++20
  
!   /// @} group iterators
  
    template<typename _Iterator>
+     _GLIBCXX20_CONSTEXPR
      auto
      __niter_base(move_iterator<_Iterator> __it)
      -> decltype(make_move_iterator(__niter_base(__it.base())))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2199,2204 ****
--- 2328,2334 ----
      };
  
    template<typename _Iterator>
+     _GLIBCXX20_CONSTEXPR
      auto
      __miter_base(move_iterator<_Iterator> __it)
      -> decltype(__miter_base(__it.base()))
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_iterator_base_types.h gcc-10.4.0/libstdc++-v3/include/bits/stl_iterator_base_types.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_iterator_base_types.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_iterator_base_types.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 79,85 ****
     *  @defgroup iterators Iterators
     *  Abstractions for uniform iterating through various underlying types.
    */
!   //@{ 
  
    /**
     *  @defgroup iterator_tags Iterator Tags
--- 79,85 ----
     *  @defgroup iterators Iterators
     *  Abstractions for uniform iterating through various underlying types.
    */
!   ///@{
  
    /**
     *  @defgroup iterator_tags Iterator Tags
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 88,94 ****
     *  are.  Different underlying algorithms can then be used based on the
     *  different operations supported by different iterator types.
    */
!   //@{ 
    ///  Marking input iterators.
    struct input_iterator_tag { };
  
--- 88,94 ----
     *  are.  Different underlying algorithms can then be used based on the
     *  different operations supported by different iterator types.
    */
!   ///@{
    ///  Marking input iterators.
    struct input_iterator_tag { };
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 110,116 ****
    /// Contiguous iterators point to objects stored contiguously in memory.
    struct contiguous_iterator_tag : public random_access_iterator_tag { };
  #endif
!   //@}
  
    /**
     *  @brief  Common %iterator class.
--- 110,116 ----
    /// Contiguous iterators point to objects stored contiguously in memory.
    struct contiguous_iterator_tag : public random_access_iterator_tag { };
  #endif
!   ///@}
  
    /**
     *  @brief  Common %iterator class.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 238,244 ****
      __iterator_category(const _Iter&)
      { return typename iterator_traits<_Iter>::iterator_category(); }
  
!   //@}
  
  #if __cplusplus >= 201103L
    template<typename _Iter>
--- 238,244 ----
      __iterator_category(const _Iter&)
      { return typename iterator_traits<_Iter>::iterator_category(); }
  
!   ///@}
  
  #if __cplusplus >= 201103L
    template<typename _Iter>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_map.h gcc-10.4.0/libstdc++-v3/include/bits/stl_map.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_map.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_map.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 816,822 ****
  	insert(_Pair&& __x)
  	{ return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); }
  #endif
!       // @}
  
  #if __cplusplus >= 201103L
        /**
--- 816,822 ----
  	insert(_Pair&& __x)
  	{ return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); }
  #endif
!       /// @}
  
  #if __cplusplus >= 201103L
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 878,884 ****
  					     std::forward<_Pair>(__x));
  	}
  #endif
!       // @}
  
        /**
         *  @brief Template function that attempts to insert a range of elements.
--- 878,884 ----
  					     std::forward<_Pair>(__x));
  	}
  #endif
!       /// @}
  
        /**
         *  @brief Template function that attempts to insert a range of elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1036,1042 ****
        iterator
        erase(iterator __position)
        { return _M_t.erase(__position); }
!       // @}
  #else
        /**
         *  @brief Erases an element from a %map.
--- 1036,1042 ----
        iterator
        erase(iterator __position)
        { return _M_t.erase(__position); }
!       /// @}
  #else
        /**
         *  @brief Erases an element from a %map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1152,1158 ****
  
        // [23.3.1.3] map operations
  
!       //@{
        /**
         *  @brief Tries to locate an element in a %map.
         *  @param  __x  Key of (key, value) %pair to be located.
--- 1152,1158 ----
  
        // [23.3.1.3] map operations
  
!       ///@{
        /**
         *  @brief Tries to locate an element in a %map.
         *  @param  __x  Key of (key, value) %pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1175,1183 ****
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Tries to locate an element in a %map.
         *  @param  __x  Key of (key, value) %pair to be located.
--- 1175,1183 ----
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Tries to locate an element in a %map.
         *  @param  __x  Key of (key, value) %pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1200,1208 ****
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief  Finds the number of elements with given key.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 1200,1208 ----
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief  Finds the number of elements with given key.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1221,1230 ****
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       //@}
  
  #if __cplusplus > 201703L
!       //@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 1221,1230 ----
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       ///@}
  
  #if __cplusplus > 201703L
!       ///@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1239,1248 ****
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       //@}
  #endif
  
!       //@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 1239,1248 ----
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       ///@}
  #endif
  
!       ///@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1265,1273 ****
  	-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 1265,1273 ----
  	-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1290,1298 ****
  	-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 1290,1298 ----
  	-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1310,1318 ****
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 1310,1318 ----
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1330,1338 ****
  	-> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 1330,1338 ----
  	-> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1359,1367 ****
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 1359,1367 ----
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1392,1398 ****
  	      _M_t._M_equal_range_tr(__x));
  	}
  #endif
!       //@}
  
        template<typename _K1, typename _T1, typename _C1, typename _A1>
  	friend bool
--- 1392,1398 ----
  	      _M_t._M_equal_range_tr(__x));
  	}
  #endif
!       ///@}
  
        template<typename _K1, typename _T1, typename _C1, typename _A1>
  	friend bool
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_multimap.h gcc-10.4.0/libstdc++-v3/include/bits/stl_multimap.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_multimap.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_multimap.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 551,557 ****
  	insert(_Pair&& __x)
  	{ return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); }
  #endif
!       // @}
  
        /**
         *  @brief Inserts a std::pair into the %multimap.
--- 551,557 ----
  	insert(_Pair&& __x)
  	{ return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); }
  #endif
!       /// @}
  
        /**
         *  @brief Inserts a std::pair into the %multimap.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 597,603 ****
  					    std::forward<_Pair>(__x));
  	}
  #endif
!       // @}
  
        /**
         *  @brief A template function that attempts to insert a range
--- 597,603 ----
  					    std::forward<_Pair>(__x));
  	}
  #endif
!       /// @}
  
        /**
         *  @brief A template function that attempts to insert a range
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 707,713 ****
        iterator
        erase(iterator __position)
        { return _M_t.erase(__position); }
!       // @}
  #else
        /**
         *  @brief Erases an element from a %multimap.
--- 707,713 ----
        iterator
        erase(iterator __position)
        { return _M_t.erase(__position); }
!       /// @}
  #else
        /**
         *  @brief Erases an element from a %multimap.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 827,833 ****
  
        // multimap operations
  
!       //@{
        /**
         *  @brief Tries to locate an element in a %multimap.
         *  @param  __x  Key of (key, value) pair to be located.
--- 827,833 ----
  
        // multimap operations
  
!       ///@{
        /**
         *  @brief Tries to locate an element in a %multimap.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 849,857 ****
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Tries to locate an element in a %multimap.
         *  @param  __x  Key of (key, value) pair to be located.
--- 849,857 ----
  	find(const _Kt& __x) -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Tries to locate an element in a %multimap.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 873,881 ****
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the number of elements with given key.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 873,881 ----
  	find(const _Kt& __x) const -> decltype(_M_t._M_find_tr(__x))
  	{ return _M_t._M_find_tr(__x); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the number of elements with given key.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 891,900 ****
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       //@}
  
  #if __cplusplus > 201703L
!       //@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 891,900 ----
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       ///@}
  
  #if __cplusplus > 201703L
!       ///@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 909,918 ****
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       //@}
  #endif
  
!       //@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 909,918 ----
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       ///@}
  #endif
  
!       ///@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 935,943 ****
  	-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 935,943 ----
  	-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 960,968 ****
  	-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 960,968 ----
  	-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 980,988 ****
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
--- 980,988 ----
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key of (key, value) pair to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1000,1008 ****
  	-> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 1000,1008 ----
  	-> decltype(const_iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1027,1035 ****
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
--- 1027,1035 ----
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key of (key, value) pairs to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1058,1064 ****
  	      _M_t._M_equal_range_tr(__x));
  	}
  #endif
!       //@}
  
        template<typename _K1, typename _T1, typename _C1, typename _A1>
  	friend bool
--- 1058,1064 ----
  	      _M_t._M_equal_range_tr(__x));
  	}
  #endif
!       ///@}
  
        template<typename _K1, typename _T1, typename _C1, typename _A1>
  	friend bool
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_multiset.h gcc-10.4.0/libstdc++-v3/include/bits/stl_multiset.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_multiset.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_multiset.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 720,726 ****
  
        // multiset operations:
  
!       //@{
        /**
         *  @brief Finds the number of elements with given key.
         *  @param  __x  Key of elements to be located.
--- 720,726 ----
  
        // multiset operations:
  
!       ///@{
        /**
         *  @brief Finds the number of elements with given key.
         *  @param  __x  Key of elements to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 736,745 ****
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       //@}
  
  #if __cplusplus > 201703L
!       //@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of elements to be located.
--- 736,745 ----
  	count(const _Kt& __x) const -> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       ///@}
  
  #if __cplusplus > 201703L
!       ///@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of elements to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 754,765 ****
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       //@}
  #endif
  
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 214.  set::find() missing const overload
!       //@{
        /**
         *  @brief Tries to locate an element in a %set.
         *  @param  __x  Element to be located.
--- 754,765 ----
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       ///@}
  #endif
  
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 214.  set::find() missing const overload
!       ///@{
        /**
         *  @brief Tries to locate an element in a %set.
         *  @param  __x  Element to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 792,800 ****
  	-> decltype(const_iterator{_M_t._M_find_tr(__x)})
  	{ return const_iterator{_M_t._M_find_tr(__x)}; }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 792,800 ----
  	-> decltype(const_iterator{_M_t._M_find_tr(__x)})
  	{ return const_iterator{_M_t._M_find_tr(__x)}; }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 827,835 ****
  	-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 827,835 ----
  	-> decltype(iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 857,865 ****
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 857,865 ----
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 896,902 ****
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       //@}
  
        template<typename _K1, typename _C1, typename _A1>
  	friend bool
--- 896,902 ----
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       ///@}
  
        template<typename _K1, typename _C1, typename _A1>
  	friend bool
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_numeric.h gcc-10.4.0/libstdc++-v3/include/bits/stl_numeric.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_numeric.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_numeric.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 403,409 ****
        return ++__result;
      }
  
!   // @} group numeric_ops
  
  #undef _GLIBCXX_MOVE_IF_20
  
--- 403,409 ----
        return ++__result;
      }
  
!   /// @} group numeric_ops
  
  #undef _GLIBCXX_MOVE_IF_20
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_pair.h gcc-10.4.0/libstdc++-v3/include/bits/stl_pair.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_pair.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_pair.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 542,548 ****
  #endif
  #endif // __cplusplus >= 201103L
  
!   // @} relates pair
  
    /**
     *  @brief A convenience wrapper for creating a pair from two objects.
--- 542,548 ----
  #endif
  #endif // __cplusplus >= 201103L
  
!   /// @} relates pair
  
    /**
     *  @brief A convenience wrapper for creating a pair from two objects.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_set.h gcc-10.4.0/libstdc++-v3/include/bits/stl_set.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_set.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_set.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 115,128 ****
  
      public:
        // typedefs:
!       //@{
        /// Public typedefs.
        typedef _Key     key_type;
        typedef _Key     value_type;
        typedef _Compare key_compare;
        typedef _Compare value_compare;
        typedef _Alloc   allocator_type;
!       //@}
  
      private:
        typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
--- 115,128 ----
  
      public:
        // typedefs:
!       ///@{
        /// Public typedefs.
        typedef _Key     key_type;
        typedef _Key     value_type;
        typedef _Compare key_compare;
        typedef _Compare value_compare;
        typedef _Alloc   allocator_type;
!       ///@}
  
      private:
        typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 135,141 ****
        typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits;
  
      public:
!       //@{
        ///  Iterator-related typedefs.
        typedef typename _Alloc_traits::pointer		 pointer;
        typedef typename _Alloc_traits::const_pointer	 const_pointer;
--- 135,141 ----
        typedef __gnu_cxx::__alloc_traits<_Key_alloc_type> _Alloc_traits;
  
      public:
!       ///@{
        ///  Iterator-related typedefs.
        typedef typename _Alloc_traits::pointer		 pointer;
        typedef typename _Alloc_traits::const_pointer	 const_pointer;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 150,156 ****
        typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
        typedef typename _Rep_type::size_type		 size_type;
        typedef typename _Rep_type::difference_type	 difference_type;
!       //@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Rep_type::node_type;
--- 150,156 ----
        typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
        typedef typename _Rep_type::size_type		 size_type;
        typedef typename _Rep_type::difference_type	 difference_type;
!       ///@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Rep_type::node_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 735,741 ****
  
        // set operations:
  
!       //@{
        /**
         *  @brief  Finds the number of elements.
         *  @param  __x  Element to located.
--- 735,741 ----
  
        // set operations:
  
!       ///@{
        /**
         *  @brief  Finds the number of elements.
         *  @param  __x  Element to located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 755,764 ****
  	-> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       //@}
  
  #if __cplusplus > 201703L
!       //@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of elements to be located.
--- 755,764 ----
  	-> decltype(_M_t._M_count_tr(__x))
  	{ return _M_t._M_count_tr(__x); }
  #endif
!       ///@}
  
  #if __cplusplus > 201703L
!       ///@{
        /**
         *  @brief  Finds whether an element with the given key exists.
         *  @param  __x  Key of elements to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 773,784 ****
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       //@}
  #endif
  
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 214.  set::find() missing const overload
!       //@{
        /**
         *  @brief Tries to locate an element in a %set.
         *  @param  __x  Element to be located.
--- 773,784 ----
  	contains(const _Kt& __x) const
  	-> decltype(_M_t._M_find_tr(__x), void(), true)
  	{ return _M_t._M_find_tr(__x) != _M_t.end(); }
!       ///@}
  #endif
  
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 214.  set::find() missing const overload
!       ///@{
        /**
         *  @brief Tries to locate an element in a %set.
         *  @param  __x  Element to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 811,819 ****
  	-> decltype(const_iterator{_M_t._M_find_tr(__x)})
  	{ return const_iterator{_M_t._M_find_tr(__x)}; }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 811,819 ----
  	-> decltype(const_iterator{_M_t._M_find_tr(__x)})
  	{ return const_iterator{_M_t._M_find_tr(__x)}; }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the beginning of a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 846,854 ****
  	-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 846,854 ----
  	-> decltype(const_iterator(_M_t._M_lower_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_lower_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds the end of a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 876,884 ****
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 876,884 ----
  	-> decltype(iterator(_M_t._M_upper_bound_tr(__x)))
  	{ return const_iterator(_M_t._M_upper_bound_tr(__x)); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 915,921 ****
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       //@}
  
        template<typename _K1, typename _C1, typename _A1>
  	friend bool
--- 915,921 ----
  	-> decltype(pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)))
  	{ return pair<iterator, iterator>(_M_t._M_equal_range_tr(__x)); }
  #endif
!       ///@}
  
        template<typename _K1, typename _C1, typename _A1>
  	friend bool
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_tree.h gcc-10.4.0/libstdc++-v3/include/bits/stl_tree.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_tree.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_tree.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 698,704 ****
  	  : _Node_allocator(__a), _Base_key_compare(__comp)
  	  { }
  #else
! 	  _Rb_tree_impl(_Rb_tree_impl&&) = default;
  
  	  explicit
  	  _Rb_tree_impl(_Node_allocator&& __a)
--- 698,706 ----
  	  : _Node_allocator(__a), _Base_key_compare(__comp)
  	  { }
  #else
! 	  _Rb_tree_impl(_Rb_tree_impl&&)
! 	    noexcept( is_nothrow_move_constructible<_Base_key_compare>::value )
! 	  = default;
  
  	  explicit
  	  _Rb_tree_impl(_Node_allocator&& __a)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1667,1672 ****
--- 1669,1675 ----
  	_M_move_data(__x, true_type());
        else
  	{
+ 	  constexpr bool __move = !__move_if_noexcept_cond<value_type>::value;
  	  _Alloc_node __an(*this);
  	  auto __lbd =
  	    [&__an](const value_type& __cval)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1675,1680 ****
--- 1678,1685 ----
  	      return __an(std::move_if_noexcept(__val));
  	    };
  	  _M_root() = _M_copy(__x, __lbd);
+ 	  if _GLIBCXX17_CONSTEXPR (__move)
+ 	    __x.clear();
  	}
      }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stl_uninitialized.h gcc-10.4.0/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stl_uninitialized.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stl_uninitialized.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1033,1039 ****
    /// @endcond
  #endif
  
!   // @} group memory
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 1033,1039 ----
    /// @endcond
  #endif
  
!   /// @} group memory
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/stream_iterator.h gcc-10.4.0/libstdc++-v3/include/bits/stream_iterator.h
*** gcc-10.3.0/libstdc++-v3/include/bits/stream_iterator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/stream_iterator.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 177,183 ****
      : public iterator<output_iterator_tag, void, void, void, void>
      {
      public:
!       //@{
        /// Public typedef
  #if __cplusplus > 201703L
        using difference_type = ptrdiff_t;
--- 177,183 ----
      : public iterator<output_iterator_tag, void, void, void, void>
      {
      public:
!       ///@{
        /// Public typedef
  #if __cplusplus > 201703L
        using difference_type = ptrdiff_t;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 185,191 ****
        typedef _CharT                         char_type;
        typedef _Traits                        traits_type;
        typedef basic_ostream<_CharT, _Traits> ostream_type;
!       //@}
  
      private:
        ostream_type*	_M_stream;
--- 185,191 ----
        typedef _CharT                         char_type;
        typedef _Traits                        traits_type;
        typedef basic_ostream<_CharT, _Traits> ostream_type;
!       ///@}
  
      private:
        ostream_type*	_M_stream;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 249,255 ****
        { return *this; }
      };
  
!   // @} group iterators
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 249,255 ----
        { return *this; }
      };
  
!   /// @} group iterators
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/streambuf_iterator.h gcc-10.4.0/libstdc++-v3/include/bits/streambuf_iterator.h
*** gcc-10.3.0/libstdc++-v3/include/bits/streambuf_iterator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/streambuf_iterator.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 53,59 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
  #if __cplusplus < 201103L
        typedef _CharT& reference; // Changed to _CharT by LWG 445
--- 53,59 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
  #if __cplusplus < 201103L
        typedef _CharT& reference; // Changed to _CharT by LWG 445
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 68,74 ****
        typedef typename _Traits::int_type		int_type;
        typedef basic_streambuf<_CharT, _Traits>		streambuf_type;
        typedef basic_istream<_CharT, _Traits>		istream_type;
!       //@}
  
        template<typename _CharT2>
  	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
--- 68,74 ----
        typedef typename _Traits::int_type		int_type;
        typedef basic_streambuf<_CharT, _Traits>		streambuf_type;
        typedef basic_istream<_CharT, _Traits>		istream_type;
!       ///@}
  
        template<typename _CharT2>
  	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 241,247 ****
      {
      public:
        // Types:
!       //@{
        /// Public typedefs
  #if __cplusplus > 201703L
        using difference_type = ptrdiff_t;
--- 241,247 ----
      {
      public:
        // Types:
!       ///@{
        /// Public typedefs
  #if __cplusplus > 201703L
        using difference_type = ptrdiff_t;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 250,256 ****
        typedef _Traits			       traits_type;
        typedef basic_streambuf<_CharT, _Traits> streambuf_type;
        typedef basic_ostream<_CharT, _Traits>   ostream_type;
!       //@}
  
        template<typename _CharT2>
  	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
--- 250,256 ----
        typedef _Traits			       traits_type;
        typedef basic_streambuf<_CharT, _Traits> streambuf_type;
        typedef basic_ostream<_CharT, _Traits>   ostream_type;
!       ///@}
  
        template<typename _CharT2>
  	friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 499,505 ****
        __i._M_c = __eof;
      }
  
! // @} group iterators
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 499,505 ----
        __i._M_c = __eof;
      }
  
! /// @} group iterators
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/unique_ptr.h gcc-10.4.0/libstdc++-v3/include/bits/unique_ptr.h
*** gcc-10.3.0/libstdc++-v3/include/bits/unique_ptr.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/unique_ptr.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 906,912 ****
        return compare_three_way()(__x.get(), static_cast<pointer>(nullptr));
      }
  #endif
!   // @} relates unique_ptr
  
    /// @cond undocumented
    template<typename _Up, typename _Ptr = typename _Up::pointer,
--- 906,912 ----
        return compare_three_way()(__x.get(), static_cast<pointer>(nullptr));
      }
  #endif
!   /// @} relates unique_ptr
  
    /// @cond undocumented
    template<typename _Up, typename _Ptr = typename _Up::pointer,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 971,977 ****
    template<typename _Tp, typename... _Args>
      inline typename _MakeUniq<_Tp>::__invalid_type
      make_unique(_Args&&...) = delete;
!   // @} relates unique_ptr
  #endif // C++14
  
  #if __cplusplus > 201703L && __cpp_concepts
--- 971,977 ----
    template<typename _Tp, typename... _Args>
      inline typename _MakeUniq<_Tp>::__invalid_type
      make_unique(_Args&&...) = delete;
!   /// @} relates unique_ptr
  #endif // C++14
  
  #if __cplusplus > 201703L && __cpp_concepts
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 989,995 ****
      }
  #endif // C++20
  
!   // @} group pointer_abstractions
  
  #if __cplusplus >= 201703L
    namespace __detail::__variant
--- 989,995 ----
      }
  #endif // C++20
  
!   /// @} group pointer_abstractions
  
  #if __cplusplus >= 201703L
    namespace __detail::__variant
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/unordered_map.h gcc-10.4.0/libstdc++-v3/include/bits/unordered_map.h
*** gcc-10.3.0/libstdc++-v3/include/bits/unordered_map.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/unordered_map.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 106,112 ****
  
      public:
        // typedefs:
!       //@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
--- 106,112 ----
  
      public:
        // typedefs:
!       ///@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 114,122 ****
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       //@}
  
!       //@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
--- 114,122 ----
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       ///@}
  
!       ///@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 128,134 ****
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       //@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
--- 128,134 ----
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       ///@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 209,214 ****
--- 209,215 ----
         */
        unordered_map(unordered_map&& __umap,
  		    const allocator_type& __a)
+ 	noexcept( noexcept(_Hashtable(std::move(__umap._M_h), __a)) )
        : _M_h(std::move(__umap._M_h), __a)
        { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 324,330 ****
        begin() noexcept
        { return _M_h.begin(); }
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_map.
--- 325,331 ----
        begin() noexcept
        { return _M_h.begin(); }
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 336,342 ****
        const_iterator
        cbegin() const noexcept
        { return _M_h.begin(); }
!       //@}
  
        /**
         *  Returns a read/write iterator that points one past the last element in
--- 337,343 ----
        const_iterator
        cbegin() const noexcept
        { return _M_h.begin(); }
!       ///@}
  
        /**
         *  Returns a read/write iterator that points one past the last element in
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 346,352 ****
        end() noexcept
        { return _M_h.end(); }
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_map.
--- 347,353 ----
        end() noexcept
        { return _M_h.end(); }
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_map.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 358,364 ****
        const_iterator
        cend() const noexcept
        { return _M_h.end(); }
!       //@}
  
        // modifiers.
  
--- 359,365 ----
        const_iterator
        cend() const noexcept
        { return _M_h.end(); }
!       ///@}
  
        // modifiers.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 557,563 ****
          }
  #endif // C++17
  
!       //@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
  
--- 558,564 ----
          }
  #endif // C++17
  
!       ///@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 590,598 ****
  		      pair<iterator, bool>>
  	insert(_Pair&& __x)
          { return _M_h.emplace(std::forward<_Pair>(__x)); }
!       //@}
  
!       //@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
         *  @param  __hint  An iterator that serves as a hint as to where the
--- 591,599 ----
  		      pair<iterator, bool>>
  	insert(_Pair&& __x)
          { return _M_h.emplace(std::forward<_Pair>(__x)); }
!       ///@}
  
!       ///@{
        /**
         *  @brief Attempts to insert a std::pair into the %unordered_map.
         *  @param  __hint  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 628,634 ****
  	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __hint, _Pair&& __x)
  	{ return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
!       //@}
  
        /**
         *  @brief A template function that attempts to insert a range of
--- 629,635 ----
  	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __hint, _Pair&& __x)
  	{ return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
!       ///@}
  
        /**
         *  @brief A template function that attempts to insert a range of
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 773,779 ****
          }
  #endif
  
!       //@{
        /**
         *  @brief Erases an element from an %unordered_map.
         *  @param  __position  An iterator pointing to the element to be erased.
--- 774,780 ----
          }
  #endif
  
!       ///@{
        /**
         *  @brief Erases an element from an %unordered_map.
         *  @param  __position  An iterator pointing to the element to be erased.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 795,801 ****
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       //@}
  
        /**
         *  @brief Erases elements according to the provided key.
--- 796,802 ----
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       ///@}
  
        /**
         *  @brief Erases elements according to the provided key.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 903,909 ****
  
        // lookup.
  
!       //@{
        /**
         *  @brief Tries to locate an element in an %unordered_map.
         *  @param  __x  Key to be located.
--- 904,910 ----
  
        // lookup.
  
!       ///@{
        /**
         *  @brief Tries to locate an element in an %unordered_map.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 922,928 ****
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       //@}
  
        /**
         *  @brief  Finds the number of elements.
--- 923,929 ----
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       ///@}
  
        /**
         *  @brief  Finds the number of elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 948,954 ****
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 949,955 ----
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 964,972 ****
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       //@}
  
!       //@{
        /**
         *  @brief  Subscript ( @c [] ) access to %unordered_map data.
         *  @param  __k  The key for which data should be retrieved.
--- 965,973 ----
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       ///@}
  
!       ///@{
        /**
         *  @brief  Subscript ( @c [] ) access to %unordered_map data.
         *  @param  __k  The key for which data should be retrieved.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 986,994 ****
        mapped_type&
        operator[](key_type&& __k)
        { return _M_h[std::move(__k)]; }
!       //@}
  
!       //@{
        /**
         *  @brief  Access to %unordered_map data.
         *  @param  __k  The key for which data should be retrieved.
--- 987,995 ----
        mapped_type&
        operator[](key_type&& __k)
        { return _M_h[std::move(__k)]; }
!       ///@}
  
!       ///@{
        /**
         *  @brief  Access to %unordered_map data.
         *  @param  __k  The key for which data should be retrieved.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1003,1009 ****
        const mapped_type&
        at(const key_type& __k) const
        { return _M_h.at(__k); }
!       //@}
  
        // bucket interface.
  
--- 1004,1010 ----
        const mapped_type&
        at(const key_type& __k) const
        { return _M_h.at(__k); }
!       ///@}
  
        // bucket interface.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1045,1051 ****
        begin(size_type __n)
        { return _M_h.begin(__n); }
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
--- 1046,1052 ----
        begin(size_type __n)
        { return _M_h.begin(__n); }
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1059,1065 ****
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       //@}
  
        /**
         *  @brief  Returns a read/write iterator pointing to one past the last
--- 1060,1066 ----
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       ///@}
  
        /**
         *  @brief  Returns a read/write iterator pointing to one past the last
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1071,1077 ****
        end(size_type __n)
        { return _M_h.end(__n); }
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
--- 1072,1078 ----
        end(size_type __n)
        { return _M_h.end(__n); }
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1085,1091 ****
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       //@}
  
        // hash policy.
  
--- 1086,1092 ----
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       ///@}
  
        // hash policy.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1253,1259 ****
  
      public:
        // typedefs:
!       //@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
--- 1254,1260 ----
  
      public:
        // typedefs:
!       ///@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1261,1269 ****
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       //@}
  
!       //@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
--- 1262,1270 ----
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       ///@}
  
!       ///@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1275,1281 ****
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       //@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
--- 1276,1282 ----
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       ///@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1355,1360 ****
--- 1356,1362 ----
         */
        unordered_multimap(unordered_multimap&& __ummap,
  			 const allocator_type& __a)
+ 	noexcept( noexcept(_Hashtable(std::move(__ummap._M_h), __a)) )
        : _M_h(std::move(__ummap._M_h), __a)
        { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1470,1476 ****
        begin() noexcept
        { return _M_h.begin(); }
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_multimap.
--- 1472,1478 ----
        begin() noexcept
        { return _M_h.begin(); }
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_multimap.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1482,1488 ****
        const_iterator
        cbegin() const noexcept
        { return _M_h.begin(); }
!       //@}
  
        /**
         *  Returns a read/write iterator that points one past the last element in
--- 1484,1490 ----
        const_iterator
        cbegin() const noexcept
        { return _M_h.begin(); }
!       ///@}
  
        /**
         *  Returns a read/write iterator that points one past the last element in
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1492,1498 ****
        end() noexcept
        { return _M_h.end(); }
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_multimap.
--- 1494,1500 ----
        end() noexcept
        { return _M_h.end(); }
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_multimap.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1504,1510 ****
        const_iterator
        cend() const noexcept
        { return _M_h.end(); }
!       //@}
  
        // modifiers.
  
--- 1506,1512 ----
        const_iterator
        cend() const noexcept
        { return _M_h.end(); }
!       ///@}
  
        // modifiers.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1555,1561 ****
  	emplace_hint(const_iterator __pos, _Args&&... __args)
  	{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
  
!       //@{
        /**
         *  @brief Inserts a std::pair into the %unordered_multimap.
         *  @param __x Pair to be inserted (see std::make_pair for easy
--- 1557,1563 ----
  	emplace_hint(const_iterator __pos, _Args&&... __args)
  	{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
  
!       ///@{
        /**
         *  @brief Inserts a std::pair into the %unordered_multimap.
         *  @param __x Pair to be inserted (see std::make_pair for easy
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1577,1585 ****
  	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(_Pair&& __x)
          { return _M_h.emplace(std::forward<_Pair>(__x)); }
!       //@}
  
!       //@{
        /**
         *  @brief Inserts a std::pair into the %unordered_multimap.
         *  @param  __hint  An iterator that serves as a hint as to where the
--- 1579,1587 ----
  	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(_Pair&& __x)
          { return _M_h.emplace(std::forward<_Pair>(__x)); }
!       ///@}
  
!       ///@{
        /**
         *  @brief Inserts a std::pair into the %unordered_multimap.
         *  @param  __hint  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1613,1619 ****
  	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __hint, _Pair&& __x)
          { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
!       //@}
  
        /**
         *  @brief A template function that attempts to insert a range of
--- 1615,1621 ----
  	__enable_if_t<is_constructible<value_type, _Pair&&>::value, iterator>
  	insert(const_iterator __hint, _Pair&& __x)
          { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); }
!       ///@}
  
        /**
         *  @brief A template function that attempts to insert a range of
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1666,1672 ****
        { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
  #endif // C++17
  
!       //@{
        /**
         *  @brief Erases an element from an %unordered_multimap.
         *  @param  __position  An iterator pointing to the element to be erased.
--- 1668,1674 ----
        { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
  #endif // C++17
  
!       ///@{
        /**
         *  @brief Erases an element from an %unordered_multimap.
         *  @param  __position  An iterator pointing to the element to be erased.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1688,1694 ****
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       //@}
  
        /**
         *  @brief Erases elements according to the provided key.
--- 1690,1696 ----
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       ///@}
  
        /**
         *  @brief Erases elements according to the provided key.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1798,1804 ****
  
        // lookup.
  
!       //@{
        /**
         *  @brief Tries to locate an element in an %unordered_multimap.
         *  @param  __x  Key to be located.
--- 1800,1806 ----
  
        // lookup.
  
!       ///@{
        /**
         *  @brief Tries to locate an element in an %unordered_multimap.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1817,1823 ****
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       //@}
  
        /**
         *  @brief  Finds the number of elements.
--- 1819,1825 ----
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       ///@}
  
        /**
         *  @brief  Finds the number of elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1839,1845 ****
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 1841,1847 ----
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1853,1859 ****
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       //@}
  
        // bucket interface.
  
--- 1855,1861 ----
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       ///@}
  
        // bucket interface.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1895,1901 ****
        begin(size_type __n)
        { return _M_h.begin(__n); }
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
--- 1897,1903 ----
        begin(size_type __n)
        { return _M_h.begin(__n); }
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1909,1915 ****
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       //@}
  
        /**
         *  @brief  Returns a read/write iterator pointing to one past the last
--- 1911,1917 ----
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       ///@}
  
        /**
         *  @brief  Returns a read/write iterator pointing to one past the last
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1921,1927 ****
        end(size_type __n)
        { return _M_h.end(__n); }
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
--- 1923,1929 ----
        end(size_type __n)
        { return _M_h.end(__n); }
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1935,1941 ****
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       //@}
  
        // hash policy.
  
--- 1937,1943 ----
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       ///@}
  
        // hash policy.
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/unordered_set.h gcc-10.4.0/libstdc++-v3/include/bits/unordered_set.h
*** gcc-10.3.0/libstdc++-v3/include/bits/unordered_set.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/unordered_set.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 101,116 ****
  
      public:
        // typedefs:
!       //@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       //@}
  
!       //@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
--- 101,116 ----
  
      public:
        // typedefs:
!       ///@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       ///@}
  
!       ///@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 122,128 ****
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       //@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
--- 122,128 ----
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       ///@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 203,208 ****
--- 203,209 ----
         */
        unordered_set(unordered_set&& __uset,
  		    const allocator_type& __a)
+ 	noexcept( noexcept(_Hashtable(std::move(__uset._M_h), __a)) )
        : _M_h(std::move(__uset._M_h), __a)
        { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 310,316 ****
  
        // iterators.
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_set.
--- 311,317 ----
  
        // iterators.
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_set.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 322,330 ****
        const_iterator
        begin() const noexcept
        { return _M_h.begin(); }
!       //@}
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_set.
--- 323,331 ----
        const_iterator
        begin() const noexcept
        { return _M_h.begin(); }
!       ///@}
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_set.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 336,342 ****
        const_iterator
        end() const noexcept
        { return _M_h.end(); }
!       //@}
  
        /**
         *  Returns a read-only (constant) iterator that points to the first
--- 337,343 ----
        const_iterator
        end() const noexcept
        { return _M_h.end(); }
!       ///@}
  
        /**
         *  Returns a read-only (constant) iterator that points to the first
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 402,408 ****
  	emplace_hint(const_iterator __pos, _Args&&... __args)
  	{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
  
!       //@{
        /**
         *  @brief Attempts to insert an element into the %unordered_set.
         *  @param  __x  Element to be inserted.
--- 403,409 ----
  	emplace_hint(const_iterator __pos, _Args&&... __args)
  	{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
  
!       ///@{
        /**
         *  @brief Attempts to insert an element into the %unordered_set.
         *  @param  __x  Element to be inserted.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 423,431 ****
        std::pair<iterator, bool>
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
!       //@}
  
!       //@{
        /**
         *  @brief Attempts to insert an element into the %unordered_set.
         *  @param  __hint  An iterator that serves as a hint as to where the
--- 424,432 ----
        std::pair<iterator, bool>
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
!       ///@}
  
!       ///@{
        /**
         *  @brief Attempts to insert an element into the %unordered_set.
         *  @param  __hint  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 452,458 ****
        iterator
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
!       //@}
  
        /**
         *  @brief A template function that attempts to insert a range of
--- 453,459 ----
        iterator
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
!       ///@}
  
        /**
         *  @brief A template function that attempts to insert a range of
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 504,510 ****
        { return _M_h._M_reinsert_node(std::move(__nh)).position; }
  #endif // C++17
  
!       //@{
        /**
         *  @brief Erases an element from an %unordered_set.
         *  @param  __position  An iterator pointing to the element to be erased.
--- 505,511 ----
        { return _M_h._M_reinsert_node(std::move(__nh)).position; }
  #endif // C++17
  
!       ///@{
        /**
         *  @brief Erases an element from an %unordered_set.
         *  @param  __position  An iterator pointing to the element to be erased.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 526,532 ****
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       //@}
  
        /**
         *  @brief Erases elements according to the provided key.
--- 527,533 ----
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       ///@}
  
        /**
         *  @brief Erases elements according to the provided key.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 633,639 ****
  
        // lookup.
  
!       //@{
        /**
         *  @brief Tries to locate an element in an %unordered_set.
         *  @param  __x  Element to be located.
--- 634,640 ----
  
        // lookup.
  
!       ///@{
        /**
         *  @brief Tries to locate an element in an %unordered_set.
         *  @param  __x  Element to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 652,658 ****
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       //@}
  
        /**
         *  @brief  Finds the number of elements.
--- 653,659 ----
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       ///@}
  
        /**
         *  @brief  Finds the number of elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 678,684 ****
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 679,685 ----
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 694,700 ****
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       //@}
  
        // bucket interface.
  
--- 695,701 ----
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       ///@}
  
        // bucket interface.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 726,732 ****
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
--- 727,733 ----
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 744,752 ****
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       //@}
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
--- 745,753 ----
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       ///@}
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 764,770 ****
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       //@}
  
        // hash policy.
  
--- 765,771 ----
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       ///@}
  
        // hash policy.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 916,931 ****
  
      public:
        // typedefs:
!       //@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       //@}
  
!       //@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
--- 917,932 ----
  
      public:
        // typedefs:
!       ///@{
        /// Public typedefs.
        typedef typename _Hashtable::key_type	key_type;
        typedef typename _Hashtable::value_type	value_type;
        typedef typename _Hashtable::hasher	hasher;
        typedef typename _Hashtable::key_equal	key_equal;
        typedef typename _Hashtable::allocator_type allocator_type;
!       ///@}
  
!       ///@{
        ///  Iterator-related typedefs.
        typedef typename _Hashtable::pointer		pointer;
        typedef typename _Hashtable::const_pointer	const_pointer;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 937,943 ****
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       //@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
--- 938,944 ----
        typedef typename _Hashtable::const_local_iterator	const_local_iterator;
        typedef typename _Hashtable::size_type		size_type;
        typedef typename _Hashtable::difference_type	difference_type;
!       ///@}
  
  #if __cplusplus > 201402L
        using node_type = typename _Hashtable::node_type;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1044,1049 ****
--- 1045,1051 ----
         */
        unordered_multiset(unordered_multiset&& __umset,
  			 const allocator_type& __a)
+ 	noexcept( noexcept(_Hashtable(std::move(__umset._M_h), __a)) )
        : _M_h(std::move(__umset._M_h), __a)
        { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1124,1130 ****
  
        // iterators.
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_multiset.
--- 1126,1132 ----
  
        // iterators.
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points to the first
         *  element in the %unordered_multiset.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1136,1144 ****
        const_iterator
        begin() const noexcept
        { return _M_h.begin(); }
!       //@}
  
!       //@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_multiset.
--- 1138,1146 ----
        const_iterator
        begin() const noexcept
        { return _M_h.begin(); }
!       ///@}
  
!       ///@{
        /**
         *  Returns a read-only (constant) iterator that points one past the last
         *  element in the %unordered_multiset.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1150,1156 ****
        const_iterator
        end() const noexcept
        { return _M_h.end(); }
!       //@}
  
        /**
         *  Returns a read-only (constant) iterator that points to the first
--- 1152,1158 ----
        const_iterator
        end() const noexcept
        { return _M_h.end(); }
!       ///@}
  
        /**
         *  Returns a read-only (constant) iterator that points to the first
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1204,1210 ****
  	emplace_hint(const_iterator __pos, _Args&&... __args)
  	{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
  
!       //@{
        /**
         *  @brief Inserts an element into the %unordered_multiset.
         *  @param  __x  Element to be inserted.
--- 1206,1212 ----
  	emplace_hint(const_iterator __pos, _Args&&... __args)
  	{ return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); }
  
!       ///@{
        /**
         *  @brief Inserts an element into the %unordered_multiset.
         *  @param  __x  Element to be inserted.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1219,1227 ****
        iterator
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
!       //@}
  
!       //@{
        /**
         *  @brief Inserts an element into the %unordered_multiset.
         *  @param  __hint  An iterator that serves as a hint as to where the
--- 1221,1229 ----
        iterator
        insert(value_type&& __x)
        { return _M_h.insert(std::move(__x)); }
!       ///@}
  
!       ///@{
        /**
         *  @brief Inserts an element into the %unordered_multiset.
         *  @param  __hint  An iterator that serves as a hint as to where the
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1245,1251 ****
        iterator
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
!       //@}
  
        /**
         *  @brief A template function that inserts a range of elements.
--- 1247,1253 ----
        iterator
        insert(const_iterator __hint, value_type&& __x)
        { return _M_h.insert(__hint, std::move(__x)); }
!       ///@}
  
        /**
         *  @brief A template function that inserts a range of elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1296,1302 ****
        { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
  #endif // C++17
  
!       //@{
        /**
         *  @brief Erases an element from an %unordered_multiset.
         *  @param  __position  An iterator pointing to the element to be erased.
--- 1298,1304 ----
        { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); }
  #endif // C++17
  
!       ///@{
        /**
         *  @brief Erases an element from an %unordered_multiset.
         *  @param  __position  An iterator pointing to the element to be erased.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1319,1325 ****
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       //@}
  
  
        /**
--- 1321,1327 ----
        iterator
        erase(iterator __position)
        { return _M_h.erase(__position); }
!       ///@}
  
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1432,1438 ****
  
        // lookup.
  
!       //@{
        /**
         *  @brief Tries to locate an element in an %unordered_multiset.
         *  @param  __x  Element to be located.
--- 1434,1440 ----
  
        // lookup.
  
!       ///@{
        /**
         *  @brief Tries to locate an element in an %unordered_multiset.
         *  @param  __x  Element to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1451,1457 ****
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       //@}
  
        /**
         *  @brief  Finds the number of elements.
--- 1453,1459 ----
        const_iterator
        find(const key_type& __x) const
        { return _M_h.find(__x); }
!       ///@}
  
        /**
         *  @brief  Finds the number of elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1473,1479 ****
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       //@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
--- 1475,1481 ----
        { return _M_h.find(__x) != _M_h.end(); }
  #endif
  
!       ///@{
        /**
         *  @brief Finds a subsequence matching given key.
         *  @param  __x  Key to be located.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1487,1493 ****
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       //@}
  
        // bucket interface.
  
--- 1489,1495 ----
        std::pair<const_iterator, const_iterator>
        equal_range(const key_type& __x) const
        { return _M_h.equal_range(__x); }
!       ///@}
  
        // bucket interface.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1519,1525 ****
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
--- 1521,1527 ----
        bucket(const key_type& __key) const
        { return _M_h.bucket(__key); }
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to the first
         *         bucket element.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1537,1545 ****
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       //@}
  
!       //@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
--- 1539,1547 ----
        const_local_iterator
        cbegin(size_type __n) const
        { return _M_h.cbegin(__n); }
!       ///@}
  
!       ///@{
        /**
         *  @brief  Returns a read-only (constant) iterator pointing to one past
         *         the last bucket elements.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1557,1563 ****
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       //@}
  
        // hash policy.
  
--- 1559,1565 ----
        const_local_iterator
        cend(size_type __n) const
        { return _M_h.cend(__n); }
!       ///@}
  
        // hash policy.
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/bits/vector.tcc gcc-10.4.0/libstdc++-v3/include/bits/vector.tcc
*** gcc-10.3.0/libstdc++-v3/include/bits/vector.tcc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/bits/vector.tcc	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 944,950 ****
  	return false;
        __try
  	{
! 	  _M_reallocate(size());
  	  return true;
  	}
        __catch(...)
--- 944,956 ----
  	return false;
        __try
  	{
! 	  if (size_type __n = size())
! 	    _M_reallocate(__n);
! 	  else
! 	    {
! 	      this->_M_deallocate();
! 	      this->_M_impl._M_reset();
! 	    }
  	  return true;
  	}
        __catch(...)
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/c_global/cmath gcc-10.4.0/libstdc++-v3/include/c_global/cmath
*** gcc-10.3.0/libstdc++-v3/include/c_global/cmath	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/c_global/cmath	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1844,1850 ****
  #endif // _GLIBCXX_USE_C99_MATH_TR1
  #endif // C++11
  
! #if __cplusplus > 201402L
  
    // [c.math.hypot3], three-dimensional hypotenuse
  #define __cpp_lib_hypot 201603
--- 1844,1850 ----
  #endif // _GLIBCXX_USE_C99_MATH_TR1
  #endif // C++11
  
! #if __cplusplus >= 201703L
  
    // [c.math.hypot3], three-dimensional hypotenuse
  #define __cpp_lib_hypot 201603
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1877,1886 ****
    { return std::__hypot3<long double>(__x, __y, __z); }
  
    template<typename _Tp, typename _Up, typename _Vp>
!     typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type
      hypot(_Tp __x, _Up __y, _Vp __z)
      {
!       using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type;
        return std::__hypot3<__type>(__x, __y, __z);
      }
  #endif // C++17
--- 1877,1886 ----
    { return std::__hypot3<long double>(__x, __y, __z); }
  
    template<typename _Tp, typename _Up, typename _Vp>
!     __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>
      hypot(_Tp __x, _Up __y, _Vp __z)
      {
!       using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>;
        return std::__hypot3<__type>(__x, __y, __z);
      }
  #endif // C++17
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1918,1923 ****
--- 1918,1931 ----
    constexpr long double
    lerp(long double __a, long double __b, long double __t) noexcept
    { return std::__lerp(__a, __b, __t); }
+ 
+   template<typename _Tp, typename _Up, typename _Vp>
+     constexpr __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>
+     lerp(_Tp __x, _Up __y, _Vp __z) noexcept
+     {
+       using __type = __gnu_cxx::__promoted_t<_Tp, _Up, _Vp>;
+       return std::__lerp<__type>(__x, __y, __z);
+     }
  #endif // C++20
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/helper_functions.h gcc-10.4.0/libstdc++-v3/include/debug/helper_functions.h
*** gcc-10.3.0/libstdc++-v3/include/debug/helper_functions.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/helper_functions.h	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_debug
*** 64,70 ****
      {
      private:
        typedef
!       typename std::iterator_traits<_Iterator>::difference_type _ItDiffType;
  
        template<typename _DiffType,
  	       typename = typename std::__is_void<_DiffType>::__type>
--- 64,70 ----
      {
      private:
        typedef
! 	typename std::iterator_traits<_Iterator>::difference_type _ItDiffType;
  
        template<typename _DiffType,
  	       typename = typename std::__is_void<_DiffType>::__type>
*************** namespace __gnu_debug
*** 287,292 ****
--- 287,304 ----
      __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
  		  _Size);
  
+   template<typename _InputIterator, typename _Diff>
+     _GLIBCXX_CONSTEXPR
+     inline bool
+     __can_advance(_InputIterator, const std::pair<_Diff, _Distance_precision>&, int)
+     { return true; }
+ 
+   template<typename _Iterator, typename _Sequence, typename _Category,
+ 	   typename _Diff>
+     bool
+     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>&,
+ 		  const std::pair<_Diff, _Distance_precision>&, int);
+ 
    /** Helper function to extract base iterator of random access safe iterator
     *  in order to reduce performance impact of debug mode.  Limited to random
     *  access iterator because it is the only category for which it is possible
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/macros.h gcc-10.4.0/libstdc++-v3/include/debug/macros.h
*** gcc-10.3.0/libstdc++-v3/include/debug/macros.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/macros.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__can
*** 104,109 ****
--- 104,115 ----
  		      ._M_iterator(_First, #_First)			\
  		      ._M_integer(_Size, #_Size))
  
+ #define __glibcxx_check_can_increment_dist(_First,_Dist,_Way)		\
+   _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__can_advance(_First, _Dist, _Way), \
+ 		      _M_message(__gnu_debug::__msg_iter_subscript_oob)	\
+ 		      ._M_iterator(_First, #_First)			\
+ 		      ._M_integer(_Way * _Dist.first, #_Dist))
+ 
  #define __glibcxx_check_can_increment_range(_First1,_Last1,_First2)	\
    do									\
    {									\
*************** _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__can
*** 115,121 ****
  			._M_iterator(_Last1, #_Last1),			\
  			__FILE__,__LINE__,__PRETTY_FUNCTION__);		\
      _GLIBCXX_DEBUG_VERIFY_COND_AT(					\
! 			__gnu_debug::__can_advance(_First2, __dist.first),\
  			_M_message(__gnu_debug::__msg_iter_subscript_oob)\
  			._M_iterator(_First2, #_First2)			\
  			._M_integer(__dist.first),			\
--- 121,127 ----
  			._M_iterator(_Last1, #_Last1),			\
  			__FILE__,__LINE__,__PRETTY_FUNCTION__);		\
      _GLIBCXX_DEBUG_VERIFY_COND_AT(					\
! 			__gnu_debug::__can_advance(_First2, __dist, 1), \
  			_M_message(__gnu_debug::__msg_iter_subscript_oob)\
  			._M_iterator(_First2, #_First2)			\
  			._M_integer(__dist.first),			\
*************** _GLIBCXX_DEBUG_VERIFY(__gnu_debug::__can
*** 133,139 ****
  			._M_iterator(_Last1, #_Last1),			\
  			__FILE__,__LINE__,__PRETTY_FUNCTION__);		\
      _GLIBCXX_DEBUG_VERIFY_COND_AT(					\
! 			__gnu_debug::__can_advance(_First2, -__dist.first),\
  			_M_message(__gnu_debug::__msg_iter_subscript_oob)\
  			._M_iterator(_First2, #_First2)			\
  			._M_integer(-__dist.first),			\
--- 139,145 ----
  			._M_iterator(_Last1, #_Last1),			\
  			__FILE__,__LINE__,__PRETTY_FUNCTION__);		\
      _GLIBCXX_DEBUG_VERIFY_COND_AT(					\
! 			__gnu_debug::__can_advance(_First2, __dist, -1), \
  			_M_message(__gnu_debug::__msg_iter_subscript_oob)\
  			._M_iterator(_First2, #_First2)			\
  			._M_integer(-__dist.first),			\
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/safe_iterator.h gcc-10.4.0/libstdc++-v3/include/debug/safe_iterator.h
*** gcc-10.3.0/libstdc++-v3/include/debug/safe_iterator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/safe_iterator.h	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_debug
*** 405,410 ****
--- 405,416 ----
        bool
        _M_can_advance(difference_type __n, bool __strict = false) const;
  
+       // Can we advance the iterator using @p __dist in @p __way direction.
+       template<typename _Diff>
+ 	bool
+ 	_M_can_advance(const std::pair<_Diff, _Distance_precision>& __dist,
+ 		       int __way) const;
+ 
        // Is the iterator range [*this, __rhs) valid?
        bool
        _M_valid_range(const _Safe_iterator& __rhs,
*************** namespace __gnu_debug
*** 956,961 ****
--- 962,975 ----
  		  _Size __n)
      { return __it._M_can_advance(__n); }
  
+   template<typename _Iterator, typename _Sequence, typename _Category,
+ 	   typename _Diff>
+     inline bool
+     __can_advance(const _Safe_iterator<_Iterator, _Sequence, _Category>& __it,
+ 		  const std::pair<_Diff, _Distance_precision>& __dist,
+ 		  int __way)
+     { return __it._M_can_advance(__dist, __way); }
+ 
    template<typename _Iterator, typename _Sequence>
      _Iterator
      __base(const _Safe_iterator<_Iterator, _Sequence,
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/safe_iterator.tcc gcc-10.4.0/libstdc++-v3/include/debug/safe_iterator.tcc
*** gcc-10.3.0/libstdc++-v3/include/debug/safe_iterator.tcc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/safe_iterator.tcc	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_debug
*** 92,116 ****
        if (__n == 0)
  	return true;
  
        if (__n < 0)
! 	{
! 	  std::pair<difference_type, _Distance_precision> __dist =
! 	    _M_get_distance_from_begin();
! 	  return __dist.second == __dp_exact
! 	    ? __dist.first >= -__n
! 	    : !__strict && __dist.first > 0;
! 	}
!       else
! 	{
! 	  std::pair<difference_type, _Distance_precision> __dist =
! 	    _M_get_distance_to_end();
! 	  return __dist.second == __dp_exact
! 	    ? __dist.first >= __n
! 	    : !__strict && __dist.first > 0;
! 	}
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
      typename _Distance_traits<_Iterator>::__type
      _Safe_iterator<_Iterator, _Sequence, _Category>::
      _M_get_distance_to(const _Safe_iterator& __rhs) const
--- 92,124 ----
        if (__n == 0)
  	return true;
  
+       std::pair<difference_type, _Distance_precision> __dist = __n < 0
+ 	? _M_get_distance_from_begin()
+ 	: _M_get_distance_to_end();
+ 
        if (__n < 0)
! 	__n = -__n;
! 
!       return __dist.second > __dp_sign
! 	? __dist.first >= __n
! 	: !__strict && __dist.first > 0;
      }
  
    template<typename _Iterator, typename _Sequence, typename _Category>
+     template<typename _Diff>
+       bool
+       _Safe_iterator<_Iterator, _Sequence, _Category>::
+       _M_can_advance(const std::pair<_Diff, _Distance_precision>& __dist,
+ 		     int __way) const
+       {
+ 	return __dist.second == __dp_exact
+ 	  ? _M_can_advance(__way * __dist.first)
+ 	  : _M_can_advance(__way * (__dist.first == 0
+ 				    ? 0
+ 				    : __dist.first < 0 ? -1 : 1));
+       }
+ 
+   template<typename _Iterator, typename _Sequence, typename _Category>
      typename _Distance_traits<_Iterator>::__type
      _Safe_iterator<_Iterator, _Sequence, _Category>::
      _M_get_distance_to(const _Safe_iterator& __rhs) const
*************** namespace __gnu_debug
*** 191,209 ****
  
        /* Determine iterators order */
        __dist = _M_get_distance_to(__rhs);
!       switch (__dist.second)
  	{
- 	case __dp_equality:
- 	  if (__dist.first == 0)
- 	    return true;
- 	  break;
- 
- 	case __dp_sign:
- 	case __dp_exact:
  	  // If range is not empty first iterator must be dereferenceable.
! 	  if (__dist.first > 0)
! 	    return !__check_dereferenceable || _M_dereferenceable();
! 	  return __dist.first == 0;
  	}
  
        // Assume that this is a valid range; we can't check anything else.
--- 199,210 ----
  
        /* Determine iterators order */
        __dist = _M_get_distance_to(__rhs);
!       if (__dist.second != __dp_equality)
  	{
  	  // If range is not empty first iterator must be dereferenceable.
! 	  return __dist.first == 0
! 	    || (__dist.first > 0
! 		&& (!__check_dereferenceable || _M_dereferenceable()));
  	}
  
        // Assume that this is a valid range; we can't check anything else.
*************** namespace __gnu_debug
*** 224,232 ****
        __dist = std::make_pair(__rhs.base() - this->base(), __dp_exact);
  
        // If range is not empty first iterator must be dereferenceable.
!       if (__dist.first > 0)
! 	return this->_M_dereferenceable();
!       return __dist.first == 0;
      }
  } // namespace __gnu_debug
  
--- 225,232 ----
        __dist = std::make_pair(__rhs.base() - this->base(), __dp_exact);
  
        // If range is not empty first iterator must be dereferenceable.
!       return __dist.first == 0
! 	|| (__dist.first > 0 && this->_M_dereferenceable());
      }
  } // namespace __gnu_debug
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 244,250 ****
      {
        typename ::__gnu_debug::_Distance_traits<_Ite>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment(__result, __dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	return std::__copy_move_a<_IsMove>(__first.base(), __last.base(),
--- 244,250 ----
      {
        typename ::__gnu_debug::_Distance_traits<_Ite>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment_dist(__result, __dist, 1);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	return std::__copy_move_a<_IsMove>(__first.base(), __last.base(),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 261,267 ****
      {
        typename ::__gnu_debug::_Distance_traits<_II>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment(__result, __dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_sign
  	  && __result._M_can_advance(__dist.first, true))
--- 261,267 ----
      {
        typename ::__gnu_debug::_Distance_traits<_II>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment_dist(__result, __dist, 1);
  
        if (__dist.second > ::__gnu_debug::__dp_sign
  	  && __result._M_can_advance(__dist.first, true))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 283,289 ****
      {
        typename ::__gnu_debug::_Distance_traits<_IIte>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment(__result, __dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	{
--- 283,289 ----
      {
        typename ::__gnu_debug::_Distance_traits<_IIte>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment_dist(__result, __dist, 1);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 311,317 ****
      {
        typename ::__gnu_debug::_Distance_traits<_Ite>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment(__result, -__dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	return std::__copy_move_backward_a<_IsMove>(
--- 311,317 ----
      {
        typename ::__gnu_debug::_Distance_traits<_Ite>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment_dist(__result, __dist, -1);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	return std::__copy_move_backward_a<_IsMove>(
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 328,334 ****
      {
        typename ::__gnu_debug::_Distance_traits<_II>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment(__result, -__dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_sign
  	  && __result._M_can_advance(-__dist.first, true))
--- 328,334 ----
      {
        typename ::__gnu_debug::_Distance_traits<_II>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment_dist(__result, __dist, -1);
  
        if (__dist.second > ::__gnu_debug::__dp_sign
  	  && __result._M_can_advance(-__dist.first, true))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 351,357 ****
      {
        typename ::__gnu_debug::_Distance_traits<_IIte>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment(__result, -__dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	{
--- 351,357 ----
      {
        typename ::__gnu_debug::_Distance_traits<_IIte>::__type __dist;
        __glibcxx_check_valid_range2(__first, __last, __dist);
!       __glibcxx_check_can_increment_dist(__result, __dist, -1);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 416,422 ****
      {
        typename ::__gnu_debug::_Distance_traits<_II1>::__type __dist;
        __glibcxx_check_valid_range2(__first1, __last1, __dist);
!       __glibcxx_check_can_increment(__first2, __dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	return std::__equal_aux(__first1.base(), __last1.base(), __first2);
--- 416,422 ----
      {
        typename ::__gnu_debug::_Distance_traits<_II1>::__type __dist;
        __glibcxx_check_valid_range2(__first1, __last1, __dist);
!       __glibcxx_check_can_increment_dist(__first2, __dist, 1);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	return std::__equal_aux(__first1.base(), __last1.base(), __first2);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 431,437 ****
      {
        typename ::__gnu_debug::_Distance_traits<_II1>::__type __dist;
        __glibcxx_check_valid_range2(__first1, __last1, __dist);
!       __glibcxx_check_can_increment(__first2, __dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_sign
  	  && __first2._M_can_advance(__dist.first, true))
--- 431,437 ----
      {
        typename ::__gnu_debug::_Distance_traits<_II1>::__type __dist;
        __glibcxx_check_valid_range2(__first1, __last1, __dist);
!       __glibcxx_check_can_increment_dist(__first2, __dist, 1);
  
        if (__dist.second > ::__gnu_debug::__dp_sign
  	  && __first2._M_can_advance(__dist.first, true))
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 450,456 ****
      {
        typename ::__gnu_debug::_Distance_traits<_II1>::__type __dist;
        __glibcxx_check_valid_range2(__first1, __last1, __dist);
!       __glibcxx_check_can_increment(__first2, __dist.first);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	{
--- 450,456 ----
      {
        typename ::__gnu_debug::_Distance_traits<_II1>::__type __dist;
        __glibcxx_check_valid_range2(__first1, __last1, __dist);
!       __glibcxx_check_can_increment_dist(__first2, __dist, 1);
  
        if (__dist.second > ::__gnu_debug::__dp_equality)
  	{
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/stl_iterator.h gcc-10.4.0/libstdc++-v3/include/debug/stl_iterator.h
*** gcc-10.3.0/libstdc++-v3/include/debug/stl_iterator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/stl_iterator.h	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_debug
*** 52,57 ****
--- 52,64 ----
      __can_advance(const std::reverse_iterator<_Iterator>& __it, _Size __n)
      { return __can_advance(__it.base(), -__n); }
  
+   template<typename _Iterator, typename _Diff>
+     inline bool
+     __can_advance(const std::reverse_iterator<_Iterator>& __it,
+ 		  const std::pair<_Diff, _Distance_precision>& __dist,
+ 		  int __way)
+     { return __can_advance(__it.base(), __dist, -__way); }
+ 
    template<typename _Iterator, typename _Sequence>
      inline std::reverse_iterator<_Iterator>
      __base(const std::reverse_iterator<_Safe_iterator<
*************** namespace __gnu_debug
*** 101,106 ****
--- 108,120 ----
      __can_advance(const std::move_iterator<_Iterator>& __it, _Size __n)
      { return __can_advance(__it.base(), __n); }
  
+   template<typename _Iterator, typename _Diff>
+     inline bool
+     __can_advance(const std::move_iterator<_Iterator>& __it,
+ 		  const std::pair<_Diff, _Distance_precision>& __dist,
+ 		  int __way)
+     { return __can_advance(__it.base(), __dist, __way); }
+ 
    template<typename _Iterator>
      inline auto
      __unsafe(const std::move_iterator<_Iterator>& __it)
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/unordered_map gcc-10.4.0/libstdc++-v3/include/debug/unordered_map
*** gcc-10.3.0/libstdc++-v3/include/debug/unordered_map	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/unordered_map	Tue Jun 28 08:54:31 2022
*************** namespace __debug
*** 136,141 ****
--- 136,142 ----
  
        unordered_map(unordered_map&& __umap,
  		    const allocator_type& __a)
+       noexcept( noexcept(_Base(std::move(__umap._M_base()), __a)) )
        : _Safe(std::move(__umap._M_safe()), __a),
  	_Base(std::move(__umap._M_base()), __a) { }
  
*************** namespace __debug
*** 160,166 ****
  	unordered_map(_InputIterator __first, _InputIterator __last,
  		      size_type __n,
  		      const allocator_type& __a)
! 	  : unordered_map(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
--- 161,167 ----
  	unordered_map(_InputIterator __first, _InputIterator __last,
  		      size_type __n,
  		      const allocator_type& __a)
! 	: unordered_map(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
*************** namespace __debug
*** 168,187 ****
  		      size_type __n,
  		      const hasher& __hf,
  		      const allocator_type& __a)
! 	  : unordered_map(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_map(initializer_list<value_type> __l,
  		    size_type __n,
  		    const allocator_type& __a)
! 	: unordered_map(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_map(initializer_list<value_type> __l,
  		    size_type __n,
  		    const hasher& __hf,
  		    const allocator_type& __a)
! 	: unordered_map(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_map() = default;
--- 169,188 ----
  		      size_type __n,
  		      const hasher& __hf,
  		      const allocator_type& __a)
! 	: unordered_map(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_map(initializer_list<value_type> __l,
  		    size_type __n,
  		    const allocator_type& __a)
!       : unordered_map(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_map(initializer_list<value_type> __l,
  		    size_type __n,
  		    const hasher& __hf,
  		    const allocator_type& __a)
!       : unordered_map(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_map() = default;
*************** namespace __debug
*** 831,836 ****
--- 832,838 ----
  
        unordered_multimap(unordered_multimap&& __umap,
  			 const allocator_type& __a)
+       noexcept( noexcept(_Base(std::move(__umap._M_base()), __a)) )
        : _Safe(std::move(__umap._M_safe()), __a),
  	_Base(std::move(__umap._M_base()), __a) { }
  
*************** namespace __debug
*** 854,879 ****
  	unordered_multimap(_InputIterator __first, _InputIterator __last,
  			   size_type __n,
  			   const allocator_type& __a)
! 	  : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
  	unordered_multimap(_InputIterator __first, _InputIterator __last,
  			   size_type __n, const hasher& __hf,
  			   const allocator_type& __a)
! 	  : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_multimap(initializer_list<value_type> __l,
  			 size_type __n,
  			 const allocator_type& __a)
! 	: unordered_multimap(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_multimap(initializer_list<value_type> __l,
  			 size_type __n, const hasher& __hf,
  			 const allocator_type& __a)
! 	: unordered_multimap(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_multimap() = default;
--- 856,881 ----
  	unordered_multimap(_InputIterator __first, _InputIterator __last,
  			   size_type __n,
  			   const allocator_type& __a)
! 	: unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
  	unordered_multimap(_InputIterator __first, _InputIterator __last,
  			   size_type __n, const hasher& __hf,
  			   const allocator_type& __a)
! 	: unordered_multimap(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_multimap(initializer_list<value_type> __l,
  			 size_type __n,
  			 const allocator_type& __a)
!       : unordered_multimap(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_multimap(initializer_list<value_type> __l,
  			 size_type __n, const hasher& __hf,
  			 const allocator_type& __a)
!       : unordered_multimap(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_multimap() = default;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/debug/unordered_set gcc-10.4.0/libstdc++-v3/include/debug/unordered_set
*** gcc-10.3.0/libstdc++-v3/include/debug/unordered_set	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/debug/unordered_set	Tue Jun 28 08:54:31 2022
*************** namespace __debug
*** 133,138 ****
--- 133,139 ----
  
        unordered_set(unordered_set&& __uset,
  		    const allocator_type& __a)
+       noexcept( noexcept(_Base(std::move(__uset._M_base()), __a)) )
        : _Safe(std::move(__uset._M_safe()), __a),
  	_Base(std::move(__uset._M_base()), __a) { }
  
*************** namespace __debug
*** 144,181 ****
        : _Base(__l, __n, __hf, __eql, __a) { }
  
        unordered_set(size_type __n, const allocator_type& __a)
! 	: unordered_set(__n, hasher(), key_equal(), __a)
        { }
  
        unordered_set(size_type __n, const hasher& __hf,
  		    const allocator_type& __a)
! 	: unordered_set(__n, __hf, key_equal(), __a)
        { }
  
        template<typename _InputIterator>
  	unordered_set(_InputIterator __first, _InputIterator __last,
  		      size_type __n,
  		      const allocator_type& __a)
! 	  : unordered_set(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
  	unordered_set(_InputIterator __first, _InputIterator __last,
  		      size_type __n, const hasher& __hf,
  		      const allocator_type& __a)
! 	  : unordered_set(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_set(initializer_list<value_type> __l,
  		    size_type __n,
  		    const allocator_type& __a)
! 	: unordered_set(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_set(initializer_list<value_type> __l,
  		    size_type __n, const hasher& __hf,
  		    const allocator_type& __a)
! 	: unordered_set(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_set() = default;
--- 145,182 ----
        : _Base(__l, __n, __hf, __eql, __a) { }
  
        unordered_set(size_type __n, const allocator_type& __a)
!       : unordered_set(__n, hasher(), key_equal(), __a)
        { }
  
        unordered_set(size_type __n, const hasher& __hf,
  		    const allocator_type& __a)
!       : unordered_set(__n, __hf, key_equal(), __a)
        { }
  
        template<typename _InputIterator>
  	unordered_set(_InputIterator __first, _InputIterator __last,
  		      size_type __n,
  		      const allocator_type& __a)
! 	: unordered_set(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
  	unordered_set(_InputIterator __first, _InputIterator __last,
  		      size_type __n, const hasher& __hf,
  		      const allocator_type& __a)
! 	: unordered_set(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_set(initializer_list<value_type> __l,
  		    size_type __n,
  		    const allocator_type& __a)
!       : unordered_set(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_set(initializer_list<value_type> __l,
  		    size_type __n, const hasher& __hf,
  		    const allocator_type& __a)
!       : unordered_set(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_set() = default;
*************** namespace __debug
*** 701,706 ****
--- 702,708 ----
  
        unordered_multiset(unordered_multiset&& __uset,
  			 const allocator_type& __a)
+       noexcept( noexcept(_Base(std::move(__uset._M_base()), __a)) )
        : _Safe(std::move(__uset._M_safe()), __a),
  	_Base(std::move(__uset._M_base()), __a) { }
  
*************** namespace __debug
*** 712,749 ****
        : _Base(__l, __n, __hf, __eql, __a) { }
  
        unordered_multiset(size_type __n, const allocator_type& __a)
! 	: unordered_multiset(__n, hasher(), key_equal(), __a)
        { }
  
        unordered_multiset(size_type __n, const hasher& __hf,
  			 const allocator_type& __a)
! 	: unordered_multiset(__n, __hf, key_equal(), __a)
        { }
  
        template<typename _InputIterator>
  	unordered_multiset(_InputIterator __first, _InputIterator __last,
  			   size_type __n,
  			   const allocator_type& __a)
! 	  : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
  	unordered_multiset(_InputIterator __first, _InputIterator __last,
  			   size_type __n, const hasher& __hf,
  			   const allocator_type& __a)
! 	  : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_multiset(initializer_list<value_type> __l,
  			 size_type __n,
  			 const allocator_type& __a)
! 	: unordered_multiset(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_multiset(initializer_list<value_type> __l,
  			 size_type __n, const hasher& __hf,
  			 const allocator_type& __a)
! 	: unordered_multiset(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_multiset() = default;
--- 714,751 ----
        : _Base(__l, __n, __hf, __eql, __a) { }
  
        unordered_multiset(size_type __n, const allocator_type& __a)
!       : unordered_multiset(__n, hasher(), key_equal(), __a)
        { }
  
        unordered_multiset(size_type __n, const hasher& __hf,
  			 const allocator_type& __a)
!       : unordered_multiset(__n, __hf, key_equal(), __a)
        { }
  
        template<typename _InputIterator>
  	unordered_multiset(_InputIterator __first, _InputIterator __last,
  			   size_type __n,
  			   const allocator_type& __a)
! 	: unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a)
  	{ }
  
        template<typename _InputIterator>
  	unordered_multiset(_InputIterator __first, _InputIterator __last,
  			   size_type __n, const hasher& __hf,
  			   const allocator_type& __a)
! 	: unordered_multiset(__first, __last, __n, __hf, key_equal(), __a)
  	{ }
  
        unordered_multiset(initializer_list<value_type> __l,
  			 size_type __n,
  			 const allocator_type& __a)
!       : unordered_multiset(__l, __n, hasher(), key_equal(), __a)
        { }
  
        unordered_multiset(initializer_list<value_type> __l,
  			 size_type __n, const hasher& __hf,
  			 const allocator_type& __a)
!       : unordered_multiset(__l, __n, __hf, key_equal(), __a)
        { }
  
        ~unordered_multiset() = default;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/decimal/decimal gcc-10.4.0/libstdc++-v3/include/decimal/decimal
*** gcc-10.3.0/libstdc++-v3/include/decimal/decimal	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/decimal/decimal	Tue Jun 28 08:54:31 2022
*************** namespace decimal
*** 484,490 ****
  
  #define _GLIBCXX_USE_DECIMAL_ 1
  } // namespace decimal
!   // @} group decimal
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 484,490 ----
  
  #define _GLIBCXX_USE_DECIMAL_ 1
  } // namespace decimal
!   /// @} group decimal
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/any gcc-10.4.0/libstdc++-v3/include/experimental/any
*** gcc-10.3.0/libstdc++-v3/include/experimental/any	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/any	Tue Jun 28 08:54:31 2022
*************** inline namespace fundamentals_v1
*** 412,418 ****
  	return std::move(*__p);
        __throw_bad_any_cast();
      }
!   // @}
  
    /// @cond undocumented
    template<typename _Tp>
--- 412,418 ----
  	return std::move(*__p);
        __throw_bad_any_cast();
      }
!   /// @}
  
    /// @cond undocumented
    template<typename _Tp>
*************** inline namespace fundamentals_v1
*** 479,485 ****
  	return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
!   // @}
  
    template<typename _Tp>
      void
--- 479,485 ----
  	return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
!   /// @}
  
    template<typename _Tp>
      void
*************** inline namespace fundamentals_v1
*** 555,561 ****
        _S_manage(_Op, const any*, _Arg*) { }
      };
  
!   // @} group any
  } // namespace fundamentals_v1
  } // namespace experimental
  
--- 555,561 ----
        _S_manage(_Op, const any*, _Arg*) { }
      };
  
!   /// @} group any
  } // namespace fundamentals_v1
  } // namespace experimental
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/array gcc-10.4.0/libstdc++-v3/include/experimental/array
*** gcc-10.3.0/libstdc++-v3/include/experimental/array	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/array	Tue Jun 28 08:54:31 2022
*************** template <typename _Tp, size_t _Nm>
*** 104,110 ****
      return experimental::__to_array(__a, make_index_sequence<_Nm>{});
    }
  
!   // @} group make_array
  } // namespace fundamentals_v2
  } // namespace experimental
  
--- 104,110 ----
      return experimental::__to_array(__a, make_index_sequence<_Nm>{});
    }
  
!   /// @} group make_array
  } // namespace fundamentals_v2
  } // namespace experimental
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_dir.h gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_dir.h
*** gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_dir.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_dir.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CXX11
*** 351,357 ****
  
  _GLIBCXX_END_NAMESPACE_CXX11
  
!   // @} group filesystem-ts
  } // namespace v1
  } // namespace filesystem
  } // namespace experimental
--- 351,357 ----
  
  _GLIBCXX_END_NAMESPACE_CXX11
  
!   /// @} group filesystem-ts
  } // namespace v1
  } // namespace filesystem
  } // namespace experimental
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_fwd.h gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_fwd.h
*** gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_fwd.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_fwd.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 264,270 ****
  
    bool copy_file(const path& __from, const path& __to, copy_options __option);
    bool copy_file(const path& __from, const path& __to, copy_options __option,
! 		 error_code&) noexcept;
  
    path current_path();
  
--- 264,270 ----
  
    bool copy_file(const path& __from, const path& __to, copy_options __option);
    bool copy_file(const path& __from, const path& __to, copy_options __option,
! 		 error_code&);
  
    path current_path();
  
*************** _GLIBCXX_END_NAMESPACE_CXX11
*** 279,285 ****
    bool is_regular_file(file_status) noexcept;
    bool is_symlink(file_status) noexcept;
  
!   // @} group filesystem-ts
  } // namespace v1
  } // namespace filesystem
  } // namespace experimental
--- 279,285 ----
    bool is_regular_file(file_status) noexcept;
    bool is_symlink(file_status) noexcept;
  
!   /// @} group filesystem-ts
  } // namespace v1
  } // namespace filesystem
  } // namespace experimental
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_ops.h gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_ops.h
*** gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_ops.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_ops.h	Tue Jun 28 08:54:31 2022
***************
*** 22,28 ****
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
! /** @file experimental/bits/fs_fwd.h
   *  This is an internal header file, included by other library headers.
   *  Do not attempt to use it directly. @headername{experimental/filesystem}
   */
--- 22,28 ----
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
! /** @file experimental/bits/fs_ops.h
   *  This is an internal header file, included by other library headers.
   *  Do not attempt to use it directly. @headername{experimental/filesystem}
   */
*************** inline namespace v1
*** 74,92 ****
    { return copy_file(__from, __to, copy_options::none); }
  
    inline bool
!   copy_file(const path& __from, const path& __to, error_code& __ec) noexcept
    { return copy_file(__from, __to, copy_options::none, __ec); }
  
    bool copy_file(const path& __from, const path& __to, copy_options __option);
    bool copy_file(const path& __from, const path& __to, copy_options __option,
! 		 error_code& __ec) noexcept;
  
    void copy_symlink(const path& __existing_symlink, const path& __new_symlink);
    void copy_symlink(const path& __existing_symlink, const path& __new_symlink,
  		    error_code& __ec) noexcept;
  
    bool create_directories(const path& __p);
!   bool create_directories(const path& __p, error_code& __ec) noexcept;
  
    bool create_directory(const path& __p);
    bool create_directory(const path& __p, error_code& __ec) noexcept;
--- 74,92 ----
    { return copy_file(__from, __to, copy_options::none); }
  
    inline bool
!   copy_file(const path& __from, const path& __to, error_code& __ec)
    { return copy_file(__from, __to, copy_options::none, __ec); }
  
    bool copy_file(const path& __from, const path& __to, copy_options __option);
    bool copy_file(const path& __from, const path& __to, copy_options __option,
! 		 error_code& __ec);
  
    void copy_symlink(const path& __existing_symlink, const path& __new_symlink);
    void copy_symlink(const path& __existing_symlink, const path& __new_symlink,
  		    error_code& __ec) noexcept;
  
    bool create_directories(const path& __p);
!   bool create_directories(const path& __p, error_code& __ec);
  
    bool create_directory(const path& __p);
    bool create_directory(const path& __p, error_code& __ec) noexcept;
*************** inline namespace v1
*** 262,268 ****
    bool remove(const path& __p, error_code& __ec) noexcept;
  
    uintmax_t remove_all(const path& __p);
!   uintmax_t remove_all(const path& __p, error_code& __ec) noexcept;
  
    void rename(const path& __from, const path& __to);
    void rename(const path& __from, const path& __to, error_code& __ec) noexcept;
--- 262,268 ----
    bool remove(const path& __p, error_code& __ec) noexcept;
  
    uintmax_t remove_all(const path& __p);
!   uintmax_t remove_all(const path& __p, error_code& __ec);
  
    void rename(const path& __from, const path& __to);
    void rename(const path& __from, const path& __to, error_code& __ec) noexcept;
*************** inline namespace v1
*** 288,294 ****
    path temp_directory_path();
    path temp_directory_path(error_code& __ec);
  
!   // @} group filesystem-ts
  } // namespace v1
  } // namespace filesystem
  } // namespace experimental
--- 288,294 ----
    path temp_directory_path();
    path temp_directory_path(error_code& __ec);
  
!   /// @} group filesystem-ts
  } // namespace v1
  } // namespace filesystem
  } // namespace experimental
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_path.h gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_path.h
*** gcc-10.3.0/libstdc++-v3/include/experimental/bits/fs_path.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/bits/fs_path.h	Tue Jun 28 08:54:31 2022
*************** namespace __detail
*** 124,130 ****
  
    template<typename _Source>
      struct __constructible_from<_Source, void>
!     : decltype(__is_path_src(std::declval<_Source>(), 0))
      { };
  
    template<typename _Tp1, typename _Tp2 = void,
--- 124,130 ----
  
    template<typename _Source>
      struct __constructible_from<_Source, void>
!     : decltype(__is_path_src(std::declval<const _Source&>(), 0))
      { };
  
    template<typename _Tp1, typename _Tp2 = void,
*************** namespace __detail
*** 140,149 ****
      inline _Source
      _S_range_begin(_Source __begin) { return __begin; }
  
!   struct __null_terminated { };
  
    template<typename _Source>
!     inline __null_terminated
      _S_range_end(_Source) { return {}; }
  
    template<typename _CharT, typename _Traits, typename _Alloc>
--- 140,149 ----
      inline _Source
      _S_range_begin(_Source __begin) { return __begin; }
  
!   struct __nul_terminated { };
  
    template<typename _Source>
!     inline __nul_terminated
      _S_range_end(_Source) { return {}; }
  
    template<typename _CharT, typename _Traits, typename _Alloc>
*************** namespace __detail
*** 467,477 ****
        struct _Cvt;
  
      static string_type
!     _S_convert(value_type* __src, __detail::__null_terminated)
      { return string_type(__src); }
  
      static string_type
!     _S_convert(const value_type* __src, __detail::__null_terminated)
      { return string_type(__src); }
  
      template<typename _Iter>
--- 467,477 ----
        struct _Cvt;
  
      static string_type
!     _S_convert(value_type* __src, __detail::__nul_terminated)
      { return string_type(__src); }
  
      static string_type
!     _S_convert(const value_type* __src, __detail::__nul_terminated)
      { return string_type(__src); }
  
      template<typename _Iter>
*************** namespace __detail
*** 485,491 ****
  
      template<typename _InputIterator>
        static string_type
!       _S_convert(_InputIterator __src, __detail::__null_terminated)
        {
  	auto __s = _S_string_from_iter(__src);
  	return _S_convert(__s.c_str(), __s.c_str() + __s.size());
--- 485,491 ----
  
      template<typename _InputIterator>
        static string_type
!       _S_convert(_InputIterator __src, __detail::__nul_terminated)
        {
  	auto __s = _S_string_from_iter(__src);
  	return _S_convert(__s.c_str(), __s.c_str() + __s.size());
*************** namespace __detail
*** 505,511 ****
  
      template<typename _InputIterator>
        static string_type
!       _S_convert_loc(_InputIterator __src, __detail::__null_terminated,
  		     const std::locale& __loc)
        {
  	const std::string __s = _S_string_from_iter(__src);
--- 505,511 ----
  
      template<typename _InputIterator>
        static string_type
!       _S_convert_loc(_InputIterator __src, __detail::__nul_terminated,
  		     const std::locale& __loc)
        {
  	const std::string __s = _S_string_from_iter(__src);
*************** namespace __detail
*** 1268,1274 ****
      return _M_at_end == __rhs._M_at_end;
    }
  
!   // @} group filesystem-ts
  _GLIBCXX_END_NAMESPACE_CXX11
  } // namespace v1
  } // namespace filesystem
--- 1268,1274 ----
      return _M_at_end == __rhs._M_at_end;
    }
  
!   /// @} group filesystem-ts
  _GLIBCXX_END_NAMESPACE_CXX11
  } // namespace v1
  } // namespace filesystem
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/buffer gcc-10.4.0/libstdc++-v3/include/experimental/buffer
*** gcc-10.3.0/libstdc++-v3/include/experimental/buffer	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/buffer	Tue Jun 28 08:54:31 2022
*************** inline namespace v1
*** 172,178 ****
      buffer_sequence_end(const _Cont& __c) -> decltype(__c.end())
      { return __c.end(); }
  
!   // @}
  
  
    /** @brief buffer type traits
--- 172,178 ----
      buffer_sequence_end(const _Cont& __c) -> decltype(__c.end())
      { return __c.end(); }
  
!   /// @}
  
  
    /** @brief buffer type traits
*************** inline namespace v1
*** 250,256 ****
    template<typename _Tp>
      constexpr bool is_dynamic_buffer_v = is_dynamic_buffer<_Tp>::value;
  
!   // @}
  
    /// buffer size
    template<typename _ConstBufferSequence>
--- 250,256 ----
    template<typename _Tp>
      constexpr bool is_dynamic_buffer_v = is_dynamic_buffer<_Tp>::value;
  
!   /// @}
  
    /// buffer size
    template<typename _ConstBufferSequence>
*************** inline namespace v1
*** 727,733 ****
        return net::read(__stream, __b, __completion_condition, __ec);
      }
  
!   // @}
  
    /** @brief asynchronous read operations
     * @{
--- 727,733 ----
        return net::read(__stream, __b, __completion_condition, __ec);
      }
  
!   /// @}
  
    /** @brief asynchronous read operations
     * @{
*************** inline namespace v1
*** 775,781 ****
  			     std::forward<_CompletionToken>(__token));
      }
  
!   // @}
  
  #if 0
    /** @brief synchronous write operations:
--- 775,781 ----
  			     std::forward<_CompletionToken>(__token));
      }
  
!   /// @}
  
  #if 0
    /** @brief synchronous write operations:
*************** inline namespace v1
*** 811,817 ****
      size_t write(_SyncWriteStream& __stream, _DynamicBuffer&& __b,
                   _CompletionCondition __completion_condition, error_code& __ec);
  
!   // @}
  
    /** @brief asynchronous write operations
     * @{
--- 811,817 ----
      size_t write(_SyncWriteStream& __stream, _DynamicBuffer&& __b,
                   _CompletionCondition __completion_condition, error_code& __ec);
  
!   /// @}
  
    /** @brief asynchronous write operations
     * @{
*************** inline namespace v1
*** 839,845 ****
                         _CompletionCondition __completion_condition,
                         _CompletionToken&& __token);
  
!   // @}
  
    /** @brief synchronous delimited read operations
     * @{
--- 839,845 ----
                         _CompletionCondition __completion_condition,
                         _CompletionToken&& __token);
  
!   /// @}
  
    /** @brief synchronous delimited read operations
     * @{
*************** inline namespace v1
*** 856,862 ****
      size_t read_until(_SyncReadStream& __s, _DynamicBuffer&& __b,
                        string_view __delim, error_code& __ec);
  
!   // @}
  
    /** @brief asynchronous delimited read operations
     * @{
--- 856,862 ----
      size_t read_until(_SyncReadStream& __s, _DynamicBuffer&& __b,
                        string_view __delim, error_code& __ec);
  
!   /// @}
  
    /** @brief asynchronous delimited read operations
     * @{
*************** inline namespace v1
*** 871,877 ****
                            _DynamicBuffer&& __b, string_view __delim,
                            _CompletionToken&& __token);
  
!   // @}
  
  #endif
    /// @}
--- 871,877 ----
                            _DynamicBuffer&& __b, string_view __delim,
                            _CompletionToken&& __token);
  
!   /// @}
  
  #endif
    /// @}
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/internet gcc-10.4.0/libstdc++-v3/include/experimental/internet
*** gcc-10.3.0/libstdc++-v3/include/experimental/internet	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/internet	Tue Jun 28 08:54:31 2022
*************** namespace ip
*** 101,110 ****
      return __c;
    }
  
!   error_code make_error_code(resolver_errc __e) noexcept
    { return error_code(static_cast<int>(__e), resolver_category()); }
  
!   error_condition make_error_condition(resolver_errc __e) noexcept
    { return error_condition(static_cast<int>(__e), resolver_category()); }
  
    /// @}
--- 101,110 ----
      return __c;
    }
  
!   inline error_code make_error_code(resolver_errc __e) noexcept
    { return error_code(static_cast<int>(__e), resolver_category()); }
  
!   inline error_condition make_error_condition(resolver_errc __e) noexcept
    { return error_condition(static_cast<int>(__e), resolver_category()); }
  
    /// @}
*************** namespace ip
*** 126,132 ****
    struct v4_mapped_t {};
    constexpr v4_mapped_t v4_mapped;
  
!   // @}
  
    /// An IPv4 address.
    class address_v4
--- 126,132 ----
    struct v4_mapped_t {};
    constexpr v4_mapped_t v4_mapped;
  
!   /// @}
  
    /// An IPv4 address.
    class address_v4
*************** namespace ip
*** 541,547 ****
    operator>=(const address_v4& __a, const address_v4& __b) noexcept
    { return !(__a < __b); }
  
!   // @}
  
    /** ip::address_v6 comparisons
     * @{
--- 541,547 ----
    operator>=(const address_v4& __a, const address_v4& __b) noexcept
    { return !(__a < __b); }
  
!   /// @}
  
    /** ip::address_v6 comparisons
     * @{
*************** namespace ip
*** 585,591 ****
    operator>=(const address_v6& __a, const address_v6& __b) noexcept
    { return !(__a < __b); }
  
!   // @}
  
    /** ip::address comparisons
     * @{
--- 585,591 ----
    operator>=(const address_v6& __a, const address_v6& __b) noexcept
    { return !(__a < __b); }
  
!   /// @}
  
    /** ip::address comparisons
     * @{
*************** namespace ip
*** 623,629 ****
    operator>=(const address& __a, const address& __b) noexcept
    { return !(__a < __b); }
  
!   // @}
  
    /** ip::address_v4 creation
     * @{
--- 623,629 ----
    operator>=(const address& __a, const address& __b) noexcept
    { return !(__a < __b); }
  
!   /// @}
  
    /** ip::address_v4 creation
     * @{
*************** namespace ip
*** 695,701 ****
    make_address_v4(string_view __str)
    { return make_address_v4(__str, __throw_on_error{"make_address_v4"}); }
  
!   // @}
  
    /** ip::address_v6 creation
     * @{
--- 695,701 ----
    make_address_v4(string_view __str)
    { return make_address_v4(__str, __throw_on_error{"make_address_v4"}); }
  
!   /// @}
  
    /** ip::address_v6 creation
     * @{
*************** namespace ip
*** 867,873 ****
    make_address_v6(string_view __str)
    { return make_address_v6(__str, __throw_on_error{"make_address_v6"}); }
  
!   // @}
  
    /** ip::address creation
     * @{
--- 867,873 ----
    make_address_v6(string_view __str)
    { return make_address_v6(__str, __throw_on_error{"make_address_v6"}); }
  
!   /// @}
  
    /** ip::address creation
     * @{
*************** namespace ip
*** 912,918 ****
    make_address(string_view __str)
    { return make_address(__str, __throw_on_error{"make_address"}); }
  
!   // @}
  
    /// ip::address I/O
    template<typename _CharT, typename _Traits>
--- 912,918 ----
    make_address(string_view __str)
    { return make_address(__str, __throw_on_error{"make_address"}); }
  
!   /// @}
  
    /// ip::address I/O
    template<typename _CharT, typename _Traits>
*************** namespace ip
*** 1093,1099 ****
  
    typedef basic_address_range<address_v4> address_v4_range;
  
!   // @}
  
    /** An IPv6 address range.
     * @{
--- 1093,1099 ----
  
    typedef basic_address_range<address_v4> address_v4_range;
  
!   /// @}
  
    /** An IPv6 address range.
     * @{
*************** namespace ip
*** 1134,1140 ****
  
    typedef basic_address_range<address_v6> address_v6_range;
  
!   // @}
  
    bool
    operator==(const network_v4& __a, const network_v4& __b) noexcept;
--- 1134,1140 ----
  
    typedef basic_address_range<address_v6> address_v6_range;
  
!   /// @}
  
    bool
    operator==(const network_v4& __a, const network_v4& __b) noexcept;
*************** namespace ip
*** 1307,1313 ****
    operator!=(const network_v4& __a, const network_v4& __b) noexcept
    { return !(__a == __b); }
  
!   // @}
  
    /** ip::network_v6 comparisons
     * @{
--- 1307,1313 ----
    operator!=(const network_v4& __a, const network_v4& __b) noexcept
    { return !(__a == __b); }
  
!   /// @}
  
    /** ip::network_v6 comparisons
     * @{
*************** namespace ip
*** 1324,1330 ****
    operator!=(const network_v6& __a, const network_v6& __b) noexcept
    { return !(__a == __b); }
  
!   // @}
  
    /** ip::network_v4 creation
     * @{
--- 1324,1330 ----
    operator!=(const network_v6& __a, const network_v6& __b) noexcept
    { return !(__a == __b); }
  
!   /// @}
  
    /** ip::network_v4 creation
     * @{
*************** namespace ip
*** 1334,1340 ****
    make_network_v4(const address_v4& __a, int __prefix_len)
    { return network_v4{__a, __prefix_len}; }
  
!   network_v4
    make_network_v4(const address_v4& __a, const address_v4& __mask)
    { return network_v4{ __a, __mask }; }
  
--- 1334,1340 ----
    make_network_v4(const address_v4& __a, int __prefix_len)
    { return network_v4{__a, __prefix_len}; }
  
!   inline network_v4
    make_network_v4(const address_v4& __a, const address_v4& __mask)
    { return network_v4{ __a, __mask }; }
  
*************** namespace ip
*** 1356,1362 ****
    make_network_v4(string_view __str)
    { return make_network_v4(__str, __throw_on_error{"make_network_v4"}); }
  
!   // @}
  
    /** ip::network_v6 creation
     * @{
--- 1356,1362 ----
    make_network_v4(string_view __str)
    { return make_network_v4(__str, __throw_on_error{"make_network_v4"}); }
  
!   /// @}
  
    /** ip::network_v6 creation
     * @{
*************** namespace ip
*** 1384,1390 ****
    make_network_v6(string_view __str)
    { return make_network_v6(__str, __throw_on_error{"make_network_v6"}); }
  
!   // @}
  
    /// ip::network_v4 I/O
    template<typename _CharT, typename _Traits>
--- 1384,1390 ----
    make_network_v6(string_view __str)
    { return make_network_v6(__str, __throw_on_error{"make_network_v6"}); }
  
!   /// @}
  
    /// ip::network_v4 I/O
    template<typename _CharT, typename _Traits>
*************** namespace ip
*** 1566,1572 ****
  	       const basic_endpoint<_InternetProtocol>& __b)
      { return !(__a < __b); }
  
!   // @}
  
    /// basic_endpoint I/O
    template<typename _CharT, typename _Traits, typename _InternetProtocol>
--- 1566,1572 ----
  	       const basic_endpoint<_InternetProtocol>& __b)
      { return !(__a < __b); }
  
!   /// @}
  
    /// basic_endpoint I/O
    template<typename _CharT, typename _Traits, typename _InternetProtocol>
*************** namespace ip
*** 1640,1646 ****
  	       const basic_resolver_entry<_InternetProtocol>& __b)
      { return !(__a == __b); }
  
!   // @}
  
    /** Base class defining flags for name/address resolution.
     * @{
--- 1640,1646 ----
  	       const basic_resolver_entry<_InternetProtocol>& __b)
      { return !(__a == __b); }
  
!   /// @}
  
    /** Base class defining flags for name/address resolution.
     * @{
*************** namespace ip
*** 1706,1712 ****
  
    // TODO define resolver_base::flags static constants for C++14 mode
  
!   // @}
  
    /** Container for results of name/address resolution.
     * @{
--- 1706,1712 ----
  
    // TODO define resolver_base::flags static constants for C++14 mode
  
!   /// @}
  
    /** Container for results of name/address resolution.
     * @{
*************** namespace ip
*** 1788,1794 ****
  	       const basic_resolver_results<_InternetProtocol>& __b)
      { return !(__a == __b); }
  
!   // @}
  
    /// Perform name/address resolution.
    template<typename _InternetProtocol>
--- 1788,1794 ----
  	       const basic_resolver_results<_InternetProtocol>& __b)
      { return !(__a == __b); }
  
!   /// @}
  
    /// Perform name/address resolution.
    template<typename _InternetProtocol>
*************** namespace ip
*** 2071,2077 ****
    host_name()
    { return host_name(std::allocator<char>{}, __throw_on_error{"host_name"}); }
  
!   // @}
  
    /// The TCP byte-stream protocol.
    class tcp
--- 2071,2077 ----
    host_name()
    { return host_name(std::allocator<char>{}, __throw_on_error{"host_name"}); }
  
!   /// @}
  
    /// The TCP byte-stream protocol.
    class tcp
*************** namespace ip
*** 2126,2132 ****
    operator!=(const tcp& __a, const tcp& __b)
    { return !(__a == __b); }
  
!   // @}
  
    /// The UDP datagram protocol.
    class udp
--- 2126,2132 ----
    operator!=(const tcp& __a, const tcp& __b)
    { return !(__a == __b); }
  
!   /// @}
  
    /// The UDP datagram protocol.
    class udp
*************** namespace ip
*** 2157,2163 ****
     * @{
     */
  
!   bool
    operator==(const udp& __a, const udp& __b)
    { return __a.family() == __b.family(); }
  
--- 2157,2163 ----
     * @{
     */
  
!   inline bool
    operator==(const udp& __a, const udp& __b)
    { return __a.family() == __b.family(); }
  
*************** namespace ip
*** 2165,2171 ****
    operator!=(const udp& __a, const udp& __b)
    { return !(__a == __b); }
  
!   // @}
  
    /// Restrict a socket created for an IPv6 protocol to IPv6 only.
    struct v6_only : __sockopt_crtp<v6_only, bool>
--- 2165,2171 ----
    operator!=(const udp& __a, const udp& __b)
    { return !(__a == __b); }
  
!   /// @}
  
    /// Restrict a socket created for an IPv6 protocol to IPv6 only.
    struct v6_only : __sockopt_crtp<v6_only, bool>
*************** namespace ip
*** 2395,2401 ****
  
    } // namespace multicast
  
!   // @}
  
  } // namespace ip
  } // namespace v1
--- 2395,2401 ----
  
    } // namespace multicast
  
!   /// @}
  
  } // namespace ip
  } // namespace v1
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/optional gcc-10.4.0/libstdc++-v3/include/experimental/optional
*** gcc-10.3.0/libstdc++-v3/include/experimental/optional	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/optional	Tue Jun 28 08:54:31 2022
*************** inline namespace fundamentals_v1
*** 910,917 ****
      make_optional(_Tp&& __t)
      { return optional<decay_t<_Tp>> { std::forward<_Tp>(__t) }; }
  
!   // @} relates experimental::optional
!   // @} group optional
  } // namespace fundamentals_v1
  } // namespace experimental
  
--- 910,917 ----
      make_optional(_Tp&& __t)
      { return optional<decay_t<_Tp>> { std::forward<_Tp>(__t) }; }
  
!   /// @} relates experimental::optional
!   /// @} group optional
  } // namespace fundamentals_v1
  } // namespace experimental
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/propagate_const gcc-10.4.0/libstdc++-v3/include/experimental/propagate_const
*** gcc-10.3.0/libstdc++-v3/include/experimental/propagate_const	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/propagate_const	Tue Jun 28 08:54:31 2022
*************** inline namespace fundamentals_v2
*** 422,428 ****
        return __pt._M_t;
      }
  
!   // @} group propagate_const
  } // namespace fundamentals_v2
  } // namespace experimental
  
--- 422,428 ----
        return __pt._M_t;
      }
  
!   /// @} group propagate_const
  } // namespace fundamentals_v2
  } // namespace experimental
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/experimental/socket gcc-10.4.0/libstdc++-v3/include/experimental/socket
*** gcc-10.3.0/libstdc++-v3/include/experimental/socket	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/experimental/socket	Tue Jun 28 08:54:31 2022
*************** inline namespace v1
*** 2285,2291 ****
        protocol_type _M_protocol;
      };
  
!   // @}
  
    /** @brief Socket streams
     * @{
--- 2285,2291 ----
        protocol_type _M_protocol;
      };
  
!   /// @}
  
    /** @brief Socket streams
     * @{
*************** inline namespace v1
*** 2456,2462 ****
        __streambuf_type _M_sb;
      };
  
!   // @}
  
    /** @brief synchronous connect operations
     * @{
--- 2456,2462 ----
        __streambuf_type _M_sb;
      };
  
!   /// @}
  
    /** @brief synchronous connect operations
     * @{
*************** inline namespace v1
*** 2577,2583 ****
  			  __ec);
      }
  
!   // @}
  
    /** @brief asynchronous connect operations
     * @{
--- 2577,2583 ----
  			  __ec);
      }
  
!   /// @}
  
    /** @brief asynchronous connect operations
     * @{
*************** inline namespace v1
*** 2627,2637 ****
  				forward<_CompletionToken>(__token));
      }
  
!   // @}
  
  #endif  // _GLIBCXX_HAVE_UNISTD_H
  
!   // @}
  
  } // namespace v1
  } // namespace net
--- 2627,2637 ----
  				forward<_CompletionToken>(__token));
      }
  
!   /// @}
  
  #endif  // _GLIBCXX_HAVE_UNISTD_H
  
!   /// @}
  
  } // namespace v1
  } // namespace net
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/bitmap_allocator.h gcc-10.4.0/libstdc++-v3/include/ext/bitmap_allocator.h
*** gcc-10.3.0/libstdc++-v3/include/ext/bitmap_allocator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/bitmap_allocator.h	Tue Jun 28 08:54:31 2022
***************
*** 31,37 ****
  
  #include <utility> // For std::pair.
  #include <bits/functexcept.h> // For __throw_bad_alloc().
! #include <functional> // For greater_equal, and less_equal.
  #include <new> // For operator new.
  #include <debug/debug.h> // _GLIBCXX_DEBUG_ASSERT
  #include <ext/concurrence.h>
--- 31,37 ----
  
  #include <utility> // For std::pair.
  #include <bits/functexcept.h> // For __throw_bad_alloc().
! #include <bits/stl_function.h> // For greater_equal, and less_equal.
  #include <new> // For operator new.
  #include <debug/debug.h> // _GLIBCXX_DEBUG_ASSERT
  #include <ext/concurrence.h>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/extptr_allocator.h gcc-10.4.0/libstdc++-v3/include/ext/extptr_allocator.h
*** gcc-10.3.0/libstdc++-v3/include/ext/extptr_allocator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/extptr_allocator.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 176,181 ****
--- 176,186 ----
        typedef _Pointer_adapter<_Relative_pointer_impl<const void> >
                                                                const_pointer;
  
+       _ExtPtr_allocator() { }
+ 
+       template<typename _Up>
+ 	_ExtPtr_allocator(const _ExtPtr_allocator<_Up>&) { }
+ 
        template<typename _Up>
          struct rebind
          { typedef _ExtPtr_allocator<_Up> other; };
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/malloc_allocator.h gcc-10.4.0/libstdc++-v3/include/ext/malloc_allocator.h
*** gcc-10.3.0/libstdc++-v3/include/ext/malloc_allocator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/malloc_allocator.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 99,107 ****
  
        // NB: __n is permitted to be 0.  The C++ standard says nothing
        // about what the return value is when __n == 0.
!       _Tp*
        allocate(size_type __n, const void* = 0)
        {
  	if (__n > this->_M_max_size())
  	  std::__throw_bad_alloc();
  
--- 99,113 ----
  
        // NB: __n is permitted to be 0.  The C++ standard says nothing
        // about what the return value is when __n == 0.
!       _GLIBCXX_NODISCARD _Tp*
        allocate(size_type __n, const void* = 0)
        {
+ #if __cplusplus >= 201103L
+ 	 // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	 // 3308. std::allocator<void>().allocate(n)
+ 	 static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types");
+ #endif
+ 
  	if (__n > this->_M_max_size())
  	  std::__throw_bad_alloc();
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/new_allocator.h gcc-10.4.0/libstdc++-v3/include/ext/new_allocator.h
*** gcc-10.3.0/libstdc++-v3/include/ext/new_allocator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/new_allocator.h	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_cxx _GLIBCXX_VISIBILITY(
*** 42,48 ****
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    /**
!    *  @brief  An allocator that uses global new, as per [20.4].
     *  @ingroup allocators
     *
     *  This is precisely the allocator defined in the C++ Standard.
--- 42,48 ----
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    /**
!    *  @brief  An allocator that uses global new, as per C++03 [20.4.1].
     *  @ingroup allocators
     *
     *  This is precisely the allocator defined in the C++ Standard.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 102,107 ****
--- 102,113 ----
        _GLIBCXX_NODISCARD _Tp*
        allocate(size_type __n, const void* = static_cast<const void*>(0))
        {
+ #if __cplusplus >= 201103L
+ 	 // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	 // 3308. std::allocator<void>().allocate(n)
+ 	 static_assert(sizeof(_Tp) != 0, "cannot allocate incomplete types");
+ #endif
+ 
  	if (__n > this->_M_max_size())
  	  std::__throw_bad_alloc();
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 516,522 ****
      swap(gp_hash_table& other)
      { base_type::swap(other); }
    };
!   //@} hash-based
  #undef PB_DS_GP_HASH_BASE
  
  
--- 516,522 ----
      swap(gp_hash_table& other)
      { base_type::swap(other); }
    };
!   ///@} hash-based
  #undef PB_DS_GP_HASH_BASE
  
  
*************** namespace __gnu_pbds
*** 780,786 ****
      swap(trie& other)
      { base_type::swap(other); }
    };
!   //@} branch-based
  #undef PB_DS_TRIE_BASE
  #undef PB_DS_TRIE_NODE_AND_IT_TRAITS
  
--- 780,786 ----
      swap(trie& other)
      { base_type::swap(other); }
    };
!   ///@} branch-based
  #undef PB_DS_TRIE_BASE
  #undef PB_DS_TRIE_NODE_AND_IT_TRAITS
  
*************** namespace __gnu_pbds
*** 852,861 ****
      swap(list_update& other)
      { base_type::swap(other); }
    };
!   //@} list-based
  #undef PB_DS_LU_BASE
  
!   // @} group containers-pbds
  } // namespace __gnu_pbds
  
  #endif
--- 852,861 ----
      swap(list_update& other)
      { base_type::swap(other); }
    };
!   ///@} list-based
  #undef PB_DS_LU_BASE
  
!   /// @} group containers-pbds
  } // namespace __gnu_pbds
  
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 524,536 ****
  
  	resize_base::notify_find_search_end();
  
- #ifdef _GLIBCXX_DEBUG
  	if (p_e == 0)
! 	  PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
  	else
! 	  PB_DS_CHECK_KEY_EXISTS(r_key)
! #endif
! 	return &p_e->m_value;
        }
  
        inline pointer
--- 524,539 ----
  
  	resize_base::notify_find_search_end();
  
  	if (p_e == 0)
! 	  {
! 	    PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
! 	    return 0;
! 	  }
  	else
! 	  {
! 	    PB_DS_CHECK_KEY_EXISTS(r_key)
! 	    return &p_e->m_value;
! 	  }
        }
  
        inline pointer
*************** namespace __gnu_pbds
*** 550,562 ****
  
  	resize_base::notify_find_search_end();
  
- #ifdef _GLIBCXX_DEBUG
  	if (p_e == 0)
! 	  PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
  	else
! 	  PB_DS_CHECK_KEY_EXISTS(r_key)
! #endif
! 	return &p_e->m_value;
        }
  
        inline bool
--- 553,568 ----
  
  	resize_base::notify_find_search_end();
  
  	if (p_e == 0)
! 	  {
! 	    PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
! 	    return 0;
! 	  }
  	else
! 	  {
! 	    PB_DS_CHECK_KEY_EXISTS(r_key)
! 	    return &p_e->m_value;
! 	  }
        }
  
        inline bool
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 63,68 ****
--- 63,74 ----
  {
    namespace detail
    {
+     /**
+      *  @ingroup pbds
+      *
+      *  @{
+      */
+ 
      /// Specialization for pairing_heap.
      template<typename _VTp, typename Cmp_Fn, typename _Alloc>
        struct container_base_dispatch<_VTp, Cmp_Fn, _Alloc, pairing_heap_tag,
*************** namespace __gnu_pbds
*** 107,113 ****
  	/// Dispatched type.
  	typedef thin_heap<_VTp, Cmp_Fn, _Alloc> 		type;
        };
!     //@} group pbds
    } // namespace detail
  } // namespace __gnu_pbds
  
--- 113,119 ----
  	/// Dispatched type.
  	typedef thin_heap<_VTp, Cmp_Fn, _Alloc> 		type;
        };
!     ///@} group pbds
    } // namespace detail
  } // namespace __gnu_pbds
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 96,102 ****
      public:
        typedef typename tree_metadata_helper<__node_u, null_update>::type type;
      };
!     //@}
    } // namespace detail
  } // namespace __gnu_pbds
  
--- 96,102 ----
      public:
        typedef typename tree_metadata_helper<__node_u, null_update>::type type;
      };
!     ///@}
    } // namespace detail
  } // namespace __gnu_pbds
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 96,102 ****
      public:
        typedef typename trie_metadata_helper<__node_u, null_update>::type type;
      };
!     //@}
    } // namespace detail
  } // namespace __gnu_pbds
  
--- 96,102 ----
      public:
        typedef typename trie_metadata_helper<__node_u, null_update>::type type;
      };
!     ///@}
    } // namespace detail
  } // namespace __gnu_pbds
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 191,197 ****
  	store_extra			       	m_store_extra_indicator;
  	no_throw_indicator 		 	m_no_throw_copies_indicator;
      };
!     //@}
    } // namespace detail
  } // namespace __gnu_pbds
  
--- 191,197 ----
  	store_extra			       	m_store_extra_indicator;
  	no_throw_indicator 		 	m_no_throw_copies_indicator;
      };
!     ///@}
    } // namespace detail
  } // namespace __gnu_pbds
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/exception.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/exception.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/exception.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/exception.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 87,93 ****
    inline void
    __throw_resize_error()
    { _GLIBCXX_THROW_OR_ABORT(resize_error()); }
!   //@}
  } // namespace __gnu_pbds
  
  #endif
--- 87,93 ----
    inline void
    __throw_resize_error()
    { _GLIBCXX_THROW_OR_ABORT(resize_error()); }
!   ///@}
  } // namespace __gnu_pbds
  
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 51,56 ****
--- 51,57 ----
    /**
     *  @defgroup heap-based Heap-Based
     *  @ingroup containers-pbds
+    *
     *  @{
     */
  
*************** namespace __gnu_pbds
*** 151,156 ****
      swap(priority_queue& other)
      { base_type::swap(other); }
    };
  } // namespace __gnu_pbds
-  //@} heap-based
  #endif
--- 152,157 ----
      swap(priority_queue& other)
      { base_type::swap(other); }
    };
+  ///@} heap-based
  } // namespace __gnu_pbds
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
*** gcc-10.3.0/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp	Tue Jun 28 08:54:31 2022
*************** namespace __gnu_pbds
*** 113,119 ****
     */
    struct range_invalidation_guarantee : public point_invalidation_guarantee
    { };
!   //@}
  
  
    /**
--- 113,119 ----
     */
    struct range_invalidation_guarantee : public point_invalidation_guarantee
    { };
!   ///@}
  
  
    /**
*************** namespace __gnu_pbds
*** 184,191 ****
  
    /// Thin heap.
    struct thin_heap_tag : public priority_queue_tag { };
!   //@}
!   //@}
  
  
    /**
--- 184,191 ----
  
    /// Thin heap.
    struct thin_heap_tag : public priority_queue_tag { };
!   ///@}
!   ///@}
  
  
    /**
*************** namespace __gnu_pbds
*** 438,444 ****
  	reverse_iteration = base_type::reverse_iteration
        };
    };
!   //@}
  
  
    namespace detail
--- 438,444 ----
  	reverse_iteration = base_type::reverse_iteration
        };
    };
!   ///@}
  
  
    namespace detail
*************** namespace __gnu_pbds
*** 448,454 ****
  	     typename Policy_Tl = null_type>
        struct container_base_dispatch;
    } // namespace detail
!   //@}
  } // namespace __gnu_pbds
  
  #endif
--- 448,454 ----
  	     typename Policy_Tl = null_type>
        struct container_base_dispatch;
    } // namespace detail
!   ///@}
  } // namespace __gnu_pbds
  
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/random gcc-10.4.0/libstdc++-v3/include/ext/random
*** gcc-10.3.0/libstdc++-v3/include/ext/random	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/random	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1043,1049 ****
  	_M_ndy(result_type(0), __p.sigma())
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 1043,1049 ----
  	_M_ndy(result_type(0), __p.sigma())
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1295,1301 ****
  	_M_gd(__p.mu(), __p.omega() / __p.mu())
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 1295,1301 ----
  	_M_gd(__p.mu(), __p.omega() / __p.mu())
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1540,1546 ****
  	_M_ud()
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 1540,1546 ----
  	_M_ud()
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1801,1807 ****
  	_M_gd2(__p.nu(), __p.mu() / __p.nu())
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 1801,1807 ----
  	_M_gd2(__p.nu(), __p.mu() / __p.nu())
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 2040,2046 ****
  	      +1.5707963267948966192313216916397514L)
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 2040,2046 ----
  	      +1.5707963267948966192313216916397514L)
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3303,3309 ****
        : _M_param(__p)
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 3303,3309 ----
        : _M_param(__p)
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 3709,3715 ****
        : _M_param(__p), _M_uosd()
        { }
  
!       // @}
  
        /**
         * @brief Resets the distribution state.
--- 3709,3715 ----
        : _M_param(__p), _M_uosd()
        { }
  
!       /// @}
  
        /**
         * @brief Resets the distribution state.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/rope gcc-10.4.0/libstdc++-v3/include/ext/rope
*** gcc-10.3.0/libstdc++-v3/include/ext/rope	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/rope	Tue Jun 28 08:54:31 2022
*************** protected:
*** 2388,2394 ****
        }
  
        // Erase, single character
!       void
        erase(size_type __p)
        { erase(__p, __p + 1); }
  
--- 2388,2394 ----
        }
  
        // Erase, single character
!       _GLIBCXX_DEPRECATED void
        erase(size_type __p)
        { erase(__p, __p + 1); }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/ext/type_traits.h gcc-10.4.0/libstdc++-v3/include/ext/type_traits.h
*** gcc-10.3.0/libstdc++-v3/include/ext/type_traits.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/ext/type_traits.h	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 163,169 ****
    { return true; }
  #endif
  
!   // For complex and cmath
    template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
      struct __promote
      { typedef double __type; };
--- 163,170 ----
    { return true; }
  #endif
  
!   // For arithmetic promotions in <complex> and <cmath>
! 
    template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
      struct __promote
      { typedef double __type; };
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 187,192 ****
--- 188,198 ----
      struct __promote<float>
      { typedef float __type; };
  
+ #if __cpp_fold_expressions
+   template<typename... _Tp>
+     using __promoted_t = decltype((typename __promote<_Tp>::__type(0) + ...));
+ #endif
+ 
    template<typename _Tp, typename _Up,
             typename _Tp2 = typename __promote<_Tp>::__type,
             typename _Up2 = typename __promote<_Up>::__type>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/any gcc-10.4.0/libstdc++-v3/include/std/any
*** gcc-10.3.0/libstdc++-v3/include/std/any	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/any	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 205,211 ****
      /// the contained object.
      template <typename _Tp, typename _Up, typename... _Args,
  	      typename _VTp = decay_t<_Tp>, typename _Mgr = _Manager<_VTp>,
! 	      __any_constructible_t<_VTp, initializer_list<_Up>,
  				    _Args&&...> = false>
        explicit
        any(in_place_type_t<_Tp>, initializer_list<_Up> __il, _Args&&... __args)
--- 205,211 ----
      /// the contained object.
      template <typename _Tp, typename _Up, typename... _Args,
  	      typename _VTp = decay_t<_Tp>, typename _Mgr = _Manager<_VTp>,
! 	      __any_constructible_t<_VTp, initializer_list<_Up>&,
  				    _Args&&...> = false>
        explicit
        any(in_place_type_t<_Tp>, initializer_list<_Up> __il, _Args&&... __args)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 271,277 ****
      /// Emplace with an object created from @p __il and @p __args as
      /// the contained object.
      template <typename _Tp, typename _Up, typename... _Args>
!       __emplace_t<decay_t<_Tp>, initializer_list<_Up>, _Args&&...>
        emplace(initializer_list<_Up> __il, _Args&&... __args)
        {
  	using _VTp = decay_t<_Tp>;
--- 271,277 ----
      /// Emplace with an object created from @p __il and @p __args as
      /// the contained object.
      template <typename _Tp, typename _Up, typename... _Args>
!       __emplace_t<decay_t<_Tp>, initializer_list<_Up>&, _Args&&...>
        emplace(initializer_list<_Up> __il, _Args&&... __args)
        {
  	using _VTp = decay_t<_Tp>;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 411,426 ****
    /// Exchange the states of two @c any objects.
    inline void swap(any& __x, any& __y) noexcept { __x.swap(__y); }
  
!   /// Create an any holding a @c _Tp constructed from @c __args.
    template <typename _Tp, typename... _Args>
!     any make_any(_Args&&... __args)
      {
        return any(in_place_type<_Tp>, std::forward<_Args>(__args)...);
      }
  
!   /// Create an any holding a @c _Tp constructed from @c __il and @c __args.
    template <typename _Tp, typename _Up, typename... _Args>
!     any make_any(initializer_list<_Up> __il, _Args&&... __args)
      {
        return any(in_place_type<_Tp>, __il, std::forward<_Args>(__args)...);
      }
--- 411,431 ----
    /// Exchange the states of two @c any objects.
    inline void swap(any& __x, any& __y) noexcept { __x.swap(__y); }
  
!   /// Create an `any` holding a `_Tp` constructed from `__args...`.
    template <typename _Tp, typename... _Args>
!     inline
!     enable_if_t<is_constructible_v<any, in_place_type_t<_Tp>, _Args...>, any>
!     make_any(_Args&&... __args)
      {
        return any(in_place_type<_Tp>, std::forward<_Args>(__args)...);
      }
  
!   /// Create an `any` holding a `_Tp` constructed from `__il` and `__args...`.
    template <typename _Tp, typename _Up, typename... _Args>
!     inline
!     enable_if_t<is_constructible_v<any, in_place_type_t<_Tp>,
! 				   initializer_list<_Up>&, _Args...>, any>
!     make_any(initializer_list<_Up> __il, _Args&&... __args)
      {
        return any(in_place_type<_Tp>, __il, std::forward<_Args>(__args)...);
      }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 488,494 ****
  	return static_cast<_ValueType>(std::move(*__p));
        __throw_bad_any_cast();
      }
!   // @}
  
    /// @cond undocumented
    template<typename _Tp>
--- 493,499 ----
  	return static_cast<_ValueType>(std::move(*__p));
        __throw_bad_any_cast();
      }
!   /// @}
  
    /// @cond undocumented
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 547,553 ****
  	  return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
!   // @}
  
    template<typename _Tp>
      void
--- 552,558 ----
  	  return static_cast<_ValueType*>(__any_caster<_ValueType>(__any));
        return nullptr;
      }
!   /// @}
  
    template<typename _Tp>
      void
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/atomic gcc-10.4.0/libstdc++-v3/include/std/atomic
*** gcc-10.3.0/libstdc++-v3/include/std/atomic	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/atomic	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1173,1181 ****
    atomic_flag_clear(volatile atomic_flag* __a) noexcept
    { atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
  
! 
    template<typename _Tp>
!     using __atomic_val_t = typename atomic<_Tp>::value_type;
    template<typename _Tp>
      using __atomic_diff_t = typename atomic<_Tp>::difference_type;
  
--- 1173,1182 ----
    atomic_flag_clear(volatile atomic_flag* __a) noexcept
    { atomic_flag_clear_explicit(__a, memory_order_seq_cst); }
  
!   // _GLIBCXX_RESOLVE_LIB_DEFECTS
!   // 3220. P0558 broke conforming C++14 uses of atomic shared_ptr
    template<typename _Tp>
!     using __atomic_val_t = __type_identity_t<_Tp>;
    template<typename _Tp>
      using __atomic_diff_t = typename atomic<_Tp>::difference_type;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1549,1555 ****
  
  #endif // C++2a
  
!   // @} group atomics
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 1550,1556 ----
  
  #endif // C++2a
  
!   /// @} group atomics
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/bit gcc-10.4.0/libstdc++-v3/include/std/bit
*** gcc-10.3.0/libstdc++-v3/include/std/bit	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/bit	Tue Jun 28 08:54:31 2022
***************
*** 34,40 ****
  #if __cplusplus >= 201402L
  
  #include <type_traits>
! #include <ext/numeric_traits.h>
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
--- 34,56 ----
  #if __cplusplus >= 201402L
  
  #include <type_traits>
! 
! #if _GLIBCXX_HOSTED
! # include <ext/numeric_traits.h>
! #else
! # include <limits>
! /// @cond undocumented
! namespace __gnu_cxx
! {
!   template<typename _Tp>
!     struct __int_traits
!     {
!       static constexpr int __digits = std::numeric_limits<_Tp>::digits;
!       static constexpr _Tp __max = std::numeric_limits<_Tp>::max();
!     };
! }
! /// @endcond
! #endif
  
  namespace std _GLIBCXX_VISIBILITY(default)
  {
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/bitset gcc-10.4.0/libstdc++-v3/include/std/bitset
*** gcc-10.3.0/libstdc++-v3/include/std/bitset	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/bitset	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 961,967 ****
  #endif
  
        // 23.3.5.2 bitset operations:
!       //@{
        /**
         *  Operations on bitsets.
         *  @param  __rhs  A same-sized bitset.
--- 961,967 ----
  #endif
  
        // 23.3.5.2 bitset operations:
!       ///@{
        /**
         *  Operations on bitsets.
         *  @param  __rhs  A same-sized bitset.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 988,996 ****
  	this->_M_do_xor(__rhs);
  	return *this;
        }
!       //@}
  
!       //@{
        /**
         *  Operations on bitsets.
         *  @param  __position  The number of places to shift.
--- 988,996 ----
  	this->_M_do_xor(__rhs);
  	return *this;
        }
!       ///@}
  
!       ///@{
        /**
         *  Operations on bitsets.
         *  @param  __position  The number of places to shift.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1022,1030 ****
  	  this->_M_do_reset();
  	return *this;
        }
!       //@}
  
!       //@{
        /**
         *  These versions of single-bit set, reset, flip, and test are
         *  extensions from the SGI version.  They do no range checking.
--- 1022,1030 ----
  	  this->_M_do_reset();
  	return *this;
        }
!       ///@}
  
!       ///@{
        /**
         *  These versions of single-bit set, reset, flip, and test are
         *  extensions from the SGI version.  They do no range checking.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1065,1071 ****
        _Unchecked_test(size_t __pos) const _GLIBCXX_NOEXCEPT
        { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
  		!= static_cast<_WordT>(0)); }
!       //@}
  
        // Set, reset, and flip.
        /**
--- 1065,1071 ----
        _Unchecked_test(size_t __pos) const _GLIBCXX_NOEXCEPT
        { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos))
  		!= static_cast<_WordT>(0)); }
!       ///@}
  
        // Set, reset, and flip.
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1144,1150 ****
        operator~() const _GLIBCXX_NOEXCEPT
        { return bitset<_Nb>(*this).flip(); }
  
!       //@{
        /**
         *  @brief  Array-indexing support.
         *  @param  __position  Index into the %bitset.
--- 1144,1150 ----
        operator~() const _GLIBCXX_NOEXCEPT
        { return bitset<_Nb>(*this).flip(); }
  
!       ///@{
        /**
         *  @brief  Array-indexing support.
         *  @param  __position  Index into the %bitset.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1166,1172 ****
        _GLIBCXX_CONSTEXPR bool
        operator[](size_t __position) const
        { return _Unchecked_test(__position); }
!       //@}
  
        /**
         *  @brief Returns a numerical interpretation of the %bitset.
--- 1166,1172 ----
        _GLIBCXX_CONSTEXPR bool
        operator[](size_t __position) const
        { return _Unchecked_test(__position); }
!       ///@}
  
        /**
         *  @brief Returns a numerical interpretation of the %bitset.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1300,1306 ****
        size() const _GLIBCXX_NOEXCEPT
        { return _Nb; }
  
!       //@{
        /// These comparisons for equality/inequality are, well, @e bitwise.
        bool
        operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
--- 1300,1306 ----
        size() const _GLIBCXX_NOEXCEPT
        { return _Nb; }
  
!       ///@{
        /// These comparisons for equality/inequality are, well, @e bitwise.
        bool
        operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1311,1317 ****
        operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
        { return !this->_M_is_equal(__rhs); }
  #endif
!       //@}
  
        /**
         *  @brief Tests the value of a bit.
--- 1311,1317 ----
        operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT
        { return !this->_M_is_equal(__rhs); }
  #endif
!       ///@}
  
        /**
         *  @brief Tests the value of a bit.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1352,1358 ****
        none() const _GLIBCXX_NOEXCEPT
        { return !this->_M_is_any(); }
  
!       //@{
        /// Self-explanatory.
        bitset<_Nb>
        operator<<(size_t __position) const _GLIBCXX_NOEXCEPT
--- 1352,1358 ----
        none() const _GLIBCXX_NOEXCEPT
        { return !this->_M_is_any(); }
  
!       ///@{
        /// Self-explanatory.
        bitset<_Nb>
        operator<<(size_t __position) const _GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1361,1367 ****
        bitset<_Nb>
        operator>>(size_t __position) const _GLIBCXX_NOEXCEPT
        { return bitset<_Nb>(*this) >>= __position; }
!       //@}
  
        /**
         *  @brief  Finds the index of the first "on" bit.
--- 1361,1367 ----
        bitset<_Nb>
        operator>>(size_t __position) const _GLIBCXX_NOEXCEPT
        { return bitset<_Nb>(*this) >>= __position; }
!       ///@}
  
        /**
         *  @brief  Finds the index of the first "on" bit.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1421,1427 ****
        }
  
    // 23.3.5.3 bitset operations:
!   //@{
    /**
     *  @brief  Global bitwise operations on bitsets.
     *  @param  __x  A bitset.
--- 1421,1427 ----
        }
  
    // 23.3.5.3 bitset operations:
!   ///@{
    /**
     *  @brief  Global bitwise operations on bitsets.
     *  @param  __x  A bitset.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1456,1464 ****
        __result ^= __y;
        return __result;
      }
!   //@}
  
!   //@{
    /**
     *  @brief Global I/O operators for bitsets.
     *
--- 1456,1464 ----
        __result ^= __y;
        return __result;
      }
!   ///@}
  
!   ///@{
    /**
     *  @brief Global I/O operators for bitsets.
     *
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1548,1554 ****
        __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1'));
        return __os << __tmp;
      }
!   //@}
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  } // namespace std
--- 1548,1554 ----
        __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1'));
        return __os << __tmp;
      }
!   ///@}
  
  _GLIBCXX_END_NAMESPACE_CONTAINER
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/charconv gcc-10.4.0/libstdc++-v3/include/std/charconv
*** gcc-10.3.0/libstdc++-v3/include/std/charconv	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/charconv	Tue Jun 28 08:54:31 2022
***************
*** 39,45 ****
  
  #include <type_traits>
  #include <bit>			// for __bit_width
- #include <cctype>		// for isdigit
  #include <bits/charconv.h>	// for __to_chars_len, __to_chars_10_impl
  #include <bits/error_constants.h> // for std::errc
  #include <ext/numeric_traits.h>
--- 39,44 ----
*************** namespace __detail
*** 335,346 ****
  	  *__first = '0';
  	  return { __first + 1, errc{} };
  	}
! 
!       if _GLIBCXX17_CONSTEXPR (std::is_signed<_Tp>::value)
  	if (__value < 0)
  	  {
! 	    if (__builtin_expect(__first != __last, 1))
! 	      *__first++ = '-';
  	    __unsigned_val = _Up(~__value) + _Up(1);
  	  }
  
--- 334,343 ----
  	  *__first = '0';
  	  return { __first + 1, errc{} };
  	}
!       else if _GLIBCXX17_CONSTEXPR (std::is_signed<_Tp>::value)
  	if (__value < 0)
  	  {
! 	    *__first++ = '-';
  	    __unsigned_val = _Up(~__value) + _Up(1);
  	  }
  
*************** namespace __detail
*** 467,473 ****
        return true;
      }
  
!   constexpr unsigned char
    __from_chars_alpha_to_num(char __c)
    {
      switch (__c)
--- 464,470 ----
        return true;
      }
  
!   constexpr char
    __from_chars_alpha_to_num(char __c)
    {
      switch (__c)
*************** namespace __detail
*** 551,560 ****
      case 'Z':
        return 35;
      }
!     return __gnu_cxx::__int_traits<unsigned char>::__max;
    }
  
!   /// std::from_chars implementation for integers in bases 11 to 26.
    template<typename _Tp>
      bool
      __from_chars_alnum(const char*& __first, const char* __last, _Tp& __val,
--- 548,557 ----
      case 'Z':
        return 35;
      }
!     return 127;
    }
  
!   /// std::from_chars implementation for integers in bases 11 to 36.
    template<typename _Tp>
      bool
      __from_chars_alnum(const char*& __first, const char* __last, _Tp& __val,
*************** namespace __detail
*** 563,570 ****
        bool __valid = true;
        while (__first != __last)
  	{
! 	  unsigned char __c = *__first;
! 	  if (std::isdigit(__c))
  	    __c -= '0';
  	  else
  	    {
--- 560,567 ----
        bool __valid = true;
        while (__first != __last)
  	{
! 	  char __c = *__first;
! 	  if ('0' <= __c && __c <= '9') // isdigit
  	    __c -= '0';
  	  else
  	    {
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/chrono gcc-10.4.0/libstdc++-v3/include/std/chrono
*** gcc-10.3.0/libstdc++-v3/include/std/chrono	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/chrono	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 165,171 ****
      struct common_type<chrono::time_point<_Clock, _Duration>>
      { using type = chrono::time_point<_Clock, _Duration>; };
  
!   // @} group chrono
  
    namespace chrono
    {
--- 165,171 ----
      struct common_type<chrono::time_point<_Clock, _Duration>>
      { using type = chrono::time_point<_Clock, _Duration>; };
  
!   /// @} group chrono
  
    namespace chrono
    {
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1007,1013 ****
  		 const time_point<_Clock, _Dur2>& __rhs)
        { return !(__lhs < __rhs); }
  
!     // @}
  
      // Clocks.
  
--- 1007,1013 ----
  		 const time_point<_Clock, _Dur2>& __rhs)
        { return !(__lhs < __rhs); }
  
!     /// @}
  
      // Clocks.
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1127,1133 ****
      using local_days = local_time<days>;
  #endif // C++20
  
!     // @}
    } // namespace chrono
  
  #if __cplusplus > 201103L
--- 1127,1133 ----
      using local_days = local_time<days>;
  #endif // C++20
  
!     /// @}
    } // namespace chrono
  
  #if __cplusplus > 201103L
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/complex gcc-10.4.0/libstdc++-v3/include/std/complex
*** gcc-10.3.0/libstdc++-v3/include/std/complex	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/complex	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 324,330 ****
      }
  
    // Operators:
!   //@{
    ///  Return new complex value @a x plus @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
--- 324,330 ----
      }
  
    // Operators:
!   ///@{
    ///  Return new complex value @a x plus @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 352,360 ****
        __r += __x;
        return __r;
      }
!   //@}
  
!   //@{
    ///  Return new complex value @a x minus @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
--- 352,360 ----
        __r += __x;
        return __r;
      }
!   ///@}
  
!   ///@{
    ///  Return new complex value @a x minus @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 382,390 ****
        __r += __x;
        return __r;
      }
!   //@}
  
!   //@{
    ///  Return new complex value @a x times @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
--- 382,390 ----
        __r += __x;
        return __r;
      }
!   ///@}
  
!   ///@{
    ///  Return new complex value @a x times @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 412,420 ****
        __r *= __x;
        return __r;
      }
!   //@}
  
!   //@{
    ///  Return new complex value @a x divided by @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
--- 412,420 ----
        __r *= __x;
        return __r;
      }
!   ///@}
  
!   ///@{
    ///  Return new complex value @a x divided by @a y.
    template<typename _Tp>
      inline _GLIBCXX20_CONSTEXPR complex<_Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 442,448 ****
        __r /= __y;
        return __r;
      }
!   //@}
  
    ///  Return @a x.
    template<typename _Tp>
--- 442,448 ----
        __r /= __y;
        return __r;
      }
!   ///@}
  
    ///  Return @a x.
    template<typename _Tp>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 456,462 ****
      operator-(const complex<_Tp>& __x)
      { return complex<_Tp>(-__x.real(), -__x.imag()); }
  
!   //@{
    ///  Return true if @a x is equal to @a y.
    template<typename _Tp>
      inline _GLIBCXX_CONSTEXPR bool
--- 456,462 ----
      operator-(const complex<_Tp>& __x)
      { return complex<_Tp>(-__x.real(), -__x.imag()); }
  
!   ///@{
    ///  Return true if @a x is equal to @a y.
    template<typename _Tp>
      inline _GLIBCXX_CONSTEXPR bool
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 473,481 ****
      inline _GLIBCXX_CONSTEXPR bool
      operator==(const _Tp& __x, const complex<_Tp>& __y)
      { return __x == __y.real() && _Tp() == __y.imag(); }
!   //@}
  
!   //@{
    ///  Return false if @a x is equal to @a y.
    template<typename _Tp>
      inline _GLIBCXX_CONSTEXPR bool
--- 473,481 ----
      inline _GLIBCXX_CONSTEXPR bool
      operator==(const _Tp& __x, const complex<_Tp>& __y)
      { return __x == __y.real() && _Tp() == __y.imag(); }
!   ///@}
  
!   ///@{
    ///  Return false if @a x is equal to @a y.
    template<typename _Tp>
      inline _GLIBCXX_CONSTEXPR bool
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 492,498 ****
      operator!=(const _Tp& __x, const complex<_Tp>& __y)
      { return __x != __y.real() || _Tp() != __y.imag(); }
  #endif
!   //@}
  
    ///  Extraction operator for complex values.
    template<typename _Tp, typename _CharT, class _Traits>
--- 492,498 ----
      operator!=(const _Tp& __x, const complex<_Tp>& __y)
      { return __x != __y.real() || _Tp() != __y.imag(); }
  #endif
!   ///@}
  
    ///  Extraction operator for complex values.
    template<typename _Tp, typename _CharT, class _Traits>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1548,1554 ****
  #endif
  #endif
  
!   // @} group complex_numbers
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 1548,1554 ----
  #endif
  #endif
  
!   /// @} group complex_numbers
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/concepts gcc-10.4.0/libstdc++-v3/include/std/concepts
*** gcc-10.3.0/libstdc++-v3/include/std/concepts	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/concepts	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 70,78 ****
    /// [concept.convertible], concept convertible_to
    template<typename _From, typename _To>
      concept convertible_to = is_convertible_v<_From, _To>
!       && requires(add_rvalue_reference_t<_From> (&__f)()) {
! 	  static_cast<_To>(__f());
!       };
  
    /// [concept.commonref], concept common_reference_with
    template<typename _Tp, typename _Up>
--- 70,76 ----
    /// [concept.convertible], concept convertible_to
    template<typename _From, typename _To>
      concept convertible_to = is_convertible_v<_From, _To>
!       && requires { static_cast<_To>(std::declval<_From>()); };
  
    /// [concept.commonref], concept common_reference_with
    template<typename _Tp, typename _Up>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/condition_variable gcc-10.4.0/libstdc++-v3/include/std/condition_variable
*** gcc-10.3.0/libstdc++-v3/include/std/condition_variable	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/condition_variable	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 453,459 ****
  
    } // end inline namespace
  
!   // @} group condition_variables
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
--- 453,459 ----
  
    } // end inline namespace
  
!   /// @} group condition_variables
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/fstream gcc-10.4.0/libstdc++-v3/include/std/fstream
*** gcc-10.3.0/libstdc++-v3/include/std/fstream	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/fstream	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 155,161 ****
        bool                      _M_reading;
        bool                      _M_writing;
  
!       //@{
        /**
         *  Necessary bits for putback buffer management.
         *
--- 155,161 ----
        bool                      _M_reading;
        bool                      _M_writing;
  
!       ///@{
        /**
         *  Necessary bits for putback buffer management.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 165,171 ****
        char_type*		_M_pback_cur_save;
        char_type*		_M_pback_end_save;
        bool			_M_pback_init;
!       //@}
  
        // Cached codecvt facet.
        const __codecvt_type* 	_M_codecvt;
--- 165,171 ----
        char_type*		_M_pback_cur_save;
        char_type*		_M_pback_end_save;
        bool			_M_pback_init;
!       ///@}
  
        // Cached codecvt facet.
        const __codecvt_type* 	_M_codecvt;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/future gcc-10.4.0/libstdc++-v3/include/std/future
*** gcc-10.3.0/libstdc++-v3/include/std/future	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/future	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 533,558 ****
          };
  
        template<typename _Res, typename _Arg>
          static _Setter<_Res, _Arg&&>
!         __setter(promise<_Res>* __prom, _Arg&& __arg)
          {
- 	  _S_check(__prom->_M_future);
            return _Setter<_Res, _Arg&&>{ __prom, std::__addressof(__arg) };
          }
  
        template<typename _Res>
          static _Setter<_Res, __exception_ptr_tag>
!         __setter(exception_ptr& __ex, promise<_Res>* __prom)
          {
- 	  _S_check(__prom->_M_future);
            return _Setter<_Res, __exception_ptr_tag>{ __prom, &__ex };
          }
  
        template<typename _Res>
  	static _Setter<_Res, void>
! 	__setter(promise<_Res>* __prom)
  	{
- 	  _S_check(__prom->_M_future);
  	  return _Setter<_Res, void>{ __prom };
  	}
  
--- 533,558 ----
          };
  
        template<typename _Res, typename _Arg>
+ 	__attribute__((__always_inline__))
          static _Setter<_Res, _Arg&&>
!         __setter(promise<_Res>* __prom, _Arg&& __arg) noexcept
          {
            return _Setter<_Res, _Arg&&>{ __prom, std::__addressof(__arg) };
          }
  
        template<typename _Res>
+ 	__attribute__((__always_inline__))
          static _Setter<_Res, __exception_ptr_tag>
!         __setter(exception_ptr& __ex, promise<_Res>* __prom) noexcept
          {
            return _Setter<_Res, __exception_ptr_tag>{ __prom, &__ex };
          }
  
        template<typename _Res>
+ 	__attribute__((__always_inline__))
  	static _Setter<_Res, void>
! 	__setter(promise<_Res>* __prom) noexcept
  	{
  	  return _Setter<_Res, void>{ __prom };
  	}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1118,1153 ****
        // Setting the result
        void
        set_value(const _Res& __r)
!       { _M_future->_M_set_result(_State::__setter(this, __r)); }
  
        void
        set_value(_Res&& __r)
!       { _M_future->_M_set_result(_State::__setter(this, std::move(__r))); }
  
        void
        set_exception(exception_ptr __p)
!       { _M_future->_M_set_result(_State::__setter(__p, this)); }
  
        void
        set_value_at_thread_exit(const _Res& __r)
        {
! 	_M_future->_M_set_delayed_result(_State::__setter(this, __r),
  					 _M_future);
        }
  
        void
        set_value_at_thread_exit(_Res&& __r)
        {
! 	_M_future->_M_set_delayed_result(
  	    _State::__setter(this, std::move(__r)), _M_future);
        }
  
        void
        set_exception_at_thread_exit(exception_ptr __p)
        {
! 	_M_future->_M_set_delayed_result(_State::__setter(__p, this),
  					 _M_future);
        }
      };
  
    template<typename _Res>
--- 1118,1161 ----
        // Setting the result
        void
        set_value(const _Res& __r)
!       { _M_state()._M_set_result(_State::__setter(this, __r)); }
  
        void
        set_value(_Res&& __r)
!       { _M_state()._M_set_result(_State::__setter(this, std::move(__r))); }
  
        void
        set_exception(exception_ptr __p)
!       { _M_state()._M_set_result(_State::__setter(__p, this)); }
  
        void
        set_value_at_thread_exit(const _Res& __r)
        {
! 	_M_state()._M_set_delayed_result(_State::__setter(this, __r),
  					 _M_future);
        }
  
        void
        set_value_at_thread_exit(_Res&& __r)
        {
! 	_M_state()._M_set_delayed_result(
  	    _State::__setter(this, std::move(__r)), _M_future);
        }
  
        void
        set_exception_at_thread_exit(exception_ptr __p)
        {
! 	_M_state()._M_set_delayed_result(_State::__setter(__p, this),
  					 _M_future);
        }
+ 
+     private:
+       _State&
+       _M_state()
+       {
+ 	__future_base::_State_base::_S_check(_M_future);
+ 	return *_M_future;
+       }
      };
  
    template<typename _Res>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1229,1253 ****
        // Setting the result
        void
        set_value(_Res& __r)
!       { _M_future->_M_set_result(_State::__setter(this, __r)); }
  
        void
        set_exception(exception_ptr __p)
!       { _M_future->_M_set_result(_State::__setter(__p, this)); }
  
        void
        set_value_at_thread_exit(_Res& __r)
        {
! 	_M_future->_M_set_delayed_result(_State::__setter(this, __r),
  					 _M_future);
        }
  
        void
        set_exception_at_thread_exit(exception_ptr __p)
        {
! 	_M_future->_M_set_delayed_result(_State::__setter(__p, this),
  					 _M_future);
        }
      };
  
    /// Explicit specialization for promise<void>
--- 1237,1269 ----
        // Setting the result
        void
        set_value(_Res& __r)
!       { _M_state()._M_set_result(_State::__setter(this, __r)); }
  
        void
        set_exception(exception_ptr __p)
!       { _M_state()._M_set_result(_State::__setter(__p, this)); }
  
        void
        set_value_at_thread_exit(_Res& __r)
        {
! 	_M_state()._M_set_delayed_result(_State::__setter(this, __r),
  					 _M_future);
        }
  
        void
        set_exception_at_thread_exit(exception_ptr __p)
        {
! 	_M_state()._M_set_delayed_result(_State::__setter(__p, this),
  					 _M_future);
        }
+ 
+     private:
+       _State&
+       _M_state()
+       {
+ 	__future_base::_State_base::_S_check(_M_future);
+ 	return *_M_future;
+       }
      };
  
    /// Explicit specialization for promise<void>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1321,1342 ****
        // Setting the result
        void
        set_value()
!       { _M_future->_M_set_result(_State::__setter(this)); }
  
        void
        set_exception(exception_ptr __p)
!       { _M_future->_M_set_result(_State::__setter(__p, this)); }
  
        void
        set_value_at_thread_exit()
!       { _M_future->_M_set_delayed_result(_State::__setter(this), _M_future); }
  
        void
        set_exception_at_thread_exit(exception_ptr __p)
        {
! 	_M_future->_M_set_delayed_result(_State::__setter(__p, this),
  					 _M_future);
        }
      };
  
    template<typename _Ptr_type, typename _Fn, typename _Res>
--- 1337,1366 ----
        // Setting the result
        void
        set_value()
!       { _M_state()._M_set_result(_State::__setter(this)); }
  
        void
        set_exception(exception_ptr __p)
!       { _M_state()._M_set_result(_State::__setter(__p, this)); }
  
        void
        set_value_at_thread_exit()
!       { _M_state()._M_set_delayed_result(_State::__setter(this), _M_future); }
  
        void
        set_exception_at_thread_exit(exception_ptr __p)
        {
! 	_M_state()._M_set_delayed_result(_State::__setter(__p, this),
  					 _M_future);
        }
+ 
+     private:
+       _State&
+       _M_state()
+       {
+ 	__future_base::_State_base::_S_check(_M_future);
+ 	return *_M_future;
+       }
      };
  
    template<typename _Ptr_type, typename _Fn, typename _Res>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1767,1773 ****
  #endif // _GLIBCXX_ASYNC_ABI_COMPAT
  #endif // _GLIBCXX_HAS_GTHREADS
  
!   // @} group futures
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
--- 1791,1797 ----
  #endif // _GLIBCXX_ASYNC_ABI_COMPAT
  #endif // _GLIBCXX_HAS_GTHREADS
  
!   /// @} group futures
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/iostream gcc-10.4.0/libstdc++-v3/include/std/iostream
*** gcc-10.3.0/libstdc++-v3/include/std/iostream	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/iostream	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 56,62 ****
     *  startup and termination. For more information, see the section of the
     *  manual linked to above.
    */
!   //@{
    extern istream cin;		/// Linked to standard input
    extern ostream cout;		/// Linked to standard output
    extern ostream cerr;		/// Linked to standard error (unbuffered)
--- 56,62 ----
     *  startup and termination. For more information, see the section of the
     *  manual linked to above.
    */
!   ///@{
    extern istream cin;		/// Linked to standard input
    extern ostream cout;		/// Linked to standard output
    extern ostream cerr;		/// Linked to standard error (unbuffered)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 68,74 ****
    extern wostream wcerr;	/// Linked to standard error (unbuffered)
    extern wostream wclog;	/// Linked to standard error (buffered)
  #endif
!   //@}
  
    // For construction of filebuffers for cout, cin, cerr, clog et. al.
    static ios_base::Init __ioinit;
--- 68,74 ----
    extern wostream wcerr;	/// Linked to standard error (unbuffered)
    extern wostream wclog;	/// Linked to standard error (buffered)
  #endif
!   ///@}
  
    // For construction of filebuffers for cout, cin, cerr, clog et. al.
    static ios_base::Init __ioinit;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/istream gcc-10.4.0/libstdc++-v3/include/std/istream
*** gcc-10.3.0/libstdc++-v3/include/std/istream	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/istream	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 107,113 ****
        class sentry;
        friend class sentry;
  
!       //@{
        /**
         *  @brief  Interface for manipulators.
         *
--- 107,113 ----
        class sentry;
        friend class sentry;
  
!       ///@{
        /**
         *  @brief  Interface for manipulators.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 133,141 ****
  	__pf(*this);
  	return *this;
        }
!       //@}
  
!       //@{
        /**
         *  @name Extractors
         *
--- 133,141 ----
  	__pf(*this);
  	return *this;
        }
!       ///@}
  
!       ///@{
        /**
         *  @name Extractors
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 155,161 ****
         *  be rethrown if badbit is set in the exceptions mask.
        */
  
!       //@{
        /**
         *  @brief  Integer arithmetic extractors
         *  @param  __n A variable of builtin integral type.
--- 155,161 ----
         *  be rethrown if badbit is set in the exceptions mask.
        */
  
!       ///@{
        /**
         *  @brief  Integer arithmetic extractors
         *  @param  __n A variable of builtin integral type.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 199,207 ****
        operator>>(unsigned long long& __n)
        { return _M_extract(__n); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief  Floating point arithmetic extractors
         *  @param  __f A variable of builtin floating point type.
--- 199,207 ----
        operator>>(unsigned long long& __n)
        { return _M_extract(__n); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief  Floating point arithmetic extractors
         *  @param  __f A variable of builtin floating point type.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 221,227 ****
        __istream_type&
        operator>>(long double& __f)
        { return _M_extract(__f); }
!       //@}
  
        /**
         *  @brief  Basic arithmetic extractors
--- 221,227 ----
        __istream_type&
        operator>>(long double& __f)
        { return _M_extract(__f); }
!       ///@}
  
        /**
         *  @brief  Basic arithmetic extractors
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 257,263 ****
        */
        __istream_type&
        operator>>(__streambuf_type* __sb);
!       //@}
  
        // [27.6.1.3] unformatted input
        /**
--- 257,263 ----
        */
        __istream_type&
        operator>>(__streambuf_type* __sb);
!       ///@}
  
        // [27.6.1.3] unformatted input
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 269,275 ****
        gcount() const
        { return _M_gcount; }
  
!       //@{
        /**
         *  @name Unformatted Input Functions
         *
--- 269,275 ----
        gcount() const
        { return _M_gcount; }
  
!       ///@{
        /**
         *  @name Unformatted Input Functions
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 600,606 ****
        */
        __istream_type&
        seekg(off_type, ios_base::seekdir);
!       //@}
  
      protected:
        basic_istream()
--- 600,606 ----
        */
        __istream_type&
        seekg(off_type, ios_base::seekdir);
!       ///@}
  
      protected:
        basic_istream()
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 735,741 ****
        { return _M_ok; }
      };
  
!   //@{
    /**
     *  @brief  Character extractors
     *  @param  __in  An input stream.
--- 735,741 ----
        { return _M_ok; }
      };
  
!   ///@{
    /**
     *  @brief  Character extractors
     *  @param  __in  An input stream.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 760,768 ****
      inline basic_istream<char, _Traits>&
      operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
      { return (__in >> reinterpret_cast<char&>(__c)); }
!   //@}
  
!   //@{
    /**
     *  @brief  Character string extractors
     *  @param  __in  An input stream.
--- 760,768 ----
      inline basic_istream<char, _Traits>&
      operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
      { return (__in >> reinterpret_cast<char&>(__c)); }
!   ///@}
  
!   ///@{
    /**
     *  @brief  Character string extractors
     *  @param  __in  An input stream.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 807,813 ****
      inline basic_istream<char, _Traits>&
      operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
      { return (__in >> reinterpret_cast<char*>(__s)); }
!   //@}
  
    /**
     *  @brief  Template class basic_iostream
--- 807,813 ----
      inline basic_istream<char, _Traits>&
      operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
      { return (__in >> reinterpret_cast<char*>(__s)); }
!   ///@}
  
    /**
     *  @brief  Template class basic_iostream
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/memory gcc-10.4.0/libstdc++-v3/include/std/memory
*** gcc-10.3.0/libstdc++-v3/include/std/memory	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/memory	Tue Jun 28 08:54:31 2022
*************** undeclare_no_pointers(char*, size_t) { }
*** 177,183 ****
  /// The type of pointer safety supported by the implementation.
  inline pointer_safety
  get_pointer_safety() noexcept { return pointer_safety::relaxed; }
! // @}
  
  #if __cplusplus > 201703L
  #define __cpp_lib_assume_aligned 201811L
--- 177,183 ----
  /// The type of pointer safety supported by the implementation.
  inline pointer_safety
  get_pointer_safety() noexcept { return pointer_safety::relaxed; }
! /// @}
  
  #if __cplusplus > 201703L
  #define __cpp_lib_assume_aligned 201811L
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/mutex gcc-10.4.0/libstdc++-v3/include/std/mutex
*** gcc-10.3.0/libstdc++-v3/include/std/mutex	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/mutex	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 738,744 ****
      }
  #endif // _GLIBCXX_HAS_GTHREADS
  
!   // @} group mutexes
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
--- 738,744 ----
      }
  #endif // _GLIBCXX_HAS_GTHREADS
  
!   /// @} group mutexes
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/numeric gcc-10.4.0/libstdc++-v3/include/std/numeric
*** gcc-10.3.0/libstdc++-v3/include/std/numeric	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/numeric	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 259,267 ****
      reduce(_InputIterator __first, _InputIterator __last, _Tp __init,
  	   _BinaryOperation __binary_op)
      {
!       using value_type = typename iterator_traits<_InputIterator>::value_type;
        static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
!       static_assert(is_convertible_v<value_type, _Tp>);
        if constexpr (__is_random_access_iter<_InputIterator>::value)
  	{
  	  while ((__last - __first) >= 4)
--- 259,269 ----
      reduce(_InputIterator __first, _InputIterator __last, _Tp __init,
  	   _BinaryOperation __binary_op)
      {
!       using __ref = typename iterator_traits<_InputIterator>::reference;
!       static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, __ref>);
!       static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, __ref, _Tp&>);
        static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, _Tp&, _Tp&>);
!       static_assert(is_invocable_r_v<_Tp, _BinaryOperation&, __ref, __ref>);
        if constexpr (__is_random_access_iter<_InputIterator>::value)
  	{
  	  while ((__last - __first) >= 4)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 693,699 ****
        return __result;
      }
  
!   // @} group numeric_ops
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 695,701 ----
        return __result;
      }
  
!   /// @} group numeric_ops
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/optional gcc-10.4.0/libstdc++-v3/include/std/optional
*** gcc-10.3.0/libstdc++-v3/include/std/optional	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/optional	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 798,804 ****
        template<typename _Up>
  	enable_if_t<__and_v<__not_<is_same<_Tp, _Up>>,
  			    is_constructible<_Tp, const _Up&>,
! 			    is_assignable<_Tp&, _Up>,
  			    __not_<__converts_from_optional<_Tp, _Up>>,
  			    __not_<__assigns_from_optional<_Tp, _Up>>>,
  		    optional&>
--- 798,804 ----
        template<typename _Up>
  	enable_if_t<__and_v<__not_<is_same<_Tp, _Up>>,
  			    is_constructible<_Tp, const _Up&>,
! 			    is_assignable<_Tp&, const _Up&>,
  			    __not_<__converts_from_optional<_Tp, _Up>>,
  			    __not_<__assigns_from_optional<_Tp, _Up>>>,
  		    optional&>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1210,1216 ****
--- 1210,1223 ----
      { return !__rhs || __lhs >= *__rhs; }
  
  #ifdef __cpp_lib_three_way_comparison
+   template<typename _Tp>
+     inline constexpr bool __is_optional_v = false;
+   template<typename _Tp>
+     inline constexpr bool __is_optional_v<optional<_Tp>> = true;
+ 
    template<typename _Tp, typename _Up>
+     requires (!__is_optional_v<_Up>)
+       && three_way_comparable_with<_Tp, _Up>
      constexpr compare_three_way_result_t<_Tp, _Up>
      operator<=>(const optional<_Tp>& __x, const _Up& __v)
      { return bool(__x) ? *__x <=> __v : strong_ordering::less; }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/ostream gcc-10.4.0/libstdc++-v3/include/std/ostream
*** gcc-10.3.0/libstdc++-v3/include/std/ostream	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/ostream	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 96,102 ****
        class sentry;
        friend class sentry;
  
!       //@{
        /**
         *  @brief  Interface for manipulators.
         *
--- 96,102 ----
        class sentry;
        friend class sentry;
  
!       ///@{
        /**
         *  @brief  Interface for manipulators.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 132,140 ****
  	__pf(*this);
  	return *this;
        }
!       //@}
  
!       //@{
        /**
         *  @name Inserters
         *
--- 132,140 ----
  	__pf(*this);
  	return *this;
        }
!       ///@}
  
!       ///@{
        /**
         *  @name Inserters
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 153,159 ****
         *  be rethrown.
        */
  
!       //@{
        /**
         *  @brief Integer arithmetic inserters
         *  @param  __n A variable of builtin integral type.
--- 153,159 ----
         *  be rethrown.
        */
  
!       ///@{
        /**
         *  @brief Integer arithmetic inserters
         *  @param  __n A variable of builtin integral type.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 205,213 ****
        operator<<(unsigned long long __n)
        { return _M_insert(__n); }
  #endif
!       //@}
  
!       //@{
        /**
         *  @brief  Floating point arithmetic inserters
         *  @param  __f A variable of builtin floating point type.
--- 205,213 ----
        operator<<(unsigned long long __n)
        { return _M_insert(__n); }
  #endif
!       ///@}
  
!       ///@{
        /**
         *  @brief  Floating point arithmetic inserters
         *  @param  __f A variable of builtin floating point type.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 231,237 ****
        __ostream_type&
        operator<<(long double __f)
        { return _M_insert(__f); }
!       //@}
  
        /**
         *  @brief  Pointer arithmetic inserters
--- 231,237 ----
        __ostream_type&
        operator<<(long double __f)
        { return _M_insert(__f); }
!       ///@}
  
        /**
         *  @brief  Pointer arithmetic inserters
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 274,282 ****
        */
        __ostream_type&
        operator<<(__streambuf_type* __sb);
!       //@}
  
!       //@{
        /**
         *  @name Unformatted Output Functions
         *
--- 274,282 ----
        */
        __ostream_type&
        operator<<(__streambuf_type* __sb);
!       ///@}
  
!       ///@{
        /**
         *  @name Unformatted Output Functions
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 339,345 ****
        */
        __ostream_type&
        write(const char_type* __s, streamsize __n);
!       //@}
  
        /**
         *  @brief  Synchronizing the stream buffer.
--- 339,345 ----
        */
        __ostream_type&
        write(const char_type* __s, streamsize __n);
!       ///@}
  
        /**
         *  @brief  Synchronizing the stream buffer.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 485,491 ****
        { return _M_ok; }
      };
  
!   //@{
    /**
     *  @brief  Character inserters
     *  @param  __out  An output stream.
--- 485,491 ----
        { return _M_ok; }
      };
  
!   ///@{
    /**
     *  @brief  Character inserters
     *  @param  __out  An output stream.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 568,576 ****
      operator<<(basic_ostream<wchar_t, _Traits>&, char32_t) = delete;
  #endif // _GLIBCXX_USE_WCHAR_T
  #endif // C++20
!   //@}
  
!   //@{
    /**
     *  @brief  String inserters
     *  @param  __out  An output stream.
--- 568,576 ----
      operator<<(basic_ostream<wchar_t, _Traits>&, char32_t) = delete;
  #endif // _GLIBCXX_USE_WCHAR_T
  #endif // C++20
!   ///@}
  
!   ///@{
    /**
     *  @brief  String inserters
     *  @param  __out  An output stream.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 664,670 ****
      operator<<(basic_ostream<wchar_t, _Traits>&, const char32_t*) = delete;
  #endif // _GLIBCXX_USE_WCHAR_T
  #endif // C++20
!   //@}
  
    // Standard basic_ostream manipulators
  
--- 664,670 ----
      operator<<(basic_ostream<wchar_t, _Traits>&, const char32_t*) = delete;
  #endif // _GLIBCXX_USE_WCHAR_T
  #endif // C++20
!   ///@}
  
    // Standard basic_ostream manipulators
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/ranges gcc-10.4.0/libstdc++-v3/include/std/ranges
*** gcc-10.3.0/libstdc++-v3/include/std/ranges	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/ranges	Tue Jun 28 08:54:31 2022
*************** namespace ranges
*** 70,77 ****
  
    template<typename _Tp>
      concept view
!       = range<_Tp> && movable<_Tp> && default_initializable<_Tp>
! 	&& enable_view<_Tp>;
  
    /// A range which can be safely converted to a view.
    template<typename _Tp>
--- 70,76 ----
  
    template<typename _Tp>
      concept view
!       = range<_Tp> && movable<_Tp> && enable_view<_Tp>;
  
    /// A range which can be safely converted to a view.
    template<typename _Tp>
*************** namespace ranges
*** 222,232 ****
  	&& __convertible_to_non_slicing<_Up, tuple_element_t<0, _Tp>>
  	&& convertible_to<_Vp, tuple_element_t<1, _Tp>>;
  
-     template<typename _Tp>
-       concept __iterator_sentinel_pair
- 	= !range<_Tp> && __pair_like<_Tp>
- 	&& sentinel_for<tuple_element_t<1, _Tp>, tuple_element_t<0, _Tp>>;
- 
    } // namespace __detail
  
    enum class subrange_kind : bool { unsized, sized };
--- 221,226 ----
*************** namespace ranges
*** 256,262 ****
        [[no_unique_address]] _Size<iter_difference_t<_It>> _M_size = {};
  
      public:
!       subrange() = default;
  
        constexpr
        subrange(__detail::__convertible_to_non_slicing<_It> auto __i, _Sent __s)
--- 250,256 ----
        [[no_unique_address]] _Size<iter_difference_t<_It>> _M_size = {};
  
      public:
!       subrange() requires default_initializable<_It> = default;
  
        constexpr
        subrange(__detail::__convertible_to_non_slicing<_It> auto __i, _Sent __s)
*************** namespace ranges
*** 387,402 ****
  	     __detail::__make_unsigned_like_t<iter_difference_t<_It>>)
        -> subrange<_It, _Sent, subrange_kind::sized>;
  
-   template<__detail::__iterator_sentinel_pair _Pr>
-     subrange(_Pr)
-       -> subrange<tuple_element_t<0, _Pr>, tuple_element_t<1, _Pr>>;
- 
-   template<__detail::__iterator_sentinel_pair _Pr>
-     subrange(_Pr, __detail::__make_unsigned_like_t<iter_difference_t<
- 						     tuple_element_t<0, _Pr>>>)
-       -> subrange<tuple_element_t<0, _Pr>, tuple_element_t<1, _Pr>,
- 		  subrange_kind::sized>;
- 
    template<borrowed_range _Rng>
      subrange(_Rng&&)
        -> subrange<iterator_t<_Rng>, sentinel_t<_Rng>,
--- 381,386 ----
*************** namespace ranges
*** 501,510 ****
  	noexcept(is_nothrow_copy_constructible_v<_Tp>)
  	requires (!copyable<_Tp>)
  	{
! 	  if ((bool)__that)
! 	    this->emplace(*__that);
! 	  else
! 	    this->reset();
  	  return *this;
  	}
  
--- 485,497 ----
  	noexcept(is_nothrow_copy_constructible_v<_Tp>)
  	requires (!copyable<_Tp>)
  	{
! 	  if (this != std::__addressof(__that))
! 	    {
! 	      if ((bool)__that)
! 		this->emplace(*__that);
! 	      else
! 		this->reset();
! 	    }
  	  return *this;
  	}
  
*************** namespace ranges
*** 513,522 ****
  	noexcept(is_nothrow_move_constructible_v<_Tp>)
  	requires (!movable<_Tp>)
  	{
! 	  if ((bool)__that)
! 	    this->emplace(std::move(*__that));
! 	  else
! 	    this->reset();
  	  return *this;
  	}
        };
--- 500,512 ----
  	noexcept(is_nothrow_move_constructible_v<_Tp>)
  	requires (!movable<_Tp>)
  	{
! 	  if (this != std::__addressof(__that))
! 	    {
! 	      if ((bool)__that)
! 		this->emplace(std::move(*__that));
! 	      else
! 		this->reset();
! 	    }
  	  return *this;
  	}
        };
*************** namespace ranges
*** 528,534 ****
      class single_view : public view_interface<single_view<_Tp>>
      {
      public:
!       single_view() = default;
  
        constexpr explicit
        single_view(const _Tp& __t)
--- 518,524 ----
      class single_view : public view_interface<single_view<_Tp>>
      {
      public:
!       single_view() requires default_initializable<_Tp> = default;
  
        constexpr explicit
        single_view(const _Tp& __t)
*************** namespace ranges
*** 625,646 ****
  	  { __j - __j } -> convertible_to<__iota_diff_t<_It>>;
  	};
  
    } // namespace __detail
  
    template<weakly_incrementable _Winc,
  	   semiregular _Bound = unreachable_sentinel_t>
      requires std::__detail::__weakly_eq_cmp_with<_Winc, _Bound>
!       && semiregular<_Winc>
      class iota_view : public view_interface<iota_view<_Winc, _Bound>>
      {
      private:
        struct _Sentinel;
  
!       struct _Iterator
        {
        private:
  	static auto
! 	_S_iter_cat()
  	{
  	  using namespace __detail;
  	  if constexpr (__advanceable<_Winc>)
--- 615,643 ----
  	  { __j - __j } -> convertible_to<__iota_diff_t<_It>>;
  	};
  
+     template<typename _Winc>
+       struct __iota_view_iter_cat
+       { };
+ 
+     template<incrementable _Winc>
+       struct __iota_view_iter_cat<_Winc>
+       { using iterator_category = input_iterator_tag; };
    } // namespace __detail
  
    template<weakly_incrementable _Winc,
  	   semiregular _Bound = unreachable_sentinel_t>
      requires std::__detail::__weakly_eq_cmp_with<_Winc, _Bound>
!       && copyable<_Winc>
      class iota_view : public view_interface<iota_view<_Winc, _Bound>>
      {
      private:
        struct _Sentinel;
  
!       struct _Iterator : __detail::__iota_view_iter_cat<_Winc>
        {
        private:
  	static auto
! 	_S_iter_concept()
  	{
  	  using namespace __detail;
  	  if constexpr (__advanceable<_Winc>)
*************** namespace ranges
*** 654,664 ****
  	}
  
        public:
! 	using iterator_category = decltype(_S_iter_cat());
  	using value_type = _Winc;
  	using difference_type = __detail::__iota_diff_t<_Winc>;
  
! 	_Iterator() = default;
  
  	constexpr explicit
  	_Iterator(_Winc __value)
--- 651,662 ----
  	}
  
        public:
! 	using iterator_concept = decltype(_S_iter_concept());
! 	// iterator_category defined in __iota_view_iter_cat
  	using value_type = _Winc;
  	using difference_type = __detail::__iota_diff_t<_Winc>;
  
! 	_Iterator() requires default_initializable<_Winc> = default;
  
  	constexpr explicit
  	_Iterator(_Winc __value)
*************** namespace ranges
*** 823,828 ****
--- 821,830 ----
  	_M_equal(const _Iterator& __x) const
  	{ return __x._M_value == _M_bound; }
  
+ 	constexpr auto
+ 	_M_distance_from(const _Iterator& __x) const
+ 	{ return _M_bound - __x._M_value; }
+ 
  	_Bound _M_bound = _Bound();
  
        public:
*************** namespace ranges
*** 839,857 ****
  	friend constexpr iter_difference_t<_Winc>
  	operator-(const _Iterator& __x, const _Sentinel& __y)
  	  requires sized_sentinel_for<_Bound, _Winc>
! 	{ return __x._M_value - __y._M_bound; }
  
  	friend constexpr iter_difference_t<_Winc>
  	operator-(const _Sentinel& __x, const _Iterator& __y)
  	  requires sized_sentinel_for<_Bound, _Winc>
! 	{ return -(__y - __x); }
        };
  
        _Winc _M_value = _Winc();
        _Bound _M_bound = _Bound();
  
      public:
!       iota_view() = default;
  
        constexpr explicit
        iota_view(_Winc __value)
--- 841,859 ----
  	friend constexpr iter_difference_t<_Winc>
  	operator-(const _Iterator& __x, const _Sentinel& __y)
  	  requires sized_sentinel_for<_Bound, _Winc>
! 	{ return -__y._M_distance_from(__x); }
  
  	friend constexpr iter_difference_t<_Winc>
  	operator-(const _Sentinel& __x, const _Iterator& __y)
  	  requires sized_sentinel_for<_Bound, _Winc>
! 	{ return __x._M_distance_from(__y); }
        };
  
        _Winc _M_value = _Winc();
        _Bound _M_bound = _Bound();
  
      public:
!       iota_view() requires default_initializable<_Winc> = default;
  
        constexpr explicit
        iota_view(_Winc __value)
*************** namespace views
*** 954,960 ****
  	= requires(basic_istream<_CharT, _Traits>& is, _Val& t) { is >> t; };
    } // namespace __detail
  
!   template<movable _Val, typename _CharT, typename _Traits>
      requires default_initializable<_Val>
        && __detail::__stream_extractable<_Val, _CharT, _Traits>
      class basic_istream_view
--- 956,963 ----
  	= requires(basic_istream<_CharT, _Traits>& is, _Val& t) { is >> t; };
    } // namespace __detail
  
!   template<movable _Val, typename _CharT,
! 	   typename _Traits = char_traits<_CharT>>
      requires default_initializable<_Val>
        && __detail::__stream_extractable<_Val, _CharT, _Traits>
      class basic_istream_view
*************** namespace views
*** 973,979 ****
        {
  	if (_M_stream != nullptr)
  	  *_M_stream >> _M_object;
! 	return _Iterator{*this};
        }
  
        constexpr default_sentinel_t
--- 976,982 ----
        {
  	if (_M_stream != nullptr)
  	  *_M_stream >> _M_object;
! 	return _Iterator{this};
        }
  
        constexpr default_sentinel_t
*************** namespace views
*** 994,1001 ****
  	_Iterator() = default;
  
  	constexpr explicit
! 	_Iterator(basic_istream_view& __parent) noexcept
! 	  : _M_parent(std::__addressof(__parent))
  	{ }
  
  	_Iterator(const _Iterator&) = delete;
--- 997,1004 ----
  	_Iterator() = default;
  
  	constexpr explicit
! 	_Iterator(basic_istream_view* __parent) noexcept
! 	  : _M_parent(__parent)
  	{ }
  
  	_Iterator(const _Iterator&) = delete;
*************** namespace views
*** 1292,1356 ****
  
    } // namespace views
  
!   // XXX: the following algos are copied from ranges_algo.h to avoid a circular
!   // dependency with that header.
    namespace __detail
    {
!     template<input_iterator _Iter, sentinel_for<_Iter> _Sent,
! 	     typename _Proj = identity,
! 	     indirect_unary_predicate<projected<_Iter, _Proj>> _Pred>
        constexpr _Iter
!       find_if(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {})
        {
  	while (__first != __last
! 	    && !(bool)std::__invoke(__pred, std::__invoke(__proj, *__first)))
  	  ++__first;
  	return __first;
        }
  
!     template<input_iterator _Iter, sentinel_for<_Iter> _Sent,
! 	     typename _Proj = identity,
! 	     indirect_unary_predicate<projected<_Iter, _Proj>> _Pred>
        constexpr _Iter
!       find_if_not(_Iter __first, _Sent __last, _Pred __pred, _Proj __proj = {})
        {
  	while (__first != __last
! 	    && (bool)std::__invoke(__pred, std::__invoke(__proj, *__first)))
  	  ++__first;
  	return __first;
        }
  
!     template<typename _Tp, typename _Proj = identity,
! 	     indirect_strict_weak_order<projected<const _Tp*, _Proj>>
! 	       _Comp = ranges::less>
!       constexpr const _Tp&
!       min(const _Tp& __a, const _Tp& __b, _Comp __comp = {}, _Proj __proj = {})
        {
! 	if (std::__invoke(std::move(__comp),
! 			  std::__invoke(__proj, __b),
! 			  std::__invoke(__proj, __a)))
! 	  return __b;
! 	else
! 	  return __a;
        }
  
!     template<input_iterator _Iter1, sentinel_for<_Iter1> _Sent1,
! 	     input_iterator _Iter2, sentinel_for<_Iter2> _Sent2,
! 	     typename _Pred = ranges::equal_to,
! 	     typename _Proj1 = identity, typename _Proj2 = identity>
!       requires indirectly_comparable<_Iter1, _Iter2, _Pred, _Proj1, _Proj2>
        constexpr pair<_Iter1, _Iter2>
!       mismatch(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2,
! 	       _Pred __pred = {}, _Proj1 __proj1 = {}, _Proj2 __proj2 = {})
        {
  	while (__first1 != __last1 && __first2 != __last2
! 	       && (bool)std::__invoke(__pred,
! 				      std::__invoke(__proj1, *__first1),
! 				      std::__invoke(__proj2, *__first2)))
! 	{
! 	  ++__first1;
! 	  ++__first2;
! 	}
  	return { std::move(__first1), std::move(__first2) };
        }
    } // namespace __detail
--- 1295,1344 ----
  
    } // namespace views
  
!   // The following simple algos are transcribed from ranges_algo.h to avoid
!   // having to include that entire header.
    namespace __detail
    {
!     template<typename _Iter, typename _Sent, typename _Tp>
        constexpr _Iter
!       find(_Iter __first, _Sent __last, const _Tp& __value)
        {
  	while (__first != __last
! 	       && !(bool)(*__first == __value))
  	  ++__first;
  	return __first;
        }
  
!     template<typename _Iter, typename _Sent, typename _Pred>
        constexpr _Iter
!       find_if(_Iter __first, _Sent __last, _Pred __pred)
        {
  	while (__first != __last
! 	       && !(bool)std::__invoke(__pred, *__first))
  	  ++__first;
  	return __first;
        }
  
!     template<typename _Iter, typename _Sent, typename _Pred>
!       constexpr _Iter
!       find_if_not(_Iter __first, _Sent __last, _Pred __pred)
        {
! 	while (__first != __last
! 	       && (bool)std::__invoke(__pred, *__first))
! 	  ++__first;
! 	return __first;
        }
  
!     template<typename _Iter1, typename _Sent1, typename _Iter2, typename _Sent2>
        constexpr pair<_Iter1, _Iter2>
!       mismatch(_Iter1 __first1, _Sent1 __last1, _Iter2 __first2, _Sent2 __last2)
        {
  	while (__first1 != __last1 && __first2 != __last2
! 	       && (bool)ranges::equal_to{}(*__first1, *__first2))
! 	  {
! 	    ++__first1;
! 	    ++__first2;
! 	  }
  	return { std::move(__first1), std::move(__first2) };
        }
    } // namespace __detail
*************** namespace views
*** 1368,1374 ****
  	_M_get(const _Range&) const
  	{
  	  __glibcxx_assert(false);
! 	  return {};
  	}
  
  	constexpr void
--- 1356,1362 ----
  	_M_get(const _Range&) const
  	{
  	  __glibcxx_assert(false);
! 	  __builtin_unreachable();
  	}
  
  	constexpr void
*************** namespace views
*** 1429,1435 ****
--- 1417,1448 ----
  	  _M_offset = __it - ranges::begin(__r);
  	}
        };
+   } // namespace __detail
  
+   namespace __detail
+   {
+     template<typename _Base>
+       struct __filter_view_iter_cat
+       { };
+ 
+     template<forward_range _Base>
+       struct __filter_view_iter_cat<_Base>
+       {
+       private:
+ 	static auto
+ 	_S_iter_cat()
+ 	{
+ 	  using _Cat = typename iterator_traits<iterator_t<_Base>>::iterator_category;
+ 	  if constexpr (derived_from<_Cat, bidirectional_iterator_tag>)
+ 	    return bidirectional_iterator_tag{};
+ 	  else if constexpr (derived_from<_Cat, forward_iterator_tag>)
+ 	    return forward_iterator_tag{};
+ 	  else
+ 	    return _Cat{};
+ 	}
+       public:
+ 	using iterator_category = decltype(_S_iter_cat());
+       };
    } // namespace __detail
  
    template<input_range _Vp,
*************** namespace views
*** 1440,1446 ****
      private:
        struct _Sentinel;
  
!       struct _Iterator
        {
        private:
  	static constexpr auto
--- 1453,1459 ----
      private:
        struct _Sentinel;
  
!       struct _Iterator : __detail::__filter_view_iter_cat<_Vp>
        {
        private:
  	static constexpr auto
*************** namespace views
*** 1454,1471 ****
  	    return input_iterator_tag{};
  	}
  
- 	static constexpr auto
- 	_S_iter_cat()
- 	{
- 	  using _Cat = typename iterator_traits<_Vp_iter>::iterator_category;
- 	  if constexpr (derived_from<_Cat, bidirectional_iterator_tag>)
- 	    return bidirectional_iterator_tag{};
- 	  else if constexpr (derived_from<_Cat, forward_iterator_tag>)
- 	    return forward_iterator_tag{};
- 	  else
- 	    return _Cat{};
- 	}
- 
  	friend filter_view;
  
  	using _Vp_iter = iterator_t<_Vp>;
--- 1467,1472 ----
*************** namespace views
*** 1475,1495 ****
  
        public:
  	using iterator_concept = decltype(_S_iter_concept());
! 	using iterator_category = decltype(_S_iter_cat());
  	using value_type = range_value_t<_Vp>;
  	using difference_type = range_difference_t<_Vp>;
  
! 	_Iterator() = default;
  
  	constexpr
! 	_Iterator(filter_view& __parent, _Vp_iter __current)
  	  : _M_current(std::move(__current)),
! 	    _M_parent(std::__addressof(__parent))
  	{ }
  
! 	constexpr _Vp_iter
! 	base() const &
! 	  requires copyable<_Vp_iter>
  	{ return _M_current; }
  
  	constexpr _Vp_iter
--- 1476,1495 ----
  
        public:
  	using iterator_concept = decltype(_S_iter_concept());
! 	// iterator_category defined in __filter_view_iter_cat
  	using value_type = range_value_t<_Vp>;
  	using difference_type = range_difference_t<_Vp>;
  
! 	_Iterator() requires default_initializable<_Vp_iter> = default;
  
  	constexpr
! 	_Iterator(filter_view* __parent, _Vp_iter __current)
  	  : _M_current(std::move(__current)),
! 	    _M_parent(__parent)
  	{ }
  
! 	constexpr const _Vp_iter&
! 	base() const & noexcept
  	{ return _M_current; }
  
  	constexpr _Vp_iter
*************** namespace views
*** 1574,1581 ****
  	_Sentinel() = default;
  
  	constexpr explicit
! 	_Sentinel(filter_view& __parent)
! 	  : _M_end(ranges::end(__parent._M_base))
  	{ }
  
  	constexpr sentinel_t<_Vp>
--- 1574,1581 ----
  	_Sentinel() = default;
  
  	constexpr explicit
! 	_Sentinel(filter_view* __parent)
! 	  : _M_end(ranges::end(__parent->_M_base))
  	{ }
  
  	constexpr sentinel_t<_Vp>
*************** namespace views
*** 1592,1598 ****
        [[no_unique_address]] __detail::_CachedPosition<_Vp> _M_cached_begin;
  
      public:
!       filter_view() = default;
  
        constexpr
        filter_view(_Vp __base, _Pred __pred)
--- 1592,1600 ----
        [[no_unique_address]] __detail::_CachedPosition<_Vp> _M_cached_begin;
  
      public:
!       filter_view() requires (default_initializable<_Vp>
! 			      && default_initializable<_Pred>)
! 	= default;
  
        constexpr
        filter_view(_Vp __base, _Pred __pred)
*************** namespace views
*** 1615,1637 ****
        begin()
        {
  	if (_M_cached_begin._M_has_value())
! 	  return {*this, _M_cached_begin._M_get(_M_base)};
  
  	__glibcxx_assert(_M_pred.has_value());
  	auto __it = __detail::find_if(ranges::begin(_M_base),
  				      ranges::end(_M_base),
  				      std::ref(*_M_pred));
  	_M_cached_begin._M_set(_M_base, __it);
! 	return {*this, std::move(__it)};
        }
  
        constexpr auto
        end()
        {
  	if constexpr (common_range<_Vp>)
! 	  return _Iterator{*this, ranges::end(_M_base)};
  	else
! 	  return _Sentinel{*this};
        }
      };
  
--- 1617,1639 ----
        begin()
        {
  	if (_M_cached_begin._M_has_value())
! 	  return {this, _M_cached_begin._M_get(_M_base)};
  
  	__glibcxx_assert(_M_pred.has_value());
  	auto __it = __detail::find_if(ranges::begin(_M_base),
  				      ranges::end(_M_base),
  				      std::ref(*_M_pred));
  	_M_cached_begin._M_set(_M_base, __it);
! 	return {this, std::move(__it)};
        }
  
        constexpr auto
        end()
        {
  	if constexpr (common_range<_Vp>)
! 	  return _Iterator{this, ranges::end(_M_base)};
  	else
! 	  return _Sentinel{this};
        }
      };
  
*************** namespace views
*** 1656,1691 ****
      {
      private:
        template<bool _Const>
! 	struct _Sentinel;
  
        template<bool _Const>
! 	struct _Iterator
  	{
  	private:
! 	  using _Parent = __detail::__maybe_const_t<_Const, transform_view>;
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
! 
! 	  static constexpr auto
! 	  _S_iter_concept()
! 	  {
! 	    if constexpr (random_access_range<_Vp>)
! 	      return random_access_iterator_tag{};
! 	    else if constexpr (bidirectional_range<_Vp>)
! 	      return bidirectional_iterator_tag{};
! 	    else if constexpr (forward_range<_Vp>)
! 	      return forward_iterator_tag{};
! 	    else
! 	      return input_iterator_tag{};
! 	  }
! 
! 	  static constexpr auto
  	  _S_iter_cat()
  	  {
  	    using _Res = invoke_result_t<_Fp&, range_reference_t<_Base>>;
  	    if constexpr (is_lvalue_reference_v<_Res>)
  	      {
  		using _Cat
! 		  = typename iterator_traits<_Base_iter>::iterator_category;
  		if constexpr (derived_from<_Cat, contiguous_iterator_tag>)
  		  return random_access_iterator_tag{};
  		else
--- 1658,1683 ----
      {
      private:
        template<bool _Const>
! 	using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
        template<bool _Const>
! 	struct __iter_cat
! 	{ };
! 
!       template<bool _Const>
! 	requires forward_range<_Base<_Const>>
! 	struct __iter_cat<_Const>
  	{
  	private:
! 	  static auto
  	  _S_iter_cat()
  	  {
+ 	    using _Base = transform_view::_Base<_Const>;
  	    using _Res = invoke_result_t<_Fp&, range_reference_t<_Base>>;
  	    if constexpr (is_lvalue_reference_v<_Res>)
  	      {
  		using _Cat
! 		  = typename iterator_traits<iterator_t<_Base>>::iterator_category;
  		if constexpr (derived_from<_Cat, contiguous_iterator_tag>)
  		  return random_access_iterator_tag{};
  		else
*************** namespace views
*** 1694,1699 ****
--- 1686,1717 ----
  	    else
  	      return input_iterator_tag{};
  	  }
+ 	public:
+ 	  using iterator_category = decltype(_S_iter_cat());
+ 	};
+ 
+       template<bool _Const>
+ 	struct _Sentinel;
+ 
+       template<bool _Const>
+ 	struct _Iterator : __iter_cat<_Const>
+ 	{
+ 	private:
+ 	  using _Parent = __detail::__maybe_const_t<_Const, transform_view>;
+ 	  using _Base = transform_view::_Base<_Const>;
+ 
+ 	  static auto
+ 	  _S_iter_concept()
+ 	  {
+ 	    if constexpr (random_access_range<_Base>)
+ 	      return random_access_iterator_tag{};
+ 	    else if constexpr (bidirectional_range<_Base>)
+ 	      return bidirectional_iterator_tag{};
+ 	    else if constexpr (forward_range<_Base>)
+ 	      return forward_iterator_tag{};
+ 	    else
+ 	      return input_iterator_tag{};
+ 	  }
  
  	  using _Base_iter = iterator_t<_Base>;
  
*************** namespace views
*** 1702,1718 ****
  
  	public:
  	  using iterator_concept = decltype(_S_iter_concept());
! 	  using iterator_category = decltype(_S_iter_cat());
  	  using value_type
  	    = remove_cvref_t<invoke_result_t<_Fp&, range_reference_t<_Base>>>;
  	  using difference_type = range_difference_t<_Base>;
  
! 	  _Iterator() = default;
  
  	  constexpr
! 	  _Iterator(_Parent& __parent, _Base_iter __current)
  	    : _M_current(std::move(__current)),
! 	      _M_parent(std::__addressof(__parent))
  	  { }
  
  	  constexpr
--- 1720,1736 ----
  
  	public:
  	  using iterator_concept = decltype(_S_iter_concept());
! 	  // iterator_category defined in __transform_view_iter_cat
  	  using value_type
  	    = remove_cvref_t<invoke_result_t<_Fp&, range_reference_t<_Base>>>;
  	  using difference_type = range_difference_t<_Base>;
  
! 	  _Iterator() requires default_initializable<_Base_iter> = default;
  
  	  constexpr
! 	  _Iterator(_Parent* __parent, _Base_iter __current)
  	    : _M_current(std::move(__current)),
! 	      _M_parent(__parent)
  	  { }
  
  	  constexpr
*************** namespace views
*** 1722,1730 ****
  	    : _M_current(std::move(__i._M_current)), _M_parent(__i._M_parent)
  	  { }
  
! 	  constexpr _Base_iter
! 	  base() const &
! 	    requires copyable<_Base_iter>
  	  { return _M_current; }
  
  	  constexpr _Base_iter
--- 1740,1747 ----
  	    : _M_current(std::move(__i._M_current)), _M_parent(__i._M_parent)
  	  { }
  
! 	  constexpr const _Base_iter&
! 	  base() const & noexcept
  	  { return _M_current; }
  
  	  constexpr _Base_iter
*************** namespace views
*** 1825,1841 ****
  	  friend constexpr _Iterator
  	  operator+(_Iterator __i, difference_type __n)
  	    requires random_access_range<_Base>
! 	  { return {*__i._M_parent, __i._M_current + __n}; }
  
  	  friend constexpr _Iterator
  	  operator+(difference_type __n, _Iterator __i)
  	    requires random_access_range<_Base>
! 	  { return {*__i._M_parent, __i._M_current + __n}; }
  
  	  friend constexpr _Iterator
  	  operator-(_Iterator __i, difference_type __n)
  	    requires random_access_range<_Base>
! 	  { return {*__i._M_parent, __i._M_current - __n}; }
  
  	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  	  // 3483. transform_view::iterator's difference is overconstrained
--- 1842,1858 ----
  	  friend constexpr _Iterator
  	  operator+(_Iterator __i, difference_type __n)
  	    requires random_access_range<_Base>
! 	  { return {__i._M_parent, __i._M_current + __n}; }
  
  	  friend constexpr _Iterator
  	  operator+(difference_type __n, _Iterator __i)
  	    requires random_access_range<_Base>
! 	  { return {__i._M_parent, __i._M_current + __n}; }
  
  	  friend constexpr _Iterator
  	  operator-(_Iterator __i, difference_type __n)
  	    requires random_access_range<_Base>
! 	  { return {__i._M_parent, __i._M_current - __n}; }
  
  	  // _GLIBCXX_RESOLVE_LIB_DEFECTS
  	  // 3483. transform_view::iterator's difference is overconstrained
*************** namespace views
*** 1853,1864 ****
  	      return *__i;
  	  }
  
- 	  friend constexpr void
- 	  iter_swap(const _Iterator& __x, const _Iterator& __y)
- 	    noexcept(noexcept(ranges::iter_swap(__x._M_current, __y._M_current)))
- 	    requires indirectly_swappable<_Base_iter>
- 	  { return ranges::iter_swap(__x._M_current, __y._M_current); }
- 
  	  friend _Iterator<!_Const>;
  	  template<bool> friend struct _Sentinel;
  	};
--- 1870,1875 ----
*************** namespace views
*** 1868,1874 ****
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, transform_view>;
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
  	  template<bool _Const2>
  	    constexpr auto
--- 1879,1885 ----
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, transform_view>;
! 	  using _Base = transform_view::_Base<_Const>;
  
  	  template<bool _Const2>
  	    constexpr auto
*************** namespace views
*** 1929,1935 ****
        __detail::__box<_Fp> _M_fun;
  
      public:
!       transform_view() = default;
  
        constexpr
        transform_view(_Vp __base, _Fp __fun)
--- 1940,1948 ----
        __detail::__box<_Fp> _M_fun;
  
      public:
!       transform_view() requires (default_initializable<_Vp>
! 				 && default_initializable<_Fp>)
! 	= default;
  
        constexpr
        transform_view(_Vp __base, _Fp __fun)
*************** namespace views
*** 1946,1958 ****
  
        constexpr _Iterator<false>
        begin()
!       { return _Iterator<false>{*this, ranges::begin(_M_base)}; }
  
        constexpr _Iterator<true>
        begin() const
  	requires range<const _Vp>
  	  && regular_invocable<const _Fp&, range_reference_t<const _Vp>>
!       { return _Iterator<true>{*this, ranges::begin(_M_base)}; }
  
        constexpr _Sentinel<false>
        end()
--- 1959,1971 ----
  
        constexpr _Iterator<false>
        begin()
!       { return _Iterator<false>{this, ranges::begin(_M_base)}; }
  
        constexpr _Iterator<true>
        begin() const
  	requires range<const _Vp>
  	  && regular_invocable<const _Fp&, range_reference_t<const _Vp>>
!       { return _Iterator<true>{this, ranges::begin(_M_base)}; }
  
        constexpr _Sentinel<false>
        end()
*************** namespace views
*** 1960,1966 ****
  
        constexpr _Iterator<false>
        end() requires common_range<_Vp>
!       { return _Iterator<false>{*this, ranges::end(_M_base)}; }
  
        constexpr _Sentinel<true>
        end() const
--- 1973,1979 ----
  
        constexpr _Iterator<false>
        end() requires common_range<_Vp>
!       { return _Iterator<false>{this, ranges::end(_M_base)}; }
  
        constexpr _Sentinel<true>
        end() const
*************** namespace views
*** 1972,1978 ****
        end() const
  	requires common_range<const _Vp>
  	  && regular_invocable<const _Fp&, range_reference_t<const _Vp>>
!       { return _Iterator<true>{*this, ranges::end(_M_base)}; }
  
        constexpr auto
        size() requires sized_range<_Vp>
--- 1985,1991 ----
        end() const
  	requires common_range<const _Vp>
  	  && regular_invocable<const _Fp&, range_reference_t<const _Vp>>
!       { return _Iterator<true>{this, ranges::end(_M_base)}; }
  
        constexpr auto
        size() requires sized_range<_Vp>
*************** namespace views
*** 2046,2052 ****
        range_difference_t<_Vp> _M_count = 0;
  
      public:
!       take_view() = default;
  
        constexpr
        take_view(_Vp base, range_difference_t<_Vp> __count)
--- 2059,2065 ----
        range_difference_t<_Vp> _M_count = 0;
  
      public:
!       take_view() requires default_initializable<_Vp> = default;
  
        constexpr
        take_view(_Vp base, range_difference_t<_Vp> __count)
*************** namespace views
*** 2127,2140 ****
        size() requires sized_range<_Vp>
        {
  	auto __n = ranges::size(_M_base);
! 	return __detail::min(__n, static_cast<decltype(__n)>(_M_count));
        }
  
        constexpr auto
        size() const requires sized_range<const _Vp>
        {
  	auto __n = ranges::size(_M_base);
! 	return __detail::min(__n, static_cast<decltype(__n)>(_M_count));
        }
      };
  
--- 2140,2153 ----
        size() requires sized_range<_Vp>
        {
  	auto __n = ranges::size(_M_base);
! 	return std::min(__n, static_cast<decltype(__n)>(_M_count));
        }
  
        constexpr auto
        size() const requires sized_range<const _Vp>
        {
  	auto __n = ranges::size(_M_base);
! 	return std::min(__n, static_cast<decltype(__n)>(_M_count));
        }
      };
  
*************** namespace views
*** 2207,2213 ****
        __detail::__box<_Pred> _M_pred;
  
      public:
!       take_while_view() = default;
  
        constexpr
        take_while_view(_Vp base, _Pred __pred)
--- 2220,2228 ----
        __detail::__box<_Pred> _M_pred;
  
      public:
!       take_while_view() requires (default_initializable<_Vp>
! 				  && default_initializable<_Pred>)
! 	= default;
  
        constexpr
        take_while_view(_Vp base, _Pred __pred)
*************** namespace views
*** 2278,2284 ****
  				      _M_cached_begin;
  
      public:
!       drop_view() = default;
  
        constexpr
        drop_view(_Vp __base, range_difference_t<_Vp> __count)
--- 2293,2299 ----
  				      _M_cached_begin;
  
      public:
!       drop_view() requires default_initializable<_Vp> = default;
  
        constexpr
        drop_view(_Vp __base, range_difference_t<_Vp> __count)
*************** namespace views
*** 2374,2380 ****
        [[no_unique_address]] __detail::_CachedPosition<_Vp> _M_cached_begin;
  
      public:
!       drop_while_view() = default;
  
        constexpr
        drop_while_view(_Vp __base, _Pred __pred)
--- 2389,2397 ----
        [[no_unique_address]] __detail::_CachedPosition<_Vp> _M_cached_begin;
  
      public:
!       drop_while_view() requires (default_initializable<_Vp>
! 				  && default_initializable<_Pred>)
! 	= default;
  
        constexpr
        drop_while_view(_Vp __base, _Pred __pred)
*************** namespace views
*** 2399,2404 ****
--- 2416,2422 ----
  	if (_M_cached_begin._M_has_value())
  	  return _M_cached_begin._M_get(_M_base);
  
+ 	__glibcxx_assert(_M_pred.has_value());
  	auto __it = __detail::find_if_not(ranges::begin(_M_base),
  					  ranges::end(_M_base),
  					  std::cref(*_M_pred));
*************** namespace views
*** 2439,2455 ****
        using _InnerRange = range_reference_t<_Vp>;
  
        template<bool _Const>
  	struct _Sentinel;
  
        template<bool _Const>
! 	struct _Iterator
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, join_view>;
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
  	  static constexpr bool _S_ref_is_glvalue
! 	    = is_reference_v<range_reference_t<_Base>>;
  
  	  constexpr void
  	  _M_satisfy()
--- 2457,2517 ----
        using _InnerRange = range_reference_t<_Vp>;
  
        template<bool _Const>
+ 	using _Base = __detail::__maybe_const_t<_Const, _Vp>;
+ 
+       template<bool _Const>
+ 	using _Outer_iter = iterator_t<_Base<_Const>>;
+ 
+       template<bool _Const>
+ 	using _Inner_iter = iterator_t<range_reference_t<_Base<_Const>>>;
+ 
+       template<bool _Const>
+ 	static constexpr bool _S_ref_is_glvalue
+ 	  = is_reference_v<range_reference_t<_Base<_Const>>>;
+ 
+       template<bool _Const>
+ 	struct __iter_cat
+ 	{ };
+ 
+       template<bool _Const>
+ 	requires _S_ref_is_glvalue<_Const>
+ 	  && forward_range<_Base<_Const>>
+ 	  && forward_range<range_reference_t<_Base<_Const>>>
+ 	struct __iter_cat<_Const>
+ 	{
+ 	private:
+ 	  static constexpr auto
+ 	  _S_iter_cat()
+ 	  {
+ 	    using _Outer_iter = join_view::_Outer_iter<_Const>;
+ 	    using _Inner_iter = join_view::_Inner_iter<_Const>;
+ 	    using _OuterCat = typename iterator_traits<_Outer_iter>::iterator_category;
+ 	    using _InnerCat = typename iterator_traits<_Inner_iter>::iterator_category;
+ 	    if constexpr (derived_from<_OuterCat, bidirectional_iterator_tag>
+ 			  && derived_from<_InnerCat, bidirectional_iterator_tag>)
+ 	      return bidirectional_iterator_tag{};
+ 	    else if constexpr (derived_from<_OuterCat, forward_iterator_tag>
+ 			       && derived_from<_InnerCat, forward_iterator_tag>)
+ 	      return forward_iterator_tag{};
+ 	    else
+ 	      return input_iterator_tag{};
+ 	  }
+ 	public:
+ 	  using iterator_category = decltype(_S_iter_cat());
+ 	};
+ 
+       template<bool _Const>
  	struct _Sentinel;
  
        template<bool _Const>
! 	struct _Iterator : __iter_cat<_Const>
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, join_view>;
! 	  using _Base = join_view::_Base<_Const>;
  
  	  static constexpr bool _S_ref_is_glvalue
! 	    = join_view::_S_ref_is_glvalue<_Const>;
  
  	  constexpr void
  	  _M_satisfy()
*************** namespace views
*** 2489,2518 ****
  	      return input_iterator_tag{};
  	  }
  
! 	  static constexpr auto
! 	  _S_iter_cat()
! 	  {
! 	    using _OuterCat
! 	      = typename iterator_traits<_Outer_iter>::iterator_category;
! 	    using _InnerCat
! 	      = typename iterator_traits<_Inner_iter>::iterator_category;
! 	    if constexpr (_S_ref_is_glvalue
! 			  && derived_from<_OuterCat, bidirectional_iterator_tag>
! 			  && derived_from<_InnerCat, bidirectional_iterator_tag>)
! 	      return bidirectional_iterator_tag{};
! 	    else if constexpr (_S_ref_is_glvalue
! 			       && derived_from<_OuterCat, forward_iterator_tag>
! 			       && derived_from<_InnerCat, forward_iterator_tag>)
! 	      return forward_iterator_tag{};
! 	    else if constexpr (derived_from<_OuterCat, input_iterator_tag>
! 			       && derived_from<_InnerCat, input_iterator_tag>)
! 	      return input_iterator_tag{};
! 	    else
! 	      return output_iterator_tag{};
! 	  }
! 
! 	  using _Outer_iter = iterator_t<_Base>;
! 	  using _Inner_iter = iterator_t<range_reference_t<_Base>>;
  
  	  _Outer_iter _M_outer = _Outer_iter();
  	  _Inner_iter _M_inner = _Inner_iter();
--- 2551,2558 ----
  	      return input_iterator_tag{};
  	  }
  
! 	  using _Outer_iter = join_view::_Outer_iter<_Const>;
! 	  using _Inner_iter = join_view::_Inner_iter<_Const>;
  
  	  _Outer_iter _M_outer = _Outer_iter();
  	  _Inner_iter _M_inner = _Inner_iter();
*************** namespace views
*** 2520,2537 ****
  
  	public:
  	  using iterator_concept = decltype(_S_iter_concept());
! 	  using iterator_category = decltype(_S_iter_cat());
  	  using value_type = range_value_t<range_reference_t<_Base>>;
  	  using difference_type
  	    = common_type_t<range_difference_t<_Base>,
  			    range_difference_t<range_reference_t<_Base>>>;
  
! 	  _Iterator() = default;
  
  	  constexpr
! 	  _Iterator(_Parent& __parent, _Outer_iter __outer)
  	    : _M_outer(std::move(__outer)),
! 	      _M_parent(std::__addressof(__parent))
  	  { _M_satisfy(); }
  
  	  constexpr
--- 2560,2579 ----
  
  	public:
  	  using iterator_concept = decltype(_S_iter_concept());
! 	  // iterator_category defined in __join_view_iter_cat
  	  using value_type = range_value_t<range_reference_t<_Base>>;
  	  using difference_type
  	    = common_type_t<range_difference_t<_Base>,
  			    range_difference_t<range_reference_t<_Base>>>;
  
! 	  _Iterator() requires (default_initializable<_Outer_iter>
! 				&& default_initializable<_Inner_iter>)
! 	    = default;
  
  	  constexpr
! 	  _Iterator(_Parent* __parent, _Outer_iter __outer)
  	    : _M_outer(std::move(__outer)),
! 	      _M_parent(__parent)
  	  { _M_satisfy(); }
  
  	  constexpr
*************** namespace views
*** 2539,2545 ****
  	    requires _Const
  	      && convertible_to<iterator_t<_Vp>, _Outer_iter>
  	      && convertible_to<iterator_t<_InnerRange>, _Inner_iter>
! 	    : _M_outer(std::move(__i._M_outer)), _M_inner(__i._M_inner),
  	      _M_parent(__i._M_parent)
  	  { }
  
--- 2581,2587 ----
  	    requires _Const
  	      && convertible_to<iterator_t<_Vp>, _Outer_iter>
  	      && convertible_to<iterator_t<_InnerRange>, _Inner_iter>
! 	    : _M_outer(std::move(__i._M_outer)), _M_inner(std::move(__i._M_inner)),
  	      _M_parent(__i._M_parent)
  	  { }
  
*************** namespace views
*** 2558,2564 ****
  	  constexpr _Iterator&
  	  operator++()
  	  {
! 	    auto&& __inner_range = [this] () -> decltype(auto) {
  	      if constexpr (_S_ref_is_glvalue)
  		return *_M_outer;
  	      else
--- 2600,2606 ----
  	  constexpr _Iterator&
  	  operator++()
  	  {
! 	    auto&& __inner_range = [this] () -> auto&& {
  	      if constexpr (_S_ref_is_glvalue)
  		return *_M_outer;
  	      else
*************** namespace views
*** 2629,2634 ****
--- 2671,2677 ----
  	  friend constexpr void
  	  iter_swap(const _Iterator& __x, const _Iterator& __y)
  	    noexcept(noexcept(ranges::iter_swap(__x._M_inner, __y._M_inner)))
+ 	    requires indirectly_swappable<_Inner_iter>
  	  { return ranges::iter_swap(__x._M_inner, __y._M_inner); }
  
  	  friend _Iterator<!_Const>;
*************** namespace views
*** 2640,2646 ****
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, join_view>;
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
  	  template<bool _Const2>
  	    constexpr bool
--- 2683,2689 ----
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, join_view>;
! 	  using _Base = join_view::_Base<_Const>;
  
  	  template<bool _Const2>
  	    constexpr bool
*************** namespace views
*** 2653,2660 ****
  	  _Sentinel() = default;
  
  	  constexpr explicit
! 	  _Sentinel(_Parent& __parent)
! 	    : _M_end(ranges::end(__parent._M_base))
  	  { }
  
  	  constexpr
--- 2696,2703 ----
  	  _Sentinel() = default;
  
  	  constexpr explicit
! 	  _Sentinel(_Parent* __parent)
! 	    : _M_end(ranges::end(__parent->_M_base))
  	  { }
  
  	  constexpr
*************** namespace views
*** 2681,2687 ****
  				    views::all_t<_InnerRange>> _M_inner;
  
      public:
!       join_view() = default;
  
        constexpr explicit
        join_view(_Vp __base)
--- 2724,2730 ----
  				    views::all_t<_InnerRange>> _M_inner;
  
      public:
!       join_view() requires default_initializable<_Vp> = default;
  
        constexpr explicit
        join_view(_Vp __base)
*************** namespace views
*** 2702,2708 ****
  	constexpr bool __use_const
  	  = (__detail::__simple_view<_Vp>
  	     && is_reference_v<range_reference_t<_Vp>>);
! 	return _Iterator<__use_const>{*this, ranges::begin(_M_base)};
        }
  
        constexpr auto
--- 2745,2751 ----
  	constexpr bool __use_const
  	  = (__detail::__simple_view<_Vp>
  	     && is_reference_v<range_reference_t<_Vp>>);
! 	return _Iterator<__use_const>{this, ranges::begin(_M_base)};
        }
  
        constexpr auto
*************** namespace views
*** 2710,2716 ****
  	requires input_range<const _Vp>
  	  && is_reference_v<range_reference_t<const _Vp>>
        {
! 	return _Iterator<true>{*this, ranges::begin(_M_base)};
        }
  
        constexpr auto
--- 2753,2759 ----
  	requires input_range<const _Vp>
  	  && is_reference_v<range_reference_t<const _Vp>>
        {
! 	return _Iterator<true>{this, ranges::begin(_M_base)};
        }
  
        constexpr auto
*************** namespace views
*** 2719,2728 ****
  	if constexpr (forward_range<_Vp> && is_reference_v<_InnerRange>
  		      && forward_range<_InnerRange>
  		      && common_range<_Vp> && common_range<_InnerRange>)
! 	  return _Iterator<__detail::__simple_view<_Vp>>{*this,
  							 ranges::end(_M_base)};
  	else
! 	  return _Sentinel<__detail::__simple_view<_Vp>>{*this};
        }
  
        constexpr auto
--- 2762,2771 ----
  	if constexpr (forward_range<_Vp> && is_reference_v<_InnerRange>
  		      && forward_range<_InnerRange>
  		      && common_range<_Vp> && common_range<_InnerRange>)
! 	  return _Iterator<__detail::__simple_view<_Vp>>{this,
  							 ranges::end(_M_base)};
  	else
! 	  return _Sentinel<__detail::__simple_view<_Vp>>{this};
        }
  
        constexpr auto
*************** namespace views
*** 2735,2743 ****
  		      && forward_range<range_reference_t<const _Vp>>
  		      && common_range<const _Vp>
  		      && common_range<range_reference_t<const _Vp>>)
! 	  return _Iterator<true>{*this, ranges::end(_M_base)};
  	else
! 	  return _Sentinel<true>{*this};
        }
      };
  
--- 2778,2786 ----
  		      && forward_range<range_reference_t<const _Vp>>
  		      && common_range<const _Vp>
  		      && common_range<range_reference_t<const _Vp>>)
! 	  return _Iterator<true>{this, ranges::end(_M_base)};
  	else
! 	  return _Sentinel<true>{this};
        }
      };
  
*************** namespace views
*** 2765,2770 ****
--- 2808,2842 ----
  	&& requires
  	   { typename __require_constant<remove_reference_t<_Range>::size()>; }
  	&& (remove_reference_t<_Range>::size() <= 1);
+ 
+     template<typename _Base>
+       struct __split_view_outer_iter_cat
+       { };
+ 
+     template<forward_range _Base>
+       struct __split_view_outer_iter_cat<_Base>
+       { using iterator_category = input_iterator_tag; };
+ 
+     template<typename _Base>
+       struct __split_view_inner_iter_cat
+       { };
+ 
+     template<forward_range _Base>
+       struct __split_view_inner_iter_cat<_Base>
+       {
+       private:
+ 	static constexpr auto
+ 	_S_iter_cat()
+ 	{
+ 	  using _Cat = typename iterator_traits<iterator_t<_Base>>::iterator_category;
+ 	  if constexpr (derived_from<_Cat, forward_iterator_tag>)
+ 	    return forward_iterator_tag{};
+ 	  else
+ 	    return _Cat{};
+ 	}
+       public:
+ 	using iterator_category = decltype(_S_iter_cat());
+       };
    }
  
    template<input_range _Vp, forward_range _Pattern>
*************** namespace views
*** 2776,2789 ****
      {
      private:
        template<bool _Const>
  	struct _InnerIter;
  
        template<bool _Const>
  	struct _OuterIter
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, split_view>;
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
  	  constexpr bool
  	  __at_end() const
--- 2848,2865 ----
      {
      private:
        template<bool _Const>
+ 	using _Base = __detail::__maybe_const_t<_Const, _Vp>;
+ 
+       template<bool _Const>
  	struct _InnerIter;
  
        template<bool _Const>
  	struct _OuterIter
+ 	  : __detail::__split_view_outer_iter_cat<_Base<_Const>>
  	{
  	private:
  	  using _Parent = __detail::__maybe_const_t<_Const, split_view>;
! 	  using _Base = split_view::_Base<_Const>;
  
  	  constexpr bool
  	  __at_end() const
*************** namespace views
*** 2822,2828 ****
  	  using iterator_concept = conditional_t<forward_range<_Base>,
  						 forward_iterator_tag,
  						 input_iterator_tag>;
! 	  using iterator_category = input_iterator_tag;
  	  using difference_type = range_difference_t<_Base>;
  
  	  struct value_type : view_interface<value_type>
--- 2898,2904 ----
  	  using iterator_concept = conditional_t<forward_range<_Base>,
  						 forward_iterator_tag,
  						 input_iterator_tag>;
! 	  // iterator_category defined in __split_view_outer_iter_cat
  	  using difference_type = range_difference_t<_Base>;
  
  	  struct value_type : view_interface<value_type>
*************** namespace views
*** 2840,2853 ****
  
  	    constexpr _InnerIter<_Const>
  	    begin() const
- 	      requires copyable<_OuterIter>
  	    { return _InnerIter<_Const>{_M_i}; }
  
- 	    constexpr _InnerIter<_Const>
- 	    begin()
- 	      requires (!copyable<_OuterIter>)
- 	    { return _InnerIter<_Const>{std::move(_M_i)}; }
- 
  	    constexpr default_sentinel_t
  	    end() const
  	    { return default_sentinel; }
--- 2916,2923 ----
*************** namespace views
*** 2856,2869 ****
  	  _OuterIter() = default;
  
  	  constexpr explicit
! 	  _OuterIter(_Parent& __parent) requires (!forward_range<_Base>)
! 	    : _M_parent(std::__addressof(__parent))
  	  { }
  
  	  constexpr
! 	  _OuterIter(_Parent& __parent, iterator_t<_Base> __current)
  	    requires forward_range<_Base>
! 	    : _M_parent(std::__addressof(__parent)),
  	      _M_current(std::move(__current))
  	  { }
  
--- 2926,2939 ----
  	  _OuterIter() = default;
  
  	  constexpr explicit
! 	  _OuterIter(_Parent* __parent) requires (!forward_range<_Base>)
! 	    : _M_parent(__parent)
  	  { }
  
  	  constexpr
! 	  _OuterIter(_Parent* __parent, iterator_t<_Base> __current)
  	    requires forward_range<_Base>
! 	    : _M_parent(__parent),
  	      _M_current(std::move(__current))
  	  { }
  
*************** namespace views
*** 2881,2901 ****
  	  constexpr _OuterIter&
  	  operator++()
  	  {
  	    const auto __end = ranges::end(_M_parent->_M_base);
  	    if (__current() == __end)
  	      return *this;
  	    const auto [__pbegin, __pend] = subrange{_M_parent->_M_pattern};
  	    if (__pbegin == __pend)
  	      ++__current();
  	    else
  	      do
  		{
  		  auto [__b, __p]
! 		    = __detail::mismatch(std::move(__current()), __end,
! 					 __pbegin, __pend);
! 		  __current() = std::move(__b);
  		  if (__p == __pend)
! 		    break;
  		} while (++__current() != __end);
  	    return *this;
  	  }
--- 2951,2981 ----
  	  constexpr _OuterIter&
  	  operator++()
  	  {
+ 	    // _GLIBCXX_RESOLVE_LIB_DEFECTS
+ 	    // 3505. split_view::outer-iterator::operator++ misspecified
  	    const auto __end = ranges::end(_M_parent->_M_base);
  	    if (__current() == __end)
  	      return *this;
  	    const auto [__pbegin, __pend] = subrange{_M_parent->_M_pattern};
  	    if (__pbegin == __pend)
  	      ++__current();
+ 	    else if constexpr (__detail::__tiny_range<_Pattern>)
+ 	      {
+ 		__current() = __detail::find(std::move(__current()), __end,
+ 					     *__pbegin);
+ 		if (__current() != __end)
+ 		  ++__current();
+ 	      }
  	    else
  	      do
  		{
  		  auto [__b, __p]
! 		    = __detail::mismatch(__current(), __end, __pbegin, __pend);
  		  if (__p == __pend)
! 		    {
! 		      __current() = __b;
! 		      break;
! 		    }
  		} while (++__current() != __end);
  	    return *this;
  	  }
*************** namespace views
*** 2928,2936 ****
  
        template<bool _Const>
  	struct _InnerIter
  	{
  	private:
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
  	  constexpr bool
  	  __at_end() const
--- 3008,3017 ----
  
        template<bool _Const>
  	struct _InnerIter
+ 	  : __detail::__split_view_inner_iter_cat<_Base<_Const>>
  	{
  	private:
! 	  using _Base = split_view::_Base<_Const>;
  
  	  constexpr bool
  	  __at_end() const
*************** namespace views
*** 2964,2980 ****
  	      }
  	  }
  
- 	  static constexpr auto
- 	  _S_iter_cat()
- 	  {
- 	    using _Cat
-               = typename iterator_traits<iterator_t<_Base>>::iterator_category;
- 	    if constexpr (derived_from<_Cat, forward_iterator_tag>)
- 	      return forward_iterator_tag{};
- 	    else
- 	      return _Cat{};
- 	  }
- 
  	  constexpr auto&
  	  _M_i_current() noexcept
  	  { return _M_i.__current(); }
--- 3045,3050 ----
*************** namespace views
*** 2989,2995 ****
  	public:
  	  using iterator_concept
  	    = typename _OuterIter<_Const>::iterator_concept;
! 	  using iterator_category = decltype(_S_iter_cat());
  	  using value_type = range_value_t<_Base>;
  	  using difference_type = range_difference_t<_Base>;
  
--- 3059,3065 ----
  	public:
  	  using iterator_concept
  	    = typename _OuterIter<_Const>::iterator_concept;
! 	  // iterator_category defined in __split_view_inner_iter_cat
  	  using value_type = range_value_t<_Base>;
  	  using difference_type = range_difference_t<_Base>;
  
*************** namespace views
*** 3000,3005 ****
--- 3070,3083 ----
  	    : _M_i(std::move(__i))
  	  { }
  
+ 	  constexpr const iterator_t<_Base>&
+ 	  base() const& noexcept
+ 	  { return _M_i_current(); }
+ 
+ 	  constexpr iterator_t<_Base>
+ 	  base() &&
+ 	  { return std::move(_M_i_current()); }
+ 
  	  constexpr decltype(auto)
  	  operator*() const
  	  { return *_M_i_current(); }
*************** namespace views
*** 3018,3024 ****
  	  constexpr decltype(auto)
  	  operator++(int)
  	  {
! 	    if constexpr (forward_range<_Vp>)
  	      {
  		auto __tmp = *this;
  		++*this;
--- 3096,3102 ----
  	  constexpr decltype(auto)
  	  operator++(int)
  	  {
! 	    if constexpr (forward_range<_Base>)
  	      {
  		auto __tmp = *this;
  		++*this;
*************** namespace views
*** 3060,3066 ****
  
  
      public:
!       split_view() = default;
  
        constexpr
        split_view(_Vp __base, _Pattern __pattern)
--- 3138,3147 ----
  
  
      public:
!       split_view() requires (default_initializable<_Vp>
! 			     && default_initializable<_Pattern>
! 			     && default_initializable<iterator_t<_Vp>>)
! 	= default;
  
        constexpr
        split_view(_Vp __base, _Pattern __pattern)
*************** namespace views
*** 3089,3113 ****
        {
  	if constexpr (forward_range<_Vp>)
  	  return _OuterIter<__detail::__simple_view<_Vp>>{
! 	      *this, ranges::begin(_M_base)};
  	else
  	  {
  	    _M_current = ranges::begin(_M_base);
! 	    return _OuterIter<false>{*this};
  	  }
        }
  
        constexpr auto
        begin() const requires forward_range<_Vp> && forward_range<const _Vp>
        {
! 	return _OuterIter<true>{*this, ranges::begin(_M_base)};
        }
  
        constexpr auto
        end() requires forward_range<_Vp> && common_range<_Vp>
        {
  	return _OuterIter<__detail::__simple_view<_Vp>>{
! 	    *this, ranges::end(_M_base)};
        }
  
        constexpr auto
--- 3170,3194 ----
        {
  	if constexpr (forward_range<_Vp>)
  	  return _OuterIter<__detail::__simple_view<_Vp>>{
! 	      this, ranges::begin(_M_base)};
  	else
  	  {
  	    _M_current = ranges::begin(_M_base);
! 	    return _OuterIter<false>{this};
  	  }
        }
  
        constexpr auto
        begin() const requires forward_range<_Vp> && forward_range<const _Vp>
        {
! 	return _OuterIter<true>{this, ranges::begin(_M_base)};
        }
  
        constexpr auto
        end() requires forward_range<_Vp> && common_range<_Vp>
        {
  	return _OuterIter<__detail::__simple_view<_Vp>>{
! 	    this, ranges::end(_M_base)};
        }
  
        constexpr auto
*************** namespace views
*** 3116,3122 ****
  	if constexpr (forward_range<_Vp>
  		      && forward_range<const _Vp>
  		      && common_range<const _Vp>)
! 	  return _OuterIter<true>{*this, ranges::end(_M_base)};
  	else
  	  return default_sentinel;
        }
--- 3197,3203 ----
  	if constexpr (forward_range<_Vp>
  		      && forward_range<const _Vp>
  		      && common_range<const _Vp>)
! 	  return _OuterIter<true>{this, ranges::end(_M_base)};
  	else
  	  return default_sentinel;
        }
*************** namespace views
*** 3166,3172 ****
        _Vp _M_base = _Vp();
  
      public:
!       common_view() = default;
  
        constexpr explicit
        common_view(_Vp __r)
--- 3247,3253 ----
        _Vp _M_base = _Vp();
  
      public:
!       common_view() requires default_initializable<_Vp> = default;
  
        constexpr explicit
        common_view(_Vp __r)
*************** namespace views
*** 3276,3282 ****
  				      _M_cached_begin;
  
      public:
!       reverse_view() = default;
  
        constexpr explicit
        reverse_view(_Vp __r)
--- 3357,3363 ----
  				      _M_cached_begin;
  
      public:
!       reverse_view() requires default_initializable<_Vp> = default;
  
        constexpr explicit
        reverse_view(_Vp __r)
*************** namespace views
*** 3388,3393 ****
--- 3469,3478 ----
  	{ std::get<_Nm>(__t) }
  	  -> convertible_to<const tuple_element_t<_Nm, _Tp>&>;
        };
+ 
+     template<typename _Tp, size_t _Nm>
+       concept __returnable_element
+ 	= is_reference_v<_Tp> || move_constructible<tuple_element_t<_Nm, _Tp>>;
    }
  
    template<input_range _Vp, size_t _Nm>
*************** namespace views
*** 3395,3404 ****
        && __detail::__has_tuple_element<range_value_t<_Vp>, _Nm>
        && __detail::__has_tuple_element<remove_reference_t<range_reference_t<_Vp>>,
  				       _Nm>
      class elements_view : public view_interface<elements_view<_Vp, _Nm>>
      {
      public:
!       elements_view() = default;
  
        constexpr explicit
        elements_view(_Vp base)
--- 3480,3490 ----
        && __detail::__has_tuple_element<range_value_t<_Vp>, _Nm>
        && __detail::__has_tuple_element<remove_reference_t<range_reference_t<_Vp>>,
  				       _Nm>
+       && __detail::__returnable_element<range_reference_t<_Vp>, _Nm>
      class elements_view : public view_interface<elements_view<_Vp, _Nm>>
      {
      public:
!       elements_view() requires default_initializable<_Vp> = default;
  
        constexpr explicit
        elements_view(_Vp base)
*************** namespace views
*** 3447,3471 ****
  
      private:
        template<bool _Const>
  	struct _Sentinel;
  
        template<bool _Const>
! 	struct _Iterator
  	{
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  
  	  iterator_t<_Base> _M_current = iterator_t<_Base>();
  
  	  friend _Iterator<!_Const>;
  
  	public:
! 	  using iterator_category
! 	    = typename iterator_traits<iterator_t<_Base>>::iterator_category;
  	  using value_type
  	    = remove_cvref_t<tuple_element_t<_Nm, range_value_t<_Base>>>;
  	  using difference_type = range_difference_t<_Base>;
  
! 	  _Iterator() = default;
  
  	  constexpr explicit
  	  _Iterator(iterator_t<_Base> current)
--- 3533,3611 ----
  
      private:
        template<bool _Const>
+ 	using _Base = __detail::__maybe_const_t<_Const, _Vp>;
+ 
+       template<bool _Const>
+ 	struct __iter_cat
+ 	{ };
+ 
+       template<bool _Const>
+ 	requires forward_range<_Base<_Const>>
+ 	struct __iter_cat<_Const>
+ 	{
+ 	private:
+ 	  static auto _S_iter_cat()
+ 	  {
+ 	    using _Base = elements_view::_Base<_Const>;
+ 	    using _Cat = typename iterator_traits<iterator_t<_Base>>::iterator_category;
+ 	    using _Res = decltype((std::get<_Nm>(*std::declval<iterator_t<_Base>>())));
+ 	    if constexpr (!is_lvalue_reference_v<_Res>)
+ 	      return input_iterator_tag{};
+ 	    else if constexpr (derived_from<_Cat, random_access_iterator_tag>)
+ 	      return random_access_iterator_tag{};
+ 	    else
+ 	      return _Cat{};
+ 	  }
+ 	public:
+ 	  using iterator_category = decltype(_S_iter_cat());
+ 	};
+ 
+       template<bool _Const>
  	struct _Sentinel;
  
        template<bool _Const>
! 	struct _Iterator : __iter_cat<_Const>
  	{
! 	private:
! 	  using _Base = elements_view::_Base<_Const>;
  
  	  iterator_t<_Base> _M_current = iterator_t<_Base>();
  
+ 	  static constexpr decltype(auto)
+ 	  _S_get_element(const iterator_t<_Base>& __i)
+ 	  {
+ 	    if constexpr (is_reference_v<range_reference_t<_Base>>)
+ 	      return std::get<_Nm>(*__i);
+ 	    else
+ 	      {
+ 		using _Et = remove_cv_t<tuple_element_t<_Nm, range_reference_t<_Base>>>;
+ 		return static_cast<_Et>(std::get<_Nm>(*__i));
+ 	      }
+ 	  }
+ 
+ 	  static auto
+ 	  _S_iter_concept()
+ 	  {
+ 	    if constexpr (random_access_range<_Base>)
+ 	      return random_access_iterator_tag{};
+ 	    else if constexpr (bidirectional_range<_Base>)
+ 	      return bidirectional_iterator_tag{};
+ 	    else if constexpr (forward_range<_Base>)
+ 	      return forward_iterator_tag{};
+ 	    else
+ 	      return input_iterator_tag{};
+ 	  }
+ 
  	  friend _Iterator<!_Const>;
  
  	public:
! 	  using iterator_concept = decltype(_S_iter_concept());
! 	  // iterator_category defined in elements_view::__iter_cat
  	  using value_type
  	    = remove_cvref_t<tuple_element_t<_Nm, range_value_t<_Base>>>;
  	  using difference_type = range_difference_t<_Base>;
  
! 	  _Iterator() requires default_initializable<iterator_t<_Base>> = default;
  
  	  constexpr explicit
  	  _Iterator(iterator_t<_Base> current)
*************** namespace views
*** 3478,3486 ****
  	    : _M_current(std::move(i._M_current))
  	  { }
  
! 	  constexpr iterator_t<_Base>
! 	  base() const&
! 	    requires copyable<iterator_t<_Base>>
  	  { return _M_current; }
  
  	  constexpr iterator_t<_Base>
--- 3618,3625 ----
  	    : _M_current(std::move(i._M_current))
  	  { }
  
! 	  constexpr const iterator_t<_Base>&
! 	  base() const& noexcept
  	  { return _M_current; }
  
  	  constexpr iterator_t<_Base>
*************** namespace views
*** 3488,3495 ****
  	  { return std::move(_M_current); }
  
  	  constexpr decltype(auto)
! 	    operator*() const
! 	  { return std::get<_Nm>(*_M_current); }
  
  	  constexpr _Iterator&
  	  operator++()
--- 3627,3634 ----
  	  { return std::move(_M_current); }
  
  	  constexpr decltype(auto)
! 	  operator*() const
! 	  { return _S_get_element(_M_current); }
  
  	  constexpr _Iterator&
  	  operator++()
*************** namespace views
*** 3499,3505 ****
  	  }
  
  	  constexpr void
! 	  operator++(int) requires (!forward_range<_Base>)
  	  { ++_M_current; }
  
  	  constexpr _Iterator
--- 3638,3644 ----
  	  }
  
  	  constexpr void
! 	  operator++(int)
  	  { ++_M_current; }
  
  	  constexpr _Iterator
*************** namespace views
*** 3544,3550 ****
  	  constexpr decltype(auto)
  	  operator[](difference_type __n) const
  	    requires random_access_range<_Base>
! 	  { return std::get<_Nm>(*(_M_current + __n)); }
  
  	  friend constexpr bool
  	  operator==(const _Iterator& __x, const _Iterator& __y)
--- 3683,3689 ----
  	  constexpr decltype(auto)
  	  operator[](difference_type __n) const
  	    requires random_access_range<_Base>
! 	  { return _S_get_element(_M_current + __n); }
  
  	  friend constexpr bool
  	  operator==(const _Iterator& __x, const _Iterator& __y)
*************** namespace views
*** 3601,3618 ****
  	    requires sized_sentinel_for<iterator_t<_Base>, iterator_t<_Base>>
  	  { return __x._M_current - __y._M_current; }
  
! 	  friend _Sentinel<_Const>;
  	};
  
        template<bool _Const>
  	struct _Sentinel
  	{
  	private:
! 	  constexpr bool
! 	  _M_equal(const _Iterator<_Const>& __x) const
! 	  { return __x._M_current == _M_end; }
  
! 	  using _Base = __detail::__maybe_const_t<_Const, _Vp>;
  	  sentinel_t<_Base> _M_end = sentinel_t<_Base>();
  
  	public:
--- 3740,3763 ----
  	    requires sized_sentinel_for<iterator_t<_Base>, iterator_t<_Base>>
  	  { return __x._M_current - __y._M_current; }
  
! 	  template <bool> friend struct _Sentinel;
  	};
  
        template<bool _Const>
  	struct _Sentinel
  	{
  	private:
! 	  template<bool _Const2>
! 	    constexpr bool
! 	    _M_equal(const _Iterator<_Const2>& __x) const
! 	    { return __x._M_current == _M_end; }
  
! 	  template<bool _Const2>
! 	    constexpr auto
! 	    _M_distance_from(const _Iterator<_Const2>& __i) const
! 	    { return _M_end - __i._M_current; }
! 
! 	  using _Base = elements_view::_Base<_Const>;
  	  sentinel_t<_Base> _M_end = sentinel_t<_Base>();
  
  	public:
*************** namespace views
*** 3646,3659 ****
  	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
  	    friend constexpr range_difference_t<_Base2>
  	    operator-(const _Iterator<_Const2>& __x, const _Sentinel& __y)
! 	    { return __x._M_current - __y._M_end; }
  
  	  template<bool _Const2,
  		   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>
  	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
! 	    friend constexpr range_difference_t<_Base>
  	    operator-(const _Sentinel& __x, const _Iterator<_Const2>& __y)
! 	    { return __x._M_end - __y._M_current; }
  
  	  friend _Sentinel<!_Const>;
  	};
--- 3791,3804 ----
  	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
  	    friend constexpr range_difference_t<_Base2>
  	    operator-(const _Iterator<_Const2>& __x, const _Sentinel& __y)
! 	    { return -__y._M_distance_from(__x); }
  
  	  template<bool _Const2,
  		   typename _Base2 = __detail::__maybe_const_t<_Const2, _Vp>>
  	    requires sized_sentinel_for<sentinel_t<_Base>, iterator_t<_Base2>>
! 	    friend constexpr range_difference_t<_Base2>
  	    operator-(const _Sentinel& __x, const _Iterator<_Const2>& __y)
! 	    { return __x._M_distance_from(__y); }
  
  	  friend _Sentinel<!_Const>;
  	};
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/ratio gcc-10.4.0/libstdc++-v3/include/std/ratio
*** gcc-10.3.0/libstdc++-v3/include/std/ratio	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/ratio	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 567,573 ****
    typedef ratio<         1000000000000000, 1> peta;
    typedef ratio<      1000000000000000000, 1> exa;
  
!   // @} group ratio
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
--- 567,573 ----
    typedef ratio<         1000000000000000, 1> peta;
    typedef ratio<      1000000000000000000, 1> exa;
  
!   /// @} group ratio
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/shared_mutex gcc-10.4.0/libstdc++-v3/include/std/shared_mutex
*** gcc-10.3.0/libstdc++-v3/include/std/shared_mutex	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/shared_mutex	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 846,852 ****
      swap(shared_lock<_Mutex>& __x, shared_lock<_Mutex>& __y) noexcept
      { __x.swap(__y); }
  
!   // @} group mutexes
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
--- 846,852 ----
      swap(shared_lock<_Mutex>& __x, shared_lock<_Mutex>& __y) noexcept
      { __x.swap(__y); }
  
!   /// @} group mutexes
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/span gcc-10.4.0/libstdc++-v3/include/std/span
*** gcc-10.3.0/libstdc++-v3/include/std/span	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/span	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 204,214 ****
  	{ }
  
        template<typename _Range>
! 	requires ranges::contiguous_range<_Range> && ranges::sized_range<_Range>
! 	  && (ranges::borrowed_range<_Range> || is_const_v<element_type>)
! 	  && (!__detail::__is_std_span<remove_cvref_t<_Range>>::value)
  	  && (!__detail::__is_std_array<remove_cvref_t<_Range>>::value)
  	  && (!is_array_v<remove_cvref_t<_Range>>)
  	  && __is_compatible_ref<ranges::range_reference_t<_Range>>::value
  	constexpr explicit(extent != dynamic_extent)
  	span(_Range&& __range)
--- 204,214 ----
  	{ }
  
        template<typename _Range>
! 	requires (!__detail::__is_std_span<remove_cvref_t<_Range>>::value)
  	  && (!__detail::__is_std_array<remove_cvref_t<_Range>>::value)
  	  && (!is_array_v<remove_cvref_t<_Range>>)
+ 	  && ranges::contiguous_range<_Range> && ranges::sized_range<_Range>
+ 	  && (ranges::borrowed_range<_Range> || is_const_v<element_type>)
  	  && __is_compatible_ref<ranges::range_reference_t<_Range>>::value
  	constexpr explicit(extent != dynamic_extent)
  	span(_Range&& __range)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 412,418 ****
      span(_Iter, _End)
        -> span<remove_reference_t<iter_reference_t<_Iter>>>;
  
!   template<typename _Range>
      span(_Range &&)
        -> span<remove_reference_t<ranges::range_reference_t<_Range&>>>;
  
--- 412,418 ----
      span(_Iter, _End)
        -> span<remove_reference_t<iter_reference_t<_Iter>>>;
  
!   template<ranges::contiguous_range _Range>
      span(_Range &&)
        -> span<remove_reference_t<ranges::range_reference_t<_Range&>>>;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 430,435 ****
--- 430,436 ----
      }
  
    template<typename _Type, size_t _Extent>
+     requires (!is_const_v<_Type>)
      inline
      span<byte, _Extent == dynamic_extent
         ? dynamic_extent : _Extent * sizeof(_Type)>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 452,459 ****
      // Opt-in to view concept
      template<typename _ElementType, size_t _Extent>
        inline constexpr bool
! 	enable_view<span<_ElementType, _Extent>>
! 	  = _Extent == 0 || _Extent == dynamic_extent;
    }
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
--- 453,459 ----
      // Opt-in to view concept
      template<typename _ElementType, size_t _Extent>
        inline constexpr bool
! 	enable_view<span<_ElementType, _Extent>> = true;
    }
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/stdexcept gcc-10.4.0/libstdc++-v3/include/std/stdexcept
*** gcc-10.3.0/libstdc++-v3/include/std/stdexcept	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/stdexcept	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 299,305 ****
      virtual ~underflow_error() _GLIBCXX_NOTHROW;
    };
  
!   // @} group exceptions
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 299,305 ----
      virtual ~underflow_error() _GLIBCXX_NOTHROW;
    };
  
!   /// @} group exceptions
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/streambuf gcc-10.4.0/libstdc++-v3/include/std/streambuf
*** gcc-10.3.0/libstdc++-v3/include/std/streambuf	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/streambuf	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 122,128 ****
      class basic_streambuf
      {
      public:
!       //@{
        /**
         *  These are standard types.  They permit a standardized way of
         *  referring to names of (or names dependent on) the template
--- 122,128 ----
      class basic_streambuf
      {
      public:
!       ///@{
        /**
         *  These are standard types.  They permit a standardized way of
         *  referring to names of (or names dependent on) the template
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 133,144 ****
        typedef typename traits_type::int_type 		int_type;
        typedef typename traits_type::pos_type 		pos_type;
        typedef typename traits_type::off_type 		off_type;
!       //@}
  
!       //@{
        /// This is a non-standard type.
        typedef basic_streambuf<char_type, traits_type>  	__streambuf_type;
!       //@}
  
        friend class basic_ios<char_type, traits_type>;
        friend class basic_istream<char_type, traits_type>;
--- 133,144 ----
        typedef typename traits_type::int_type 		int_type;
        typedef typename traits_type::pos_type 		pos_type;
        typedef typename traits_type::off_type 		off_type;
!       ///@}
  
!       ///@{
        /// This is a non-standard type.
        typedef basic_streambuf<char_type, traits_type>  	__streambuf_type;
!       ///@}
  
        friend class basic_ios<char_type, traits_type>;
        friend class basic_istream<char_type, traits_type>;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 234,240 ****
        { return _M_buf_locale; }
  
        // [27.5.2.2.2] buffer management and positioning
!       //@{
        /**
         *  @brief  Entry points for derived buffer functions.
         *
--- 234,240 ----
        { return _M_buf_locale; }
  
        // [27.5.2.2.2] buffer management and positioning
!       ///@{
        /**
         *  @brief  Entry points for derived buffer functions.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 276,282 ****
        */
        int
        pubsync() { return this->sync(); }
!       //@}
  
        // [27.5.2.2.3] get area
        /**
--- 276,282 ----
        */
        int
        pubsync() { return this->sync(); }
!       ///@}
  
        // [27.5.2.2.3] get area
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 474,480 ****
        { }
  
        // [27.5.2.3.1] get area access
!       //@{
        /**
         *  @brief  Access to the get area.
         *
--- 474,480 ----
        { }
  
        // [27.5.2.3.1] get area access
!       ///@{
        /**
         *  @brief  Access to the get area.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 493,499 ****
  
        char_type*
        egptr() const { return _M_in_end; }
!       //@}
  
        /**
         *  @brief  Moving the read position.
--- 493,499 ----
  
        char_type*
        egptr() const { return _M_in_end; }
!       ///@}
  
        /**
         *  @brief  Moving the read position.
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 521,527 ****
        }
  
        // [27.5.2.3.2] put area access
!       //@{
        /**
         *  @brief  Access to the put area.
         *
--- 521,527 ----
        }
  
        // [27.5.2.3.2] put area access
!       ///@{
        /**
         *  @brief  Access to the put area.
         *
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 540,546 ****
  
        char_type*
        epptr() const { return _M_out_end; }
!       //@}
  
        /**
         *  @brief  Moving the write position.
--- 540,546 ----
  
        char_type*
        epptr() const { return _M_out_end; }
!       ///@}
  
        /**
         *  @brief  Moving the write position.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/string_view gcc-10.4.0/libstdc++-v3/include/std/string_view
*** gcc-10.3.0/libstdc++-v3/include/std/string_view	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/string_view	Tue Jun 28 08:54:31 2022
***************
*** 22,28 ****
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
! /** @file string_view
   *  This is a Standard C++ Library header.
   */
  
--- 22,28 ----
  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  // <http://www.gnu.org/licenses/>.
  
! /** @file include/string_view
   *  This is a Standard C++ Library header.
   */
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 338,345 ****
        constexpr bool
        ends_with(basic_string_view __x) const noexcept
        {
! 	return this->size() >= __x.size()
! 	    && this->compare(this->size() - __x.size(), npos, __x) == 0;
        }
  
        constexpr bool
--- 338,347 ----
        constexpr bool
        ends_with(basic_string_view __x) const noexcept
        {
! 	const auto __len = this->size();
! 	const auto __xlen = __x.size();
! 	return __len >= __xlen
! 	  && traits_type::compare(end() - __xlen, __x.data(), __xlen) == 0;
        }
  
        constexpr bool
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/system_error gcc-10.4.0/libstdc++-v3/include/std/system_error
*** gcc-10.3.0/libstdc++-v3/include/std/system_error	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/system_error	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 262,268 ****
      operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
      { return (__os << __e.category().name() << ':' << __e.value()); }
  
!   // @}
  
    error_condition make_error_condition(errc) noexcept;
  
--- 262,268 ----
      operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
      { return (__os << __e.category().name() << ':' << __e.value()); }
  
!   /// @}
  
    error_condition make_error_condition(errc) noexcept;
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/thread gcc-10.4.0/libstdc++-v3/include/std/thread
*** gcc-10.3.0/libstdc++-v3/include/std/thread	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/thread	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 428,434 ****
        }
    }
  
!   // @} group threads
  
  #ifdef __cpp_lib_jthread
  
--- 428,434 ----
        }
    }
  
!   /// @} group threads
  
  #ifdef __cpp_lib_jthread
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/tuple gcc-10.4.0/libstdc++-v3/include/std/tuple
*** gcc-10.3.0/libstdc++-v3/include/std/tuple	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/tuple	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 90,115 ****
--- 90,121 ----
          constexpr _Head_base(_UHead&& __h)
  	: _Head(std::forward<_UHead>(__h)) { }
  
+       _GLIBCXX20_CONSTEXPR
        _Head_base(allocator_arg_t, __uses_alloc0)
        : _Head() { }
  
        template<typename _Alloc>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
  	: _Head(allocator_arg, *__a._M_a) { }
  
        template<typename _Alloc>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
  	: _Head(*__a._M_a) { }
  
        template<typename _UHead>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(__uses_alloc0, _UHead&& __uhead)
  	: _Head(std::forward<_UHead>(__uhead)) { }
  
        template<typename _Alloc, typename _UHead>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
  	: _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { }
  
        template<typename _Alloc, typename _UHead>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
  	: _Head(std::forward<_UHead>(__uhead), *__a._M_a) { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 141,150 ****
--- 147,158 ----
        : _M_head_impl() { }
  
        template<typename _Alloc>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a)
  	: _M_head_impl(allocator_arg, *__a._M_a) { }
  
        template<typename _Alloc>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a)
  	: _M_head_impl(*__a._M_a) { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 154,164 ****
--- 162,174 ----
  	: _M_head_impl(std::forward<_UHead>(__uhead)) { }
  
        template<typename _Alloc, typename _UHead>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead)
  	: _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead))
  	{ }
  
        template<typename _Alloc, typename _UHead>
+ 	_GLIBCXX20_CONSTEXPR
  	_Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead)
  	: _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 255,260 ****
--- 265,271 ----
            _Base(__tag, __use_alloc<_Head>(__a)) { }
  
        template<typename _Alloc>
+ 	_GLIBCXX20_CONSTEXPR
  	_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
  		    const _Head& __head, const _Tail&... __tail)
  	: _Inherited(__tag, __a, __tail...),
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 389,394 ****
--- 400,406 ----
  	: _Base(__tag, __use_alloc<_Head>(__a)) { }
  
        template<typename _Alloc>
+ 	_GLIBCXX20_CONSTEXPR
  	_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
  		    const _Head& __head)
  	: _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 872,877 ****
--- 884,890 ----
      class tuple<>
      {
      public:
+       _GLIBCXX20_CONSTEXPR
        void swap(tuple&) noexcept { /* no-op */ }
        // We need the default since we're going to define no-op
        // allocator constructors.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/type_traits gcc-10.4.0/libstdc++-v3/include/std/type_traits
*** gcc-10.3.0/libstdc++-v3/include/std/type_traits	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/type_traits	Tue Jun 28 08:54:31 2022
*************** template <typename _From, typename _To>
*** 3307,3317 ****
    template<typename _Ap, typename _Bp>
      using __common_ref = typename __common_ref_impl<_Ap, _Bp>::type;
  
    // If A and B are both lvalue reference types, ...
    template<typename _Xp, typename _Yp>
!     struct __common_ref_impl<_Xp&, _Yp&,
!       __void_t<__cond_res<__copy_cv<_Xp, _Yp>&, __copy_cv<_Yp, _Xp>&>>>
!     { using type = __cond_res<__copy_cv<_Xp, _Yp>&, __copy_cv<_Yp, _Xp>&>; };
  
    // let C be remove_reference_t<COMMON-REF(X&, Y&)>&&
    template<typename _Xp, typename _Yp>
--- 3307,3323 ----
    template<typename _Ap, typename _Bp>
      using __common_ref = typename __common_ref_impl<_Ap, _Bp>::type;
  
+   // COND-RES(COPYCV(X, Y) &, COPYCV(Y, X) &)
+   template<typename _Xp, typename _Yp>
+     using __condres_cvref
+       = __cond_res<__copy_cv<_Xp, _Yp>&, __copy_cv<_Yp, _Xp>&>;
+ 
    // If A and B are both lvalue reference types, ...
    template<typename _Xp, typename _Yp>
!     struct __common_ref_impl<_Xp&, _Yp&, __void_t<__condres_cvref<_Xp, _Yp>>>
!     : enable_if<is_reference_v<__condres_cvref<_Xp, _Yp>>,
! 		__condres_cvref<_Xp, _Yp>>
!     { };
  
    // let C be remove_reference_t<COMMON-REF(X&, Y&)>&&
    template<typename _Xp, typename _Yp>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/valarray gcc-10.4.0/libstdc++-v3/include/std/valarray
*** gcc-10.3.0/libstdc++-v3/include/std/valarray	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/valarray	Tue Jun 28 08:54:31 2022
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 595,601 ****
        return _M_data[__i];
      }
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 595,601 ----
        return _M_data[__i];
      }
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
*************** _DEFINE_BINARY_OPERATOR(>=, __greater_eq
*** 1211,1218 ****
     */
    template<class _Tp>
      inline _Tp*
!     begin(valarray<_Tp>& __va)
!     { return std::__addressof(__va[0]); }
  
    /**
     *  @brief  Return an iterator pointing to the first element of
--- 1211,1218 ----
     */
    template<class _Tp>
      inline _Tp*
!     begin(valarray<_Tp>& __va) noexcept
!     { return __va.size() ? std::__addressof(__va[0]) : nullptr; }
  
    /**
     *  @brief  Return an iterator pointing to the first element of
*************** _DEFINE_BINARY_OPERATOR(>=, __greater_eq
*** 1221,1228 ****
     */
    template<class _Tp>
      inline const _Tp*
!     begin(const valarray<_Tp>& __va)
!     { return std::__addressof(__va[0]); }
  
    /**
     *  @brief  Return an iterator pointing to one past the last element of
--- 1221,1228 ----
     */
    template<class _Tp>
      inline const _Tp*
!     begin(const valarray<_Tp>& __va) noexcept
!     { return __va.size() ? std::__addressof(__va[0]) : nullptr; }
  
    /**
     *  @brief  Return an iterator pointing to one past the last element of
*************** _DEFINE_BINARY_OPERATOR(>=, __greater_eq
*** 1231,1238 ****
     */
    template<class _Tp>
      inline _Tp*
!     end(valarray<_Tp>& __va)
!     { return std::__addressof(__va[0]) + __va.size(); }
  
    /**
     *  @brief  Return an iterator pointing to one past the last element of
--- 1231,1243 ----
     */
    template<class _Tp>
      inline _Tp*
!     end(valarray<_Tp>& __va) noexcept
!     {
!       if (auto __n = __va.size())
! 	return std::__addressof(__va[0]) + __n;
!       else
! 	return nullptr;
!     }
  
    /**
     *  @brief  Return an iterator pointing to one past the last element of
*************** _DEFINE_BINARY_OPERATOR(>=, __greater_eq
*** 1241,1251 ****
     */
    template<class _Tp>
      inline const _Tp*
!     end(const valarray<_Tp>& __va)
!     { return std::__addressof(__va[0]) + __va.size(); }
  #endif // C++11
  
!   // @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
--- 1246,1261 ----
     */
    template<class _Tp>
      inline const _Tp*
!     end(const valarray<_Tp>& __va) noexcept
!     {
!       if (auto __n = __va.size())
! 	return std::__addressof(__va[0]) + __n;
!       else
! 	return nullptr;
!     }
  #endif // C++11
  
!   /// @} group numeric_arrays
  
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/variant gcc-10.4.0/libstdc++-v3/include/std/variant
*** gcc-10.3.0/libstdc++-v3/include/std/variant	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/variant	Tue Jun 28 08:54:31 2022
***************
*** 23,29 ****
  // <http://www.gnu.org/licenses/>.
  
  /** @file variant
!  *  This is the <variant> C++ Library header.
   */
  
  #ifndef _GLIBCXX_VARIANT
--- 23,29 ----
  // <http://www.gnu.org/licenses/>.
  
  /** @file variant
!  *  This is the `<variant>` C++ Library header.
   */
  
  #ifndef _GLIBCXX_VARIANT
*************** namespace __variant
*** 1053,1058 ****
--- 1053,1066 ----
  			      std::index_sequence<__indices...>>
      : _Base_dedup<__indices, __poison_hash<remove_const_t<_Types>>>... { };
  
+   template<size_t _Np, typename _Variant>
+     using __get_t = decltype(std::get<_Np>(std::declval<_Variant>()));
+ 
+   // Return type of std::visit.
+   template<typename _Visitor, typename... _Variants>
+     using __visit_result_t
+       = invoke_result_t<_Visitor, __get_t<0, _Variants>...>;
+ 
  } // namespace __variant
  } // namespace __detail
  
*************** namespace __variant
*** 1238,1244 ****
  #endif
  
    template<typename _Visitor, typename... _Variants>
!     constexpr decltype(auto) visit(_Visitor&&, _Variants&&...);
  
    template<typename... _Types>
      inline enable_if_t<(is_move_constructible_v<_Types> && ...)
--- 1246,1253 ----
  #endif
  
    template<typename _Visitor, typename... _Variants>
!     constexpr __detail::__variant::__visit_result_t<_Visitor, _Variants...>
!     visit(_Visitor&&, _Variants&&...);
  
    template<typename... _Types>
      inline enable_if_t<(is_move_constructible_v<_Types> && ...)
*************** namespace __variant
*** 1704,1717 ****
      }
  
    template<typename _Visitor, typename... _Variants>
!     constexpr decltype(auto)
      visit(_Visitor&& __visitor, _Variants&&... __variants)
      {
        if ((__variants.valueless_by_exception() || ...))
  	__throw_bad_variant_access("std::visit: variant is valueless");
  
!       using _Result_type = std::invoke_result_t<_Visitor,
! 	decltype(std::get<0>(std::declval<_Variants>()))...>;
  
        using _Tag = __detail::__variant::__deduce_visit_result<_Result_type>;
  
--- 1713,1726 ----
      }
  
    template<typename _Visitor, typename... _Variants>
!     constexpr __detail::__variant::__visit_result_t<_Visitor, _Variants...>
      visit(_Visitor&& __visitor, _Variants&&... __variants)
      {
        if ((__variants.valueless_by_exception() || ...))
  	__throw_bad_variant_access("std::visit: variant is valueless");
  
!       using _Result_type
! 	= __detail::__variant::__visit_result_t<_Visitor, _Variants...>;
  
        using _Tag = __detail::__variant::__deduce_visit_result<_Result_type>;
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/std/version gcc-10.4.0/libstdc++-v3/include/std/version
*** gcc-10.3.0/libstdc++-v3/include/std/version	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/std/version	Tue Jun 28 08:54:31 2022
***************
*** 131,136 ****
--- 131,137 ----
  #define __cpp_lib_clamp 201603
  #if __cplusplus == 201703L // N.B. updated value in C++20
  # define __cpp_lib_constexpr_char_traits 201611L
+ # define __cpp_lib_constexpr_string 201611L
  #endif
  #define __cpp_lib_enable_shared_from_this 201603
  #define __cpp_lib_execution 201902L // FIXME: should be 201603L
***************
*** 200,212 ****
  // FIXME: #define __cpp_lib_execution 201902L
  #define __cpp_lib_integer_comparison_functions 202002L
  #define __cpp_lib_constexpr_algorithms 201806L
! #define __cpp_lib_constexpr_char_traits 201811L
  #define __cpp_lib_constexpr_complex 201711L
  #define __cpp_lib_constexpr_dynamic_alloc 201907L
  #define __cpp_lib_constexpr_functional 201907L
  #define __cpp_lib_constexpr_iterator 201811L
  #define __cpp_lib_constexpr_memory 201811L
  #define __cpp_lib_constexpr_numeric 201911L
  #define __cpp_lib_constexpr_string_view 201811L
  #define __cpp_lib_constexpr_tuple 201811L
  #define __cpp_lib_constexpr_utility 201811L
--- 201,218 ----
  // FIXME: #define __cpp_lib_execution 201902L
  #define __cpp_lib_integer_comparison_functions 202002L
  #define __cpp_lib_constexpr_algorithms 201806L
! #ifdef __cpp_lib_is_constant_evaluated
! # define __cpp_lib_constexpr_char_traits 201811L
! #endif
  #define __cpp_lib_constexpr_complex 201711L
  #define __cpp_lib_constexpr_dynamic_alloc 201907L
  #define __cpp_lib_constexpr_functional 201907L
  #define __cpp_lib_constexpr_iterator 201811L
  #define __cpp_lib_constexpr_memory 201811L
  #define __cpp_lib_constexpr_numeric 201911L
+ #ifdef __cpp_lib_is_constant_evaluated
+ # define __cpp_lib_constexpr_string 201811L
+ #endif
  #define __cpp_lib_constexpr_string_view 201811L
  #define __cpp_lib_constexpr_tuple 201811L
  #define __cpp_lib_constexpr_utility 201811L
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/tr1/cmath gcc-10.4.0/libstdc++-v3/include/tr1/cmath
*** gcc-10.3.0/libstdc++-v3/include/tr1/cmath	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/tr1/cmath	Tue Jun 28 08:54:31 2022
*************** namespace tr1
*** 1057,1063 ****
  
  #endif // __cplusplus < 201103L
  
!   // @}
  
  #endif /* _GLIBCXX_USE_C99_MATH_TR1 */
  
--- 1057,1063 ----
  
  #endif // __cplusplus < 201103L
  
!   /// @}
  
  #endif /* _GLIBCXX_USE_C99_MATH_TR1 */
  
*************** namespace tr1
*** 1618,1624 ****
        return __detail::__sph_neumann<__type>(__n, __x);
      }
  
!   // @} tr1_math_spec_func
  
  } // namespace tr1
  
--- 1618,1624 ----
        return __detail::__sph_neumann<__type>(__n, __x);
      }
  
!   /// @} tr1_math_spec_func
  
  } // namespace tr1
  
*************** namespace tr1
*** 1698,1704 ****
        return __detail::__hyperg<__type>(__a, __b, __c, __x);
      }
  
!   // @} tr1_math_spec_func
  
  } // namespace tr1
  
--- 1698,1704 ----
        return __detail::__hyperg<__type>(__a, __b, __c, __x);
      }
  
!   /// @} tr1_math_spec_func
  
  } // namespace tr1
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/tr1/complex gcc-10.4.0/libstdc++-v3/include/tr1/complex
*** gcc-10.3.0/libstdc++-v3/include/tr1/complex	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/tr1/complex	Tue Jun 28 08:54:31 2022
*************** namespace tr1
*** 411,417 ****
      pow(const std::complex<_Tp>& __x, const std::complex<_Tp>& __y)
      { return std::pow(__x, __y); }
  
! // @} group complex_numbers
  }
  
  _GLIBCXX_END_NAMESPACE_VERSION
--- 411,417 ----
      pow(const std::complex<_Tp>& __x, const std::complex<_Tp>& __y)
      { return std::pow(__x, __y); }
  
! /// @} group complex_numbers
  }
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/tr1/random.h gcc-10.4.0/libstdc++-v3/include/tr1/random.h
*** gcc-10.3.0/libstdc++-v3/include/tr1/random.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/tr1/random.h	Tue Jun 28 08:54:31 2022
*************** namespace tr1
*** 1543,1549 ****
  #endif
    };
  
!   /* @} */ // group tr1_random_generators
  
    /**
     * @addtogroup tr1_random_distributions Random Number Distributions
--- 1543,1549 ----
  #endif
    };
  
!   /// @} group tr1_random_generators
  
    /**
     * @addtogroup tr1_random_distributions Random Number Distributions
*************** namespace tr1
*** 2046,2052 ****
        bool      _M_easy;
      };
  
!   /* @} */ // group tr1_random_distributions_discrete
  
    /**
     * @addtogroup tr1_random_distributions_continuous Continuous Distributions
--- 2046,2052 ----
        bool      _M_easy;
      };
  
!   /// @} group tr1_random_distributions_discrete
  
    /**
     * @addtogroup tr1_random_distributions_continuous Continuous Distributions
*************** namespace tr1
*** 2403,2411 ****
        result_type _M_l_d;
      };
  
!   /* @} */ // group tr1_random_distributions_continuous
!   /* @} */ // group tr1_random_distributions
!   /* @} */ // group tr1_random
  }
  
  _GLIBCXX_END_NAMESPACE_VERSION
--- 2403,2411 ----
        result_type _M_l_d;
      };
  
!   /// @} group tr1_random_distributions_continuous
!   /// @} group tr1_random_distributions
!   /// @} group tr1_random
  }
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/tr1/regex gcc-10.4.0/libstdc++-v3/include/tr1/regex
*** gcc-10.3.0/libstdc++-v3/include/tr1/regex	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/tr1/regex	Tue Jun 28 08:54:31 2022
*************** namespace tr1
*** 53,59 ****
   * @defgroup tr1_regex Regular Expressions
   * A facility for performing regular expression pattern matching.
   */
!  //@{
  
  /** @namespace std::regex_constants
   *  @brief ISO C++ 0x entities sub namespace for regex.
--- 53,59 ----
   * @defgroup tr1_regex Regular Expressions
   * A facility for performing regular expression pattern matching.
   */
!  ///@{
  
  /** @namespace std::regex_constants
   *  @brief ISO C++ 0x entities sub namespace for regex.
*************** namespace regex_constants
*** 63,69 ****
    /**
     * @name 5.1 Regular Expression Syntax Options
     */
!   //@{
    enum __syntax_option
      {
        _S_icase,
--- 63,69 ----
    /**
     * @name 5.1 Regular Expression Syntax Options
     */
!   ///@{
    enum __syntax_option
      {
        _S_icase,
*************** namespace regex_constants
*** 174,180 ****
     */
    static const syntax_option_type egrep      = 1 << _S_egrep;
  
!   //@}
  
    /**
     * @name 5.2 Matching Rules
--- 174,180 ----
     */
    static const syntax_option_type egrep      = 1 << _S_egrep;
  
!   ///@}
  
    /**
     * @name 5.2 Matching Rules
*************** namespace regex_constants
*** 185,191 ****
     * below for any bitmask elements set.
     *
     */
!   //@{
  
    enum __match_flag
      {
--- 185,191 ----
     * below for any bitmask elements set.
     *
     */
!   ///@{
  
    enum __match_flag
      {
*************** namespace regex_constants
*** 315,326 ****
     */
    static const match_flag_type format_first_only = 1 << _S_first_only;
  
!   //@}
  
    /**
     * @name 5.3 Error Types
     */
!   //@{
   
    enum error_type
      {
--- 315,326 ----
     */
    static const match_flag_type format_first_only = 1 << _S_first_only;
  
!   ///@}
  
    /**
     * @name 5.3 Error Types
     */
!   ///@{
   
    enum error_type
      {
*************** namespace regex_constants
*** 396,402 ****
     */
    static const error_type error_stack(_S_error_stack);
  
!   //@}
  }
  
    // [7.8] Class regex_error
--- 396,402 ----
     */
    static const error_type error_stack(_S_error_stack);
  
!   ///@}
  }
  
    // [7.8] Class regex_error
*************** namespace regex_constants
*** 735,741 ****
         * @name Constants
         * tr1 [7.8.1] std [28.8.1]
         */
!       //@{
        static const regex_constants::syntax_option_type icase
          = regex_constants::icase;
        static const regex_constants::syntax_option_type nosubs
--- 735,741 ----
         * @name Constants
         * tr1 [7.8.1] std [28.8.1]
         */
!       ///@{
        static const regex_constants::syntax_option_type icase
          = regex_constants::icase;
        static const regex_constants::syntax_option_type nosubs
*************** namespace regex_constants
*** 756,762 ****
          = regex_constants::grep;
        static const regex_constants::syntax_option_type egrep
          = regex_constants::egrep;
!       //@}
  
        // [7.8.2] construct/copy/destroy
        /**
--- 756,762 ----
          = regex_constants::grep;
        static const regex_constants::syntax_option_type egrep
          = regex_constants::egrep;
!       ///@}
  
        // [7.8.2] construct/copy/destroy
        /**
*************** namespace regex_constants
*** 1787,1793 ****
        /**
         * @name 10.? Public Types
         */
!       //@{
        typedef sub_match<_Bi_iter>                             value_type;
        typedef typename _Base_type::const_reference            const_reference;
        typedef const_reference                                 reference;
--- 1787,1793 ----
        /**
         * @name 10.? Public Types
         */
!       ///@{
        typedef sub_match<_Bi_iter>                             value_type;
        typedef typename _Base_type::const_reference            const_reference;
        typedef const_reference                                 reference;
*************** namespace regex_constants
*** 1799,1811 ****
        typedef _Allocator                                      allocator_type;
        typedef typename iterator_traits<_Bi_iter>::value_type  char_type;
        typedef basic_string<char_type>                         string_type;
!       //@}
    
      public:
        /**
         * @name 10.1 Construction, Copying, and Destruction
         */
!       //@{
  
        /**
         * @brief Constructs a default %match_results container.
--- 1799,1811 ----
        typedef _Allocator                                      allocator_type;
        typedef typename iterator_traits<_Bi_iter>::value_type  char_type;
        typedef basic_string<char_type>                         string_type;
!       ///@}
    
      public:
        /**
         * @name 10.1 Construction, Copying, and Destruction
         */
!       ///@{
  
        /**
         * @brief Constructs a default %match_results container.
*************** namespace regex_constants
*** 1841,1852 ****
        ~match_results()
        { }
        
!       //@}
  
        /**
         * @name 10.2 Size
         */
!       //@{
  
        /**
         * @brief Gets the number of matches and submatches.
--- 1841,1852 ----
        ~match_results()
        { }
        
!       ///@}
  
        /**
         * @name 10.2 Size
         */
!       ///@{
  
        /**
         * @brief Gets the number of matches and submatches.
*************** namespace regex_constants
*** 1874,1885 ****
        empty() const
        { return size() == 0; }
        
!       //@}
  
        /**
         * @name 10.3 Element Access
         */
!       //@{
  
        /**
         * @brief Gets the length of the indicated submatch.
--- 1874,1885 ----
        empty() const
        { return size() == 0; }
        
!       ///@}
  
        /**
         * @name 10.3 Element Access
         */
!       ///@{
  
        /**
         * @brief Gets the length of the indicated submatch.
*************** namespace regex_constants
*** 1988,1994 ****
        { return _Base_type::end(); }
  #endif
  
!       //@}
  
        /**
         * @name 10.4 Formatting
--- 1988,1994 ----
        { return _Base_type::end(); }
  #endif
  
!       ///@}
  
        /**
         * @name 10.4 Formatting
*************** namespace regex_constants
*** 1998,2004 ****
         * and escape sequences accepted by these functions are
         * determined by their @p flags parameter as documented above.
         */
!        //@{
  
        /**
         * @todo Implement this function.
--- 1998,2004 ----
         * and escape sequences accepted by these functions are
         * determined by their @p flags parameter as documented above.
         */
!        ///@{
  
        /**
         * @todo Implement this function.
*************** namespace regex_constants
*** 2017,2028 ****
  	     regex_constants::match_flag_type __flags
  	     = regex_constants::format_default) const;
  
!       //@} 
  
        /**
         * @name 10.5 Allocator
         */
!       //@{ 
  
        /**
         * @brief Gets a copy of the allocator.
--- 2017,2028 ----
  	     regex_constants::match_flag_type __flags
  	     = regex_constants::format_default) const;
  
!       ///@}
  
        /**
         * @name 10.5 Allocator
         */
!       ///@{
  
        /**
         * @brief Gets a copy of the allocator.
*************** namespace regex_constants
*** 2031,2042 ****
        //get_allocator() const;
        using _Base_type::get_allocator;
        
!       //@} 
  
        /**
         * @name 10.6 Swap
         */
!        //@{ 
  
        /**
         * @brief Swaps the contents of two match_results.
--- 2031,2042 ----
        //get_allocator() const;
        using _Base_type::get_allocator;
        
!       ///@}
  
        /**
         * @name 10.6 Swap
         */
!        ///@{
  
        /**
         * @brief Swaps the contents of two match_results.
*************** namespace regex_constants
*** 2049,2055 ****
  	std::swap(_M_prefix,  __that._M_prefix);
  	std::swap(_M_suffix,  __that._M_suffix);
        }
!       //@} 
        
      private:
        bool       _M_matched;
--- 2049,2055 ----
  	std::swap(_M_prefix,  __that._M_prefix);
  	std::swap(_M_suffix,  __that._M_suffix);
        }
!       ///@}
        
      private:
        bool       _M_matched;
*************** namespace regex_constants
*** 2105,2111 ****
    /**
     * @name Matching, Searching, and Replacing
     */
!   //@{
  
    /**
     * @brief Determines if there is a match between the regular expression @p e
--- 2105,2111 ----
    /**
     * @name Matching, Searching, and Replacing
     */
!   ///@{
  
    /**
     * @brief Determines if there is a match between the regular expression @p e
*************** namespace regex_constants
*** 2432,2438 ****
        return __result;
      }
  
!   //@}
  
    // tr1 [7.12.1] std [28.12] Class template regex_iterator
    /**
--- 2432,2438 ----
        return __result;
      }
  
!   ///@}
  
    // tr1 [7.12.1] std [28.12] Class template regex_iterator
    /**
*************** namespace regex_constants
*** 2718,2724 ****
    typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
  #endif
    
!   //@}
  }
  
  _GLIBCXX_END_NAMESPACE_VERSION
--- 2718,2724 ----
    typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator;
  #endif
    
!   ///@}
  }
  
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-10.3.0/libstdc++-v3/include/tr2/dynamic_bitset gcc-10.4.0/libstdc++-v3/include/tr2/dynamic_bitset
*** gcc-10.3.0/libstdc++-v3/include/tr2/dynamic_bitset	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/include/tr2/dynamic_bitset	Tue Jun 28 08:54:32 2022
*************** namespace tr2
*** 748,754 ****
  	}
  
        // 23.3.5.2 dynamic_bitset operations:
!       //@{
        /**
         *  @brief  Operations on dynamic_bitsets.
         *  @param  __rhs  A same-sized dynamic_bitset.
--- 748,754 ----
  	}
  
        // 23.3.5.2 dynamic_bitset operations:
!       ///@{
        /**
         *  @brief  Operations on dynamic_bitsets.
         *  @param  __rhs  A same-sized dynamic_bitset.
*************** namespace tr2
*** 789,797 ****
  	this->_M_do_dif(__rhs);
  	return *this;
        }
!       //@}
  
!       //@{
        /**
         *  @brief  Operations on dynamic_bitsets.
         *  @param  __pos The number of places to shift.
--- 789,797 ----
  	this->_M_do_dif(__rhs);
  	return *this;
        }
!       ///@}
  
!       ///@{
        /**
         *  @brief  Operations on dynamic_bitsets.
         *  @param  __pos The number of places to shift.
*************** namespace tr2
*** 823,829 ****
  	  this->_M_do_reset();
  	return *this;
        }
!       //@}
  
        // Set, reset, and flip.
        /**
--- 823,829 ----
  	  this->_M_do_reset();
  	return *this;
        }
!       ///@}
  
        // Set, reset, and flip.
        /**
*************** namespace tr2
*** 905,911 ****
        operator~() const
        { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); }
  
!       //@{
        /**
         *  @brief  Array-indexing support.
         *  @param  __pos  Index into the %dynamic_bitset.
--- 905,911 ----
        operator~() const
        { return dynamic_bitset<_WordT, _Alloc>(*this).flip(); }
  
!       ///@{
        /**
         *  @brief  Array-indexing support.
         *  @param  __pos  Index into the %dynamic_bitset.
*************** namespace tr2
*** 921,927 ****
        const_reference
        operator[](size_type __pos) const
        { return _M_unchecked_test(__pos); }
!       //@}
  
        /**
         *  @brief Returns a numerical interpretation of the %dynamic_bitset.
--- 921,927 ----
        const_reference
        operator[](size_type __pos) const
        { return _M_unchecked_test(__pos); }
!       ///@}
  
        /**
         *  @brief Returns a numerical interpretation of the %dynamic_bitset.
*************** namespace tr2
*** 1052,1058 ****
        none() const
        { return !this->_M_is_any(); }
  
!       //@{
        /// Self-explanatory.
        dynamic_bitset
        operator<<(size_type __pos) const
--- 1052,1058 ----
        none() const
        { return !this->_M_is_any(); }
  
!       ///@{
        /// Self-explanatory.
        dynamic_bitset
        operator<<(size_type __pos) const
*************** namespace tr2
*** 1061,1067 ****
        dynamic_bitset
        operator>>(size_type __pos) const
        { return dynamic_bitset(*this) >>= __pos; }
!       //@}
  
        /**
         *  @brief  Finds the index of the first "on" bit.
--- 1061,1067 ----
        dynamic_bitset
        operator>>(size_type __pos) const
        { return dynamic_bitset(*this) >>= __pos; }
!       ///@}
  
        /**
         *  @brief  Finds the index of the first "on" bit.
*************** namespace tr2
*** 1115,1121 ****
        }
  
  
!   //@{
    /// These comparisons for equality/inequality are, well, @e bitwise.
  
    template<typename _WordT, typename _Alloc>
--- 1115,1121 ----
        }
  
  
!   ///@{
    /// These comparisons for equality/inequality are, well, @e bitwise.
  
    template<typename _WordT, typename _Alloc>
*************** namespace tr2
*** 1141,1150 ****
      operator>=(const dynamic_bitset<_WordT, _Alloc>& __lhs,
  	       const dynamic_bitset<_WordT, _Alloc>& __rhs)
      { return !(__lhs < __rhs); }
!   //@}
  
    // 23.3.5.3 bitset operations:
!   //@{
    /**
     *  @brief  Global bitwise operations on bitsets.
     *  @param  __x  A bitset.
--- 1141,1150 ----
      operator>=(const dynamic_bitset<_WordT, _Alloc>& __lhs,
  	       const dynamic_bitset<_WordT, _Alloc>& __rhs)
      { return !(__lhs < __rhs); }
!   ///@}
  
    // 23.3.5.3 bitset operations:
!   ///@{
    /**
     *  @brief  Global bitwise operations on bitsets.
     *  @param  __x  A bitset.
*************** namespace tr2
*** 1192,1198 ****
        __result -= __y;
        return __result;
      }
!   //@}
  
    /// Stream output operator for dynamic_bitset.
    template <typename _CharT, typename _Traits,
--- 1192,1198 ----
        __result -= __y;
        return __result;
      }
!   ///@}
  
    /// Stream output operator for dynamic_bitset.
    template <typename _CharT, typename _Traits,
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/Makefile.am gcc-10.4.0/libstdc++-v3/libsupc++/Makefile.am
*** gcc-10.3.0/libstdc++-v3/libsupc++/Makefile.am	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/Makefile.am	Tue Jun 28 08:54:32 2022
*************** sources = \
*** 48,53 ****
--- 48,54 ----
  	array_type_info.cc \
  	atexit_arm.cc \
  	atexit_thread.cc \
+ 	atomicity.cc \
  	bad_alloc.cc \
  	bad_array_length.cc \
  	bad_array_new.cc \
*************** cp-demangle.lo: cp-demangle.c
*** 127,132 ****
--- 128,136 ----
  cp-demangle.o: cp-demangle.c
  	$(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
  
+ atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
+ atomicity.cc: ${atomicity_file}
+ 	$(LN_S) ${atomicity_file} ./atomicity.cc || true
  
  # Use special rules for the C++17 sources so that the proper flags are passed.
  new_opa.lo: new_opa.cc
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/Makefile.in gcc-10.4.0/libstdc++-v3/libsupc++/Makefile.in
*** gcc-10.3.0/libstdc++-v3/libsupc++/Makefile.in	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/Makefile.in	Tue Jun 28 08:54:32 2022
*************** am__installdirs = "$(DESTDIR)$(toolexecl
*** 153,165 ****
  LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
  libsupc___la_LIBADD =
  am__objects_1 = array_type_info.lo atexit_arm.lo atexit_thread.lo \
! 	bad_alloc.lo bad_array_length.lo bad_array_new.lo bad_cast.lo \
! 	bad_typeid.lo class_type_info.lo del_op.lo del_ops.lo \
! 	del_opnt.lo del_opv.lo del_opvs.lo del_opvnt.lo dyncast.lo \
! 	eh_alloc.lo eh_arm.lo eh_aux_runtime.lo eh_call.lo eh_catch.lo \
! 	eh_exception.lo eh_globals.lo eh_personality.lo eh_ptr.lo \
! 	eh_term_handler.lo eh_terminate.lo eh_tm.lo eh_throw.lo \
! 	eh_type.lo eh_unex_handler.lo enum_type_info.lo \
  	function_type_info.lo fundamental_type_info.lo guard.lo \
  	guard_error.lo hash_bytes.lo nested_exception.lo \
  	new_handler.lo new_op.lo new_opnt.lo new_opv.lo new_opvnt.lo \
--- 153,165 ----
  LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
  libsupc___la_LIBADD =
  am__objects_1 = array_type_info.lo atexit_arm.lo atexit_thread.lo \
! 	atomicity.lo bad_alloc.lo bad_array_length.lo bad_array_new.lo \
! 	bad_cast.lo bad_typeid.lo class_type_info.lo del_op.lo \
! 	del_ops.lo del_opnt.lo del_opv.lo del_opvs.lo del_opvnt.lo \
! 	dyncast.lo eh_alloc.lo eh_arm.lo eh_aux_runtime.lo eh_call.lo \
! 	eh_catch.lo eh_exception.lo eh_globals.lo eh_personality.lo \
! 	eh_ptr.lo eh_term_handler.lo eh_terminate.lo eh_tm.lo \
! 	eh_throw.lo eh_type.lo eh_unex_handler.lo enum_type_info.lo \
  	function_type_info.lo fundamental_type_info.lo guard.lo \
  	guard_error.lo hash_bytes.lo nested_exception.lo \
  	new_handler.lo new_op.lo new_opnt.lo new_opv.lo new_opvnt.lo \
*************** sources = \
*** 498,503 ****
--- 498,504 ----
  	array_type_info.cc \
  	atexit_arm.cc \
  	atexit_thread.cc \
+ 	atomicity.cc \
  	bad_alloc.cc \
  	bad_array_length.cc \
  	bad_array_new.cc \
*************** sources = \
*** 564,569 ****
--- 565,571 ----
  
  libsupc___la_SOURCES = $(sources) $(c_sources) $(vtv_sources)
  libsupc__convenience_la_SOURCES = $(sources) $(c_sources) $(vtv_sources)
+ atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
  
  # AM_CXXFLAGS needs to be in each subdirectory so that it can be
  # modified in a per-library or per-sub-library way.  Need to manually
*************** cp-demangle.lo: cp-demangle.c
*** 955,960 ****
--- 957,964 ----
  	$(LTCOMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
  cp-demangle.o: cp-demangle.c
  	$(C_COMPILE) -DIN_GLIBCPP_V3 -Wno-error -c $<
+ atomicity.cc: ${atomicity_file}
+ 	$(LN_S) ${atomicity_file} ./atomicity.cc || true
  
  # Use special rules for the C++17 sources so that the proper flags are passed.
  new_opa.lo: new_opa.cc
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/atomic_lockfree_defines.h gcc-10.4.0/libstdc++-v3/libsupc++/atomic_lockfree_defines.h
*** gcc-10.3.0/libstdc++-v3/libsupc++/atomic_lockfree_defines.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/atomic_lockfree_defines.h	Tue Jun 28 08:54:32 2022
***************
*** 61,66 ****
  #define ATOMIC_POINTER_LOCK_FREE	__GCC_ATOMIC_POINTER_LOCK_FREE
  #endif
  
! // @} group atomics
  
  #endif
--- 61,66 ----
  #define ATOMIC_POINTER_LOCK_FREE	__GCC_ATOMIC_POINTER_LOCK_FREE
  #endif
  
! /// @} group atomics
  
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/compare gcc-10.4.0/libstdc++-v3/libsupc++/compare
*** gcc-10.3.0/libstdc++-v3/libsupc++/compare	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/compare	Tue Jun 28 08:54:32 2022
*************** namespace std
*** 600,605 ****
--- 600,608 ----
  	  // FIXME: || floating_point<remove_reference_t<_Tp>>
  	  || __cmp3way<strong_ordering, _Tp, _Up>;
  
+     template<typename _Tp, typename _Up>
+       concept __decayed_same_as = same_as<decay_t<_Tp>, decay_t<_Up>>;
+ 
      class _Strong_order
      {
        template<typename _Tp, typename _Up>
*************** namespace std
*** 620,633 ****
        friend class _Strong_fallback;
  
      public:
!       template<typename _Tp, typename _Up>
  	requires __strongly_ordered<_Tp, _Up>
  	constexpr strong_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
- 	  static_assert(same_as<decay_t<_Tp>, decay_t<_Up>>);
- 
  	  /* FIXME:
  	  if constexpr (floating_point<decay_t<_Tp>>)
  	    return __cmp_cust::__fp_strong_order(__e, __f);
--- 623,634 ----
        friend class _Strong_fallback;
  
      public:
!       template<typename _Tp, __decayed_same_as<_Tp> _Up>
  	requires __strongly_ordered<_Tp, _Up>
  	constexpr strong_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
  	  /* FIXME:
  	  if constexpr (floating_point<decay_t<_Tp>>)
  	    return __cmp_cust::__fp_strong_order(__e, __f);
*************** namespace std
*** 669,682 ****
        friend class _Weak_fallback;
  
      public:
!       template<typename _Tp, typename _Up>
  	requires __weakly_ordered<_Tp, _Up>
  	constexpr weak_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
- 	  static_assert(same_as<decay_t<_Tp>, decay_t<_Up>>);
- 
  	  if constexpr (floating_point<decay_t<_Tp>>)
  	    return __cmp_cust::__fp_weak_ordering(__e, __f);
  	  else if constexpr (__adl_weak<_Tp, _Up>)
--- 670,681 ----
        friend class _Weak_fallback;
  
      public:
!       template<typename _Tp, __decayed_same_as<_Tp> _Up>
  	requires __weakly_ordered<_Tp, _Up>
  	constexpr weak_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
  	  if constexpr (floating_point<decay_t<_Tp>>)
  	    return __cmp_cust::__fp_weak_ordering(__e, __f);
  	  else if constexpr (__adl_weak<_Tp, _Up>)
*************** namespace std
*** 716,729 ****
        friend class _Partial_fallback;
  
      public:
!       template<typename _Tp, typename _Up>
  	requires __partially_ordered<_Tp, _Up>
  	constexpr partial_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
- 	  static_assert(same_as<decay_t<_Tp>, decay_t<_Up>>);
- 
  	  if constexpr (__adl_partial<_Tp, _Up>)
  	    return partial_ordering(partial_order(static_cast<_Tp&&>(__e),
  						  static_cast<_Up&&>(__f)));
--- 715,726 ----
        friend class _Partial_fallback;
  
      public:
!       template<typename _Tp, __decayed_same_as<_Tp> _Up>
  	requires __partially_ordered<_Tp, _Up>
  	constexpr partial_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
  	  if constexpr (__adl_partial<_Tp, _Up>)
  	    return partial_ordering(partial_order(static_cast<_Tp&&>(__e),
  						  static_cast<_Up&&>(__f)));
*************** namespace std
*** 759,776 ****
  	}
  
      public:
!       template<typename _Tp, typename _Up>
  	requires __strongly_ordered<_Tp, _Up> || __op_eq_lt<_Tp, _Up>
! 	constexpr decltype(auto)
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
- 	  static_assert(same_as<decay_t<_Tp>, decay_t<_Up>>);
- 
  	  if constexpr (__strongly_ordered<_Tp, _Up>)
  	    return _Strong_order{}(static_cast<_Tp&&>(__e),
  				   static_cast<_Up&&>(__f));
! 	  else if constexpr (__op_eq_lt<_Tp, _Up>)
  	    return static_cast<_Tp&&>(__e) == static_cast<_Up&&>(__f)
  	      ? strong_ordering::equal
  	      : static_cast<_Tp&&>(__e) < static_cast<_Up&&>(__f)
--- 756,771 ----
  	}
  
      public:
!       template<typename _Tp, __decayed_same_as<_Tp> _Up>
  	requires __strongly_ordered<_Tp, _Up> || __op_eq_lt<_Tp, _Up>
! 	constexpr strong_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
  	  if constexpr (__strongly_ordered<_Tp, _Up>)
  	    return _Strong_order{}(static_cast<_Tp&&>(__e),
  				   static_cast<_Up&&>(__f));
! 	  else // __op_eq_lt<_Tp, _Up>
  	    return static_cast<_Tp&&>(__e) == static_cast<_Up&&>(__f)
  	      ? strong_ordering::equal
  	      : static_cast<_Tp&&>(__e) < static_cast<_Up&&>(__f)
*************** namespace std
*** 793,810 ****
  	}
  
      public:
!       template<typename _Tp, typename _Up>
  	requires __weakly_ordered<_Tp, _Up> || __op_eq_lt<_Tp, _Up>
! 	constexpr decltype(auto)
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
- 	  static_assert(same_as<decay_t<_Tp>, decay_t<_Up>>);
- 
  	  if constexpr (__weakly_ordered<_Tp, _Up>)
  	    return _Weak_order{}(static_cast<_Tp&&>(__e),
  				 static_cast<_Up&&>(__f));
! 	  else if constexpr (__op_eq_lt<_Tp, _Up>)
  	    return static_cast<_Tp&&>(__e) == static_cast<_Up&&>(__f)
  	      ? weak_ordering::equivalent
  	      : static_cast<_Tp&&>(__e) < static_cast<_Up&&>(__f)
--- 788,803 ----
  	}
  
      public:
!       template<typename _Tp, __decayed_same_as<_Tp> _Up>
  	requires __weakly_ordered<_Tp, _Up> || __op_eq_lt<_Tp, _Up>
! 	constexpr weak_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
  	  if constexpr (__weakly_ordered<_Tp, _Up>)
  	    return _Weak_order{}(static_cast<_Tp&&>(__e),
  				 static_cast<_Up&&>(__f));
! 	  else // __op_eq_lt<_Tp, _Up>
  	    return static_cast<_Tp&&>(__e) == static_cast<_Up&&>(__f)
  	      ? weak_ordering::equivalent
  	      : static_cast<_Tp&&>(__e) < static_cast<_Up&&>(__f)
*************** namespace std
*** 813,818 ****
--- 806,821 ----
  	}
      };
  
+     // _GLIBCXX_RESOLVE_LIB_DEFECTS
+     // 3465. compare_partial_order_fallback requires F < E
+     template<typename _Tp, typename _Up>
+       concept __op_eq_lt_lt = __op_eq_lt<_Tp, _Up>
+ 	&& requires(_Tp&& __t, _Up&& __u)
+ 	{
+ 	  { static_cast<_Up&&>(__u) < static_cast<_Tp&&>(__t) }
+ 	    -> convertible_to<bool>;
+ 	};
+ 
      class _Partial_fallback
      {
        template<typename _Tp, typename _Up>
*************** namespace std
*** 827,844 ****
  	}
  
      public:
!       template<typename _Tp, typename _Up>
! 	requires __partially_ordered<_Tp, _Up> || __op_eq_lt<_Tp, _Up>
! 	constexpr decltype(auto)
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
- 	  static_assert(same_as<decay_t<_Tp>, decay_t<_Up>>);
- 
  	  if constexpr (__partially_ordered<_Tp, _Up>)
  	    return _Partial_order{}(static_cast<_Tp&&>(__e),
  				    static_cast<_Up&&>(__f));
! 	  else if constexpr (__op_eq_lt<_Tp, _Up>)
  	    return static_cast<_Tp&&>(__e) == static_cast<_Up&&>(__f)
  	      ? partial_ordering::equivalent
  	      : static_cast<_Tp&&>(__e) < static_cast<_Up&&>(__f)
--- 830,845 ----
  	}
  
      public:
!       template<typename _Tp, __decayed_same_as<_Tp> _Up>
! 	requires __partially_ordered<_Tp, _Up> || __op_eq_lt_lt<_Tp, _Up>
! 	constexpr partial_ordering
  	operator()(_Tp&& __e, _Up&& __f) const
  	noexcept(_S_noexcept<_Tp, _Up>())
  	{
  	  if constexpr (__partially_ordered<_Tp, _Up>)
  	    return _Partial_order{}(static_cast<_Tp&&>(__e),
  				    static_cast<_Up&&>(__f));
! 	  else // __op_eq_lt_lt<_Tp, _Up>
  	    return static_cast<_Tp&&>(__e) == static_cast<_Up&&>(__f)
  	      ? partial_ordering::equivalent
  	      : static_cast<_Tp&&>(__e) < static_cast<_Up&&>(__f)
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/exception gcc-10.4.0/libstdc++-v3/libsupc++/exception
*** gcc-10.3.0/libstdc++-v3/libsupc++/exception	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/exception	Tue Jun 28 08:54:32 2022
*************** namespace std
*** 111,117 ****
    int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
  #endif
  
!   // @} group exceptions
  } // namespace std
  
  namespace __gnu_cxx
--- 111,117 ----
    int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
  #endif
  
!   /// @} group exceptions
  } // namespace std
  
  namespace __gnu_cxx
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/exception.h gcc-10.4.0/libstdc++-v3/libsupc++/exception.h
*** gcc-10.3.0/libstdc++-v3/libsupc++/exception.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/exception.h	Tue Jun 28 08:54:32 2022
*************** namespace std
*** 45,51 ****
     * @defgroup exceptions Exceptions
     * @ingroup diagnostics
     *
!    * Classes and functions for reporting errors via exception classes.
     * @{
     */
  
--- 45,51 ----
     * @defgroup exceptions Exceptions
     * @ingroup diagnostics
     *
!    * Classes and functions for reporting errors via exceptions.
     * @{
     */
  
*************** namespace std
*** 75,80 ****
--- 75,82 ----
      what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
    };
  
+   /// @}
+ 
  } // namespace std
  
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/exception_ptr.h gcc-10.4.0/libstdc++-v3/libsupc++/exception_ptr.h
*** gcc-10.3.0/libstdc++-v3/libsupc++/exception_ptr.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/exception_ptr.h	Tue Jun 28 08:54:32 2022
***************
*** 39,44 ****
--- 39,48 ----
  #include <typeinfo>
  #include <new>
  
+ #if __cplusplus >= 201103L
+ # include <bits/move.h>
+ #endif
+ 
  extern "C++" {
  
  namespace std 
*************** namespace std
*** 185,198 ****
      exception_ptr 
      make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
      {
! #if __cpp_exceptions && __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI
        void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex));
        (void) __cxxabiv1::__cxa_init_primary_exception(
! 	  __e, const_cast<std::type_info*>(&typeid(__ex)),
! 	  __exception_ptr::__dest_thunk<_Ex>);
        try
  	{
!           ::new (__e) _Ex(__ex);
            return exception_ptr(__e);
  	}
        catch(...)
--- 189,204 ----
      exception_ptr 
      make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT
      {
! #if __cpp_exceptions && __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI \
!       && __cplusplus >= 201103L
!       using _Ex2 = typename remove_reference<_Ex>::type;
        void* __e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex));
        (void) __cxxabiv1::__cxa_init_primary_exception(
! 	  __e, const_cast<std::type_info*>(&typeid(_Ex)),
! 	  __exception_ptr::__dest_thunk<_Ex2>);
        try
  	{
! 	  ::new (__e) _Ex2(std::forward<_Ex>(__ex));
            return exception_ptr(__e);
  	}
        catch(...)
*************** namespace std
*** 214,220 ****
  #endif
      }
  
!   // @} group exceptions
  } // namespace std
  
  } // extern "C++"
--- 220,226 ----
  #endif
      }
  
!   /// @} group exceptions
  } // namespace std
  
  } // extern "C++"
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/nested_exception.h gcc-10.4.0/libstdc++-v3/libsupc++/nested_exception.h
*** gcc-10.3.0/libstdc++-v3/libsupc++/nested_exception.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/nested_exception.h	Tue Jun 28 08:54:32 2022
*************** namespace std
*** 159,165 ****
      rethrow_if_nested(const _Ex& __ex)
      { std::__rethrow_if_nested_impl(std::__addressof(__ex)); }
  
!   // @} group exceptions
  } // namespace std
  
  } // extern "C++"
--- 159,165 ----
      rethrow_if_nested(const _Ex& __ex)
      { std::__rethrow_if_nested_impl(std::__addressof(__ex)); }
  
!   /// @} group exceptions
  } // namespace std
  
  } // extern "C++"
diff -Nrcpad gcc-10.3.0/libstdc++-v3/libsupc++/new_opa.cc gcc-10.4.0/libstdc++-v3/libsupc++/new_opa.cc
*** gcc-10.3.0/libstdc++-v3/libsupc++/new_opa.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/libsupc++/new_opa.cc	Tue Jun 28 08:54:32 2022
***************
*** 26,32 ****
  #include <bits/c++config.h>
  #include <stdlib.h>
  #include <stdint.h>
- #include <bits/exception_defines.h>
  #include <bit>
  #include "new"
  
--- 26,31 ----
*************** using std::new_handler;
*** 44,49 ****
--- 43,49 ----
  using std::bad_alloc;
  
  #if ! _GLIBCXX_HOSTED
+ using std::size_t;
  extern "C"
  {
  # if _GLIBCXX_HAVE_ALIGNED_ALLOC
diff -Nrcpad gcc-10.3.0/libstdc++-v3/python/Makefile.am gcc-10.4.0/libstdc++-v3/python/Makefile.am
*** gcc-10.3.0/libstdc++-v3/python/Makefile.am	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/python/Makefile.am	Tue Jun 28 08:54:32 2022
*************** else
*** 29,34 ****
--- 29,40 ----
  pythondir = $(datadir)/gcc-$(gcc_version)/python
  endif
  
+ if GLIBCXX_BUILD_DEBUG
+ debug_gdb_py = YES
+ else
+ debug_gdb_py =
+ endif
+ 
  all-local: gdb.py
  
  nobase_python_DATA = \
*************** gdb.py: hook.in Makefile
*** 44,64 ****
  install-data-local: gdb.py
  	@$(mkdir_p) $(DESTDIR)$(toolexeclibdir)
  ## We want to install gdb.py as SOMETHING-gdb.py.  SOMETHING is the
! ## full name of the final library.  We want to ignore symlinks, the
! ## .la file, and any previous -gdb.py file.  This is inherently
! ## fragile, but there does not seem to be a better option, because
! ## libtool hides the real names from us.
! 	@here=`pwd`; cd $(DESTDIR)$(toolexeclibdir); \
! 	  for file in libstdc++.*; do \
! 	    case $$file in \
! 	      *-gdb.py) ;; \
! 	      *.la) ;; \
! 	      *) if test -h $$file; then \
! 	           continue; \
! 	         fi; \
! 	         libname=$$file;; \
! 	    esac; \
! 	  done; \
! 	cd $$here; \
  	echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
! 	$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py
--- 50,66 ----
  install-data-local: gdb.py
  	@$(mkdir_p) $(DESTDIR)$(toolexeclibdir)
  ## We want to install gdb.py as SOMETHING-gdb.py.  SOMETHING is the
! ## full name of the final library.  We use the libtool .la file to get
! ## the correct name.
! 	@libname=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
! 	          $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \
! 	if [ -z "$$libname" ]; then \
! 	  libname=`sed -ne "/^old_library=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
! 		  $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \
! 	fi; \
  	echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
! 	$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py ; \
! 	if [ -n "$(debug_gdb_py)" ]; then \
! 	  sed "/^libdir = /s;'$$;/debug';" gdb.py > debug-gdb.py ; \
! 	  $(INSTALL_DATA) debug-gdb.py $(DESTDIR)$(toolexeclibdir)/debug/$$libname-gdb.py ; \
! 	fi
diff -Nrcpad gcc-10.3.0/libstdc++-v3/python/Makefile.in gcc-10.4.0/libstdc++-v3/python/Makefile.in
*** gcc-10.3.0/libstdc++-v3/python/Makefile.in	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/python/Makefile.in	Tue Jun 28 08:54:32 2022
*************** WARN_CXXFLAGS = \
*** 398,403 ****
--- 398,405 ----
  AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS)
  @ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc-$(gcc_version)/python
  @ENABLE_PYTHONDIR_TRUE@pythondir = $(prefix)/$(python_mod_dir)
+ @GLIBCXX_BUILD_DEBUG_FALSE@debug_gdb_py = 
+ @GLIBCXX_BUILD_DEBUG_TRUE@debug_gdb_py = YES
  nobase_python_DATA = \
      libstdcxx/v6/printers.py \
      libstdcxx/v6/xmethods.py \
*************** gdb.py: hook.in Makefile
*** 602,621 ****
  
  install-data-local: gdb.py
  	@$(mkdir_p) $(DESTDIR)$(toolexeclibdir)
! 	@here=`pwd`; cd $(DESTDIR)$(toolexeclibdir); \
! 	  for file in libstdc++.*; do \
! 	    case $$file in \
! 	      *-gdb.py) ;; \
! 	      *.la) ;; \
! 	      *) if test -h $$file; then \
! 	           continue; \
! 	         fi; \
! 	         libname=$$file;; \
! 	    esac; \
! 	  done; \
! 	cd $$here; \
  	echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
! 	$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py
  
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
  # Otherwise a system limit (for SysV at least) may be exceeded.
--- 604,621 ----
  
  install-data-local: gdb.py
  	@$(mkdir_p) $(DESTDIR)$(toolexeclibdir)
! 	@libname=`sed -ne "/^library_names=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
! 	          $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \
! 	if [ -z "$$libname" ]; then \
! 	  libname=`sed -ne "/^old_library=/{s/.*='//;s/'$$//;s/ .*//;p;}" \
! 		  $(DESTDIR)$(toolexeclibdir)/libstdc++.la`; \
! 	fi; \
  	echo " $(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py"; \
! 	$(INSTALL_DATA) gdb.py $(DESTDIR)$(toolexeclibdir)/$$libname-gdb.py ; \
! 	if [ -n "$(debug_gdb_py)" ]; then \
! 	  sed "/^libdir = /s;'$$;/debug';" gdb.py > debug-gdb.py ; \
! 	  $(INSTALL_DATA) debug-gdb.py $(DESTDIR)$(toolexeclibdir)/debug/$$libname-gdb.py ; \
! 	fi
  
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
  # Otherwise a system limit (for SysV at least) may be exceeded.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/python/libstdcxx/v6/printers.py gcc-10.4.0/libstdc++-v3/python/libstdcxx/v6/printers.py
*** gcc-10.3.0/libstdc++-v3/python/libstdcxx/v6/printers.py	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/python/libstdcxx/v6/printers.py	Tue Jun 28 08:54:32 2022
***************
*** 18,24 ****
  import gdb
  import itertools
  import re
! import sys
  
  ### Python 2 + Python 3 compatibility code
  
--- 18,24 ----
  import gdb
  import itertools
  import re
! import sys, os, errno
  
  ### Python 2 + Python 3 compatibility code
  
*************** except ImportError:
*** 85,92 ****
  def find_type(orig, name):
      typ = orig.strip_typedefs()
      while True:
!         # Strip cv-qualifiers.  PR 67440.
!         search = '%s::%s' % (typ.unqualified(), name)
          try:
              return gdb.lookup_type(search)
          except RuntimeError:
--- 85,92 ----
  def find_type(orig, name):
      typ = orig.strip_typedefs()
      while True:
!         # Use Type.tag to ignore cv-qualifiers.  PR 67440.
!         search = '%s::%s' % (typ.tag, name)
          try:
              return gdb.lookup_type(search)
          except RuntimeError:
*************** class SharedPointerPrinter:
*** 240,271 ****
                  state = 'use count %d, weak count %d' % (usecount, weakcount - 1)
          return '%s<%s> (%s)' % (self.typename, str(self.val.type.template_argument(0)), state)
  
  class UniquePointerPrinter:
      "Print a unique_ptr"
  
      def __init__ (self, typename, val):
          self.val = val
-         impl_type = val.type.fields()[0].type.strip_typedefs()
-         # Check for new implementations first:
-         if is_specialization_of(impl_type, '__uniq_ptr_data') \
-             or is_specialization_of(impl_type, '__uniq_ptr_impl'):
-             tuple_member = val['_M_t']['_M_t']
-         elif is_specialization_of(impl_type, 'tuple'):
-             tuple_member = val['_M_t']
-         else:
-             raise ValueError("Unsupported implementation for unique_ptr: %s" % str(impl_type))
-         tuple_impl_type = tuple_member.type.fields()[0].type # _Tuple_impl
-         tuple_head_type = tuple_impl_type.fields()[1].type   # _Head_base
-         head_field = tuple_head_type.fields()[0]
-         if head_field.name == '_M_head_impl':
-             self.pointer = tuple_member['_M_head_impl']
-         elif head_field.is_base_class:
-             self.pointer = tuple_member.cast(head_field.type)
-         else:
-             raise ValueError("Unsupported implementation for tuple in unique_ptr: %s" % str(impl_type))
  
      def children (self):
!         return SmartPtrIterator(self.pointer)
  
      def to_string (self):
          return ('std::unique_ptr<%s>' % (str(self.val.type.template_argument(0))))
--- 240,302 ----
                  state = 'use count %d, weak count %d' % (usecount, weakcount - 1)
          return '%s<%s> (%s)' % (self.typename, str(self.val.type.template_argument(0)), state)
  
+ def _tuple_impl_get(val):
+     "Return the tuple element stored in a _Tuple_impl<N, T> base class."
+     bases = val.type.fields()
+     if not bases[-1].is_base_class:
+         raise ValueError("Unsupported implementation for std::tuple: %s" % str(val.type))
+     # Get the _Head_base<N, T> base class:
+     head_base = val.cast(bases[-1].type)
+     fields = head_base.type.fields()
+     if len(fields) == 0:
+         raise ValueError("Unsupported implementation for std::tuple: %s" % str(val.type))
+     if fields[0].name == '_M_head_impl':
+         # The tuple element is the _Head_base::_M_head_impl data member.
+         return head_base['_M_head_impl']
+     elif fields[0].is_base_class:
+         # The tuple element is an empty base class of _Head_base.
+         # Cast to that empty base class.
+         return head_base.cast(fields[0].type)
+     else:
+         raise ValueError("Unsupported implementation for std::tuple: %s" % str(val.type))
+ 
+ def tuple_get(n, val):
+     "Return the result of std::get<n>(val) on a std::tuple"
+     tuple_size = len(get_template_arg_list(val.type))
+     if n > tuple_size:
+         raise ValueError("Out of range index for std::get<N> on std::tuple")
+     # Get the first _Tuple_impl<0, T...> base class:
+     node = val.cast(val.type.fields()[0].type)
+     while n > 0:
+         # Descend through the base classes until the Nth one.
+         node = node.cast(node.type.fields()[0].type)
+         n -= 1
+     return _tuple_impl_get(node)
+ 
+ def unique_ptr_get(val):
+     "Return the result of val.get() on a std::unique_ptr"
+     # std::unique_ptr<T, D> contains a std::tuple<D::pointer, D>,
+     # either as a direct data member _M_t (the old implementation)
+     # or within a data member of type __uniq_ptr_data.
+     impl_type = val.type.fields()[0].type.strip_typedefs()
+     # Check for new implementations first:
+     if is_specialization_of(impl_type, '__uniq_ptr_data') \
+         or is_specialization_of(impl_type, '__uniq_ptr_impl'):
+         tuple_member = val['_M_t']['_M_t']
+     elif is_specialization_of(impl_type, 'tuple'):
+         tuple_member = val['_M_t']
+     else:
+         raise ValueError("Unsupported implementation for unique_ptr: %s" % str(impl_type))
+     return tuple_get(0, tuple_member)
+ 
  class UniquePointerPrinter:
      "Print a unique_ptr"
  
      def __init__ (self, typename, val):
          self.val = val
  
      def children (self):
!         return SmartPtrIterator(unique_ptr_get(self.val))
  
      def to_string (self):
          return ('std::unique_ptr<%s>' % (str(self.val.type.template_argument(0))))
*************** class StdPathPrinter:
*** 1351,1357 ****
      def __init__ (self, typename, val):
          self.val = val
          self.typename = typename
!         impl = self.val['_M_cmpts']['_M_impl']['_M_t']['_M_t']['_M_head_impl']
          self.type = impl.cast(gdb.lookup_type('uintptr_t')) & 3
          if self.type == 0:
              self.impl = impl
--- 1382,1388 ----
      def __init__ (self, typename, val):
          self.val = val
          self.typename = typename
!         impl = unique_ptr_get(self.val['_M_cmpts']['_M_impl'])
          self.type = impl.cast(gdb.lookup_type('uintptr_t')) & 3
          if self.type == 0:
              self.impl = impl
*************** class StdCmpCatPrinter:
*** 1465,1470 ****
--- 1496,1540 ----
              name = names[int(self.val)]
          return 'std::{}::{}'.format(self.typename, name)
  
+ class StdErrorCodePrinter:
+     "Print a std::error_code or std::error_condition"
+ 
+     _errno_categories = None # List of categories that use errno values
+ 
+     def __init__ (self, typename, val):
+         self.val = val
+         self.typename = strip_versioned_namespace(typename)
+         # Do this only once ...
+         if StdErrorCodePrinter._errno_categories is None:
+             StdErrorCodePrinter._errno_categories = ['generic']
+             try:
+                 import posix
+                 StdErrorCodePrinter._errno_categories.append('system')
+             except ImportError:
+                 pass
+ 
+     @staticmethod
+     def _category_name(cat):
+         "Call the virtual function that overrides std::error_category::name()"
+         gdb.set_convenience_variable('__cat', cat)
+         return gdb.parse_and_eval('$__cat->name()').string()
+ 
+     def to_string (self):
+         value = self.val['_M_value']
+         category = self._category_name(self.val['_M_cat'])
+         strval = str(value)
+         if value == 0:
+             default_cats = {'error_code':'system', 'error_condition':'generic'}
+             unqualified = self.typename.split('::')[-1]
+             if category == default_cats[unqualified]:
+                 return self.typename + ' = { }' # default-constructed value
+         if value > 0 and category in StdErrorCodePrinter._errno_categories:
+             try:
+                 strval = errno.errorcode[int(value)]
+             except:
+                 pass
+         return '%s = {"%s": %s}' % (self.typename, category, strval)
+ 
  # A "regular expression" printer which conforms to the
  # "SubPrettyPrinter" protocol from gdb.printing.
  class RxPrinter(object):
*************** def build_libstdcxx_dictionary ():
*** 1867,1872 ****
--- 1937,1944 ----
      libstdcxx_printer.add_version('std::__cxx11::', 'basic_string', StdStringPrinter)
      libstdcxx_printer.add_container('std::', 'bitset', StdBitsetPrinter)
      libstdcxx_printer.add_container('std::', 'deque', StdDequePrinter)
+     libstdcxx_printer.add_version('std::', 'error_code', StdErrorCodePrinter)
+     libstdcxx_printer.add_version('std::', 'error_condition', StdErrorCodePrinter)
      libstdcxx_printer.add_container('std::', 'list', StdListPrinter)
      libstdcxx_printer.add_container('std::__cxx11::', 'list', StdListPrinter)
      libstdcxx_printer.add_container('std::', 'map', StdMapPrinter)
diff -Nrcpad gcc-10.3.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py gcc-10.4.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py
*** gcc-10.3.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/python/libstdcxx/v6/xmethods.py	Tue Jun 28 08:54:32 2022
*************** class UniquePtrGetWorker(gdb.xmethod.XMe
*** 597,603 ****
          tuple_head_type = tuple_impl_type.fields()[1].type   # _Head_base
          head_field = tuple_head_type.fields()[0]
          if head_field.name == '_M_head_impl':
!             return tuple_member['_M_head_impl']
          elif head_field.is_base_class:
              return tuple_member.cast(head_field.type)
          else:
--- 597,603 ----
          tuple_head_type = tuple_impl_type.fields()[1].type   # _Head_base
          head_field = tuple_head_type.fields()[0]
          if head_field.name == '_M_head_impl':
!             return tuple_member.cast(tuple_head_type)['_M_head_impl']
          elif head_field.is_base_class:
              return tuple_member.cast(head_field.type)
          else:
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/Makefile.am gcc-10.4.0/libstdc++-v3/src/Makefile.am
*** gcc-10.3.0/libstdc++-v3/src/Makefile.am	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/Makefile.am	Tue Jun 28 08:54:32 2022
*************** CXXLINK = \
*** 222,228 ****
  	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  	--mode=link $(CXX) \
  	$(VTV_CXXLINKFLAGS) \
! 	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
  
  # Symbol versioning for shared libraries.
  if ENABLE_SYMVERS
--- 222,230 ----
  	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  	--mode=link $(CXX) \
  	$(VTV_CXXLINKFLAGS) \
! 	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) \
! 	$(LTLDFLAGS) $(LTLIBICONV) \
! 	-o $@
  
  # Symbol versioning for shared libraries.
  if ENABLE_SYMVERS
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/Makefile.in gcc-10.4.0/libstdc++-v3/src/Makefile.in
*** gcc-10.3.0/libstdc++-v3/src/Makefile.in	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/Makefile.in	Tue Jun 28 08:54:32 2022
*************** CXXLINK = \
*** 597,603 ****
  	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  	--mode=link $(CXX) \
  	$(VTV_CXXLINKFLAGS) \
! 	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) -o $@
  
  @ENABLE_SYMVERS_TRUE@CLEANFILES = libstdc++-symbols.ver $(version_dep)
  @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist
--- 597,605 ----
  	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  	--mode=link $(CXX) \
  	$(VTV_CXXLINKFLAGS) \
! 	$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) \
! 	$(LTLDFLAGS) $(LTLIBICONV) \
! 	-o $@
  
  @ENABLE_SYMVERS_TRUE@CLEANFILES = libstdc++-symbols.ver $(version_dep)
  @ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@version_arg = -Wl,-exported_symbols_list,libstdc++-symbols.explist
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/c++11/system_error.cc gcc-10.4.0/libstdc++-v3/src/c++11/system_error.cc
*** gcc-10.3.0/libstdc++-v3/src/c++11/system_error.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/c++11/system_error.cc	Tue Jun 28 08:54:32 2022
*************** namespace
*** 70,75 ****
--- 70,77 ----
      virtual std::error_condition
      default_error_condition(int ev) const noexcept
      {
+       // Use generic category for all known POSIX errno values (including zero)
+       // and system category otherwise.
        switch (ev)
        {
        // List of errno macros from [cerrno.syn].
*************** namespace
*** 310,315 ****
--- 312,318 ----
  #ifdef EXDEV
        case EXDEV:
  #endif
+       case 0:
          return std::error_condition(ev, std::generic_category());
  
        /* Additional system-dependent mappings from non-standard error codes
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/c++17/fs_dir.cc gcc-10.4.0/libstdc++-v3/src/c++17/fs_dir.cc
*** gcc-10.3.0/libstdc++-v3/src/c++17/fs_dir.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/c++17/fs_dir.cc	Tue Jun 28 08:54:32 2022
*************** fs::recursive_directory_iterator::increm
*** 306,311 ****
--- 306,315 ----
  	  return *this;
  	}
      }
+ 
+   if (ec)
+     _M_dirs.reset();
+ 
    return *this;
  }
  
*************** fs::recursive_directory_iterator::pop(er
*** 329,344 ****
  	ec.clear();
  	return;
        }
!   } while (!_M_dirs->top().advance(skip_permission_denied, ec));
  }
  
  void
  fs::recursive_directory_iterator::pop()
  {
    error_code ec;
    pop(ec);
    if (ec)
!     _GLIBCXX_THROW_OR_ABORT(filesystem_error(_M_dirs
  	  ? "recursive directory iterator cannot pop"
  	  : "non-dereferenceable recursive directory iterator cannot pop",
  	  ec));
--- 333,352 ----
  	ec.clear();
  	return;
        }
!   } while (!_M_dirs->top().advance(skip_permission_denied, ec) && !ec);
! 
!   if (ec)
!     _M_dirs.reset();
  }
  
  void
  fs::recursive_directory_iterator::pop()
  {
+   [[maybe_unused]] const bool dereferenceable = _M_dirs != nullptr;
    error_code ec;
    pop(ec);
    if (ec)
!     _GLIBCXX_THROW_OR_ABORT(filesystem_error(dereferenceable
  	  ? "recursive directory iterator cannot pop"
  	  : "non-dereferenceable recursive directory iterator cannot pop",
  	  ec));
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/c++17/fs_ops.cc gcc-10.4.0/libstdc++-v3/src/c++17/fs_ops.cc
*** gcc-10.3.0/libstdc++-v3/src/c++17/fs_ops.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/c++17/fs_ops.cc	Tue Jun 28 08:54:32 2022
*************** namespace posix = std::filesystem::__gnu
*** 65,83 ****
  fs::path
  fs::absolute(const path& p)
  {
- #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS
    error_code ec;
    path ret = absolute(p, ec);
    if (ec)
      _GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot make absolute path", p,
  					     ec));
    return ret;
- #else
-   if (p.empty())
-     _GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot make absolute path", p,
- 	  make_error_code(std::errc::invalid_argument)));
-   return current_path() / p;
- #endif
  }
  
  fs::path
--- 65,76 ----
*************** fs::copy(const path& from, const path& t
*** 411,418 ****
        // set an unused bit in options to disable further recursion
        if (!is_set(options, copy_options::recursive))
  	options |= static_cast<copy_options>(4096);
!       for (const directory_entry& x : directory_iterator(from))
! 	copy(x.path(), to/x.path().filename(), options, ec);
      }
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 2683. filesystem::copy() says "no effects"
--- 404,415 ----
        // set an unused bit in options to disable further recursion
        if (!is_set(options, copy_options::recursive))
  	options |= static_cast<copy_options>(4096);
!       for (const directory_entry& x : directory_iterator(from, ec))
! 	{
! 	  copy(x.path(), to/x.path().filename(), options, ec);
! 	  if (ec)
! 	    return;
! 	}
      }
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 2683. filesystem::copy() says "no effects"
*************** fs::create_directories(const path& p, er
*** 496,502 ****
        return false;
      }
  
!   file_status st = symlink_status(p, ec);
    if (is_directory(st))
      return false;
    else if (ec && !status_known(st))
--- 493,499 ----
        return false;
      }
  
!   file_status st = status(p, ec);
    if (is_directory(st))
      return false;
    else if (ec && !status_known(st))
*************** namespace
*** 577,584 ****
    {
      bool created = false;
  #ifdef _GLIBCXX_HAVE_SYS_STAT_H
!     posix::mode_t mode
!       = static_cast<std::underlying_type_t<fs::perms>>(perm);
      if (posix::mkdir(p.c_str(), mode))
        {
  	const int err = errno;
--- 574,580 ----
    {
      bool created = false;
  #ifdef _GLIBCXX_HAVE_SYS_STAT_H
!     posix::mode_t mode = static_cast<std::underlying_type_t<fs::perms>>(perm);
      if (posix::mkdir(p.c_str(), mode))
        {
  	const int err = errno;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/c++17/fs_path.cc gcc-10.4.0/libstdc++-v3/src/c++17/fs_path.cc
*** gcc-10.3.0/libstdc++-v3/src/c++17/fs_path.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/c++17/fs_path.cc	Tue Jun 28 08:54:32 2022
*************** path::_M_split_cmpts()
*** 1907,1916 ****
  	  _M_cmpts.type(_Type::_Multi);
  	  _M_cmpts.reserve(_M_cmpts.size() + buf.size());
  	  auto output = _M_cmpts._M_impl->end();
! 	  for (auto& c : buf)
  	    {
! 	      auto pos = c.str.data() - _M_pathname.data();
! 	      ::new(output++) _Cmpt(c.str, c.type, pos);
  	      ++_M_cmpts._M_impl->_M_size;
  	    }
  	  next = buf.begin();
--- 1907,1915 ----
  	  _M_cmpts.type(_Type::_Multi);
  	  _M_cmpts.reserve(_M_cmpts.size() + buf.size());
  	  auto output = _M_cmpts._M_impl->end();
! 	  for (const auto& c : buf)
  	    {
! 	      ::new(output++) _Cmpt(c.str, c.type, parser.offset(c));
  	      ++_M_cmpts._M_impl->_M_size;
  	    }
  	  next = buf.begin();
*************** path::_M_split_cmpts()
*** 1930,1938 ****
        auto output = _M_cmpts._M_impl->end();
        for (int i = 0; i < n; ++i)
  	{
! 	  auto c = buf[i];
! 	  auto pos = c.str.data() - _M_pathname.data();
! 	  ::new(output++) _Cmpt(c.str, c.type, pos);
  	  ++_M_cmpts._M_impl->_M_size;
  	}
      }
--- 1929,1936 ----
        auto output = _M_cmpts._M_impl->end();
        for (int i = 0; i < n; ++i)
  	{
! 	  const auto& c = buf[i];
! 	  ::new(output++) _Cmpt(c.str, c.type, parser.offset(c));
  	  ++_M_cmpts._M_impl->_M_size;
  	}
      }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/c++98/Makefile.am gcc-10.4.0/libstdc++-v3/src/c++98/Makefile.am
*** gcc-10.3.0/libstdc++-v3/src/c++98/Makefile.am	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/c++98/Makefile.am	Tue Jun 28 08:54:32 2022
*************** endif
*** 39,45 ****
  # particular host.
  host_sources = \
  	$(cow_string_host_sources) \
- 	atomicity.cc \
  	codecvt_members.cc \
  	collate_members.cc \
  	messages_members.cc \
--- 39,44 ----
*************** numeric_members.cc: ${glibcxx_srcdir}/$(
*** 65,74 ****
  time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC)
  	$(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true
  
- atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
- atomicity.cc: ${atomicity_file}
- 	$(LN_S) ${atomicity_file} ./atomicity.cc || true
- 
  if ENABLE_DUAL_ABI
  collate_members_cow.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC)
  	$(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) ./$@ || true
--- 64,69 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/c++98/Makefile.in gcc-10.4.0/libstdc++-v3/src/c++98/Makefile.in
*** gcc-10.3.0/libstdc++-v3/src/c++98/Makefile.in	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/c++98/Makefile.in	Tue Jun 28 08:54:32 2022
*************** libc__98convenience_la_LIBADD =
*** 127,135 ****
  @ENABLE_DUAL_ABI_TRUE@	messages_members_cow.lo \
  @ENABLE_DUAL_ABI_TRUE@	monetary_members_cow.lo \
  @ENABLE_DUAL_ABI_TRUE@	numeric_members_cow.lo
! am__objects_3 = $(am__objects_2) atomicity.lo codecvt_members.lo \
! 	collate_members.lo messages_members.lo monetary_members.lo \
! 	numeric_members.lo time_members.lo
  @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_4 = allocator-inst.lo \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	concept-inst.lo ext-inst.lo \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	misc-inst.lo
--- 127,135 ----
  @ENABLE_DUAL_ABI_TRUE@	messages_members_cow.lo \
  @ENABLE_DUAL_ABI_TRUE@	monetary_members_cow.lo \
  @ENABLE_DUAL_ABI_TRUE@	numeric_members_cow.lo
! am__objects_3 = $(am__objects_2) codecvt_members.lo collate_members.lo \
! 	messages_members.lo monetary_members.lo numeric_members.lo \
! 	time_members.lo
  @ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_4 = allocator-inst.lo \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	concept-inst.lo ext-inst.lo \
  @ENABLE_EXTERN_TEMPLATE_TRUE@	misc-inst.lo
*************** headers =
*** 443,449 ****
  # particular host.
  host_sources = \
  	$(cow_string_host_sources) \
- 	atomicity.cc \
  	codecvt_members.cc \
  	collate_members.cc \
  	messages_members.cc \
--- 443,448 ----
*************** host_sources = \
*** 451,457 ****
  	numeric_members.cc \
  	time_members.cc
  
- atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
  
  # Source files linked in via configuration/make substitution for a
  # particular host, but with ad hoc naming rules.
--- 450,455 ----
*************** numeric_members.cc: ${glibcxx_srcdir}/$(
*** 842,849 ****
  
  time_members.cc: ${glibcxx_srcdir}/$(CTIME_CC)
  	$(LN_S) ${glibcxx_srcdir}/$(CTIME_CC) . || true
- atomicity.cc: ${atomicity_file}
- 	$(LN_S) ${atomicity_file} ./atomicity.cc || true
  
  @ENABLE_DUAL_ABI_TRUE@collate_members_cow.cc: ${glibcxx_srcdir}/$(CCOLLATE_CC)
  @ENABLE_DUAL_ABI_TRUE@	$(LN_S) ${glibcxx_srcdir}/$(CCOLLATE_CC) ./$@ || true
--- 840,845 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/filesystem/dir.cc gcc-10.4.0/libstdc++-v3/src/filesystem/dir.cc
*** gcc-10.3.0/libstdc++-v3/src/filesystem/dir.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/filesystem/dir.cc	Tue Jun 28 08:54:32 2022
*************** fs::recursive_directory_iterator::increm
*** 289,294 ****
--- 289,298 ----
  	  return *this;
  	}
      }
+ 
+   if (ec)
+     _M_dirs.reset();
+ 
    return *this;
  }
  
*************** fs::recursive_directory_iterator::pop(er
*** 312,327 ****
  	ec.clear();
  	return;
        }
!   } while (!_M_dirs->top().advance(skip_permission_denied, ec));
  }
  
  void
  fs::recursive_directory_iterator::pop()
  {
    error_code ec;
    pop(ec);
    if (ec)
!     _GLIBCXX_THROW_OR_ABORT(filesystem_error(_M_dirs
  	  ? "recursive directory iterator cannot pop"
  	  : "non-dereferenceable recursive directory iterator cannot pop",
  	  ec));
--- 316,335 ----
  	ec.clear();
  	return;
        }
!   } while (!_M_dirs->top().advance(skip_permission_denied, ec) && !ec);
! 
!   if (ec)
!     _M_dirs.reset();
  }
  
  void
  fs::recursive_directory_iterator::pop()
  {
+   [[maybe_unused]] const bool dereferenceable = _M_dirs != nullptr;
    error_code ec;
    pop(ec);
    if (ec)
!     _GLIBCXX_THROW_OR_ABORT(filesystem_error(dereferenceable
  	  ? "recursive directory iterator cannot pop"
  	  : "non-dereferenceable recursive directory iterator cannot pop",
  	  ec));
diff -Nrcpad gcc-10.3.0/libstdc++-v3/src/filesystem/ops.cc gcc-10.4.0/libstdc++-v3/src/filesystem/ops.cc
*** gcc-10.3.0/libstdc++-v3/src/filesystem/ops.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/src/filesystem/ops.cc	Tue Jun 28 08:54:32 2022
*************** fs::copy(const path& from, const path& t
*** 344,351 ****
        // set an unused bit in options to disable further recursion
        if (!is_set(options, copy_options::recursive))
  	options |= static_cast<copy_options>(4096);
!       for (const directory_entry& x : directory_iterator(from))
! 	copy(x.path(), to/x.path().filename(), options, ec);
      }
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 2683. filesystem::copy() says "no effects"
--- 344,355 ----
        // set an unused bit in options to disable further recursion
        if (!is_set(options, copy_options::recursive))
  	options |= static_cast<copy_options>(4096);
!       for (const directory_entry& x : directory_iterator(from, ec))
! 	{
! 	  copy(x.path(), to/x.path().filename(), options, ec);
! 	  if (ec)
! 	    return;
! 	}
      }
    // _GLIBCXX_RESOLVE_LIB_DEFECTS
    // 2683. filesystem::copy() says "no effects"
*************** fs::copy_file(const path& from, const pa
*** 366,372 ****
  
  bool
  fs::copy_file(const path& from, const path& to, copy_options options,
! 	      error_code& ec) noexcept
  {
  #ifdef _GLIBCXX_HAVE_SYS_STAT_H
    return do_copy_file(from.c_str(), to.c_str(), copy_file_options(options),
--- 370,376 ----
  
  bool
  fs::copy_file(const path& from, const path& to, copy_options options,
! 	      error_code& ec)
  {
  #ifdef _GLIBCXX_HAVE_SYS_STAT_H
    return do_copy_file(from.c_str(), to.c_str(), copy_file_options(options),
*************** fs::create_directories(const path& p)
*** 418,424 ****
  }
  
  bool
! fs::create_directories(const path& p, error_code& ec) noexcept
  {
    if (p.empty())
      {
--- 422,428 ----
  }
  
  bool
! fs::create_directories(const path& p, error_code& ec)
  {
    if (p.empty())
      {
*************** fs::create_directories(const path& p, er
*** 426,432 ****
        return false;
      }
  
!   file_status st = symlink_status(p, ec);
    if (is_directory(st))
      return false;
    else if (ec && !status_known(st))
--- 430,436 ----
        return false;
      }
  
!   file_status st = status(p, ec);
    if (is_directory(st))
      return false;
    else if (ec && !status_known(st))
*************** fs::remove_all(const path& p)
*** 1092,1098 ****
  }
  
  std::uintmax_t
! fs::remove_all(const path& p, error_code& ec) noexcept
  {
    const auto s = symlink_status(p, ec);
    if (!status_known(s))
--- 1096,1102 ----
  }
  
  std::uintmax_t
! fs::remove_all(const path& p, error_code& ec)
  {
    const auto s = symlink_status(p, ec);
    if (!status_known(s))
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc gcc-10.4.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do preprocess }
+ 
+ // PR libstdc++/103650 libstdc++ headers defined LT_OBJDIR and STDC_HEADERS
+ 
+ #define LT_OBJDIR 99
+ #define STDC_HEADERS 99
+ #include <utility>
+ #if LT_OBJDIR != 99
+ # error LT_OBJDIR redefined
+ #endif
+ #if STDC_HEADERS != 99
+ # error STDC_HEADERS redefined
+ #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc gcc-10.4.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc	Tue Jun 28 08:54:32 2022
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-do compile { target *-*-linux* *-*-gnu* } }
+ // { dg-add-options no_pch }
  
  // Copyright (C) 2011-2020 Free Software Foundation, Inc.
  //
***************
*** 18,22 ****
--- 19,133 ----
  // <http://www.gnu.org/licenses/>.
  
  // libstdc++/49745
+ // error: 'int truncate' redeclared as different kind of symbol
+ 
+ // This tests that no libstdc++ headers include <unistd.h>.
+ // However, as discussed in PR libstdc++/100117 we cannot guarantee that
+ // no libc headers include it indirectly, so only include the C++ headers.
+ // That means we can't use <bits/stdc++.h> because that includes <cstdio> etc.
+ // so we list the C++ headers explicitly here. This list is unfortunately
+ // doomed to get out of date as new headers are added to the library.
+ 
+ #include <algorithm>
+ #include <bitset>
+ #include <complex>
+ #include <deque>
+ #include <exception>
+ #include <fstream>
+ #include <functional>
+ #include <iomanip>
+ #include <ios>
+ #include <iosfwd>
  #include <iostream>
+ #include <istream>
+ #include <iterator>
+ #include <limits>
+ #include <list>
+ #include <locale>
+ #include <map>
+ #include <memory>
+ #include <new>
+ #include <numeric>
+ #include <ostream>
+ #include <queue>
+ #include <set>
+ #include <sstream>
+ #include <stack>
+ #include <stdexcept>
+ #include <streambuf>
+ #include <string>
+ #include <typeinfo>
+ #include <utility>
+ #include <valarray>
+ #include <vector>
+ 
+ #if __cplusplus >= 201103L
+ #include <array>
+ #include <atomic>
+ #include <chrono>
+ #include <codecvt>
+ #include <condition_variable>
+ #include <forward_list>
+ #include <future>
+ #include <initializer_list>
+ #include <mutex>
+ #include <random>
+ #include <ratio>
+ #include <regex>
+ #include <scoped_allocator>
+ #include <system_error>
+ #include <thread>
+ #include <tuple>
+ #include <typeindex>
+ #include <type_traits>
+ #include <unordered_map>
+ #include <unordered_set>
+ #endif
+ 
+ #if __cplusplus >= 201402L
+ #include <shared_mutex>
+ #endif
+ 
+ #if __cplusplus >= 201703L
+ #include <any>
+ #include <charconv>
+ // #include <execution>
+ #include <filesystem>
+ #include <optional>
+ #include <memory_resource>
+ #include <string_view>
+ #include <variant>
+ #endif
+ 
+ #if __cplusplus >= 202002L
+ #include <barrier>
+ #include <bit>
+ #include <compare>
+ #include <concepts>
+ #if __cpp_impl_coroutine
+ # include <coroutine>
+ #endif
+ #if __has_include (<format>)
+ # include <format>
+ #endif
+ #include <latch>
+ #include <numbers>
+ #include <ranges>
+ #include <span>
+ #include <stop_token>
+ #include <semaphore>
+ #include <source_location>
+ #include <syncstream>
+ #include <version>
+ #endif
+ 
+ #if __cplusplus > 202002L
+ #if __has_include(<spanstream>)
+ # include <spanstream>
+ #endif
+ #if __has_include(<stacktrace>)
+ # include <stacktrace>
+ #endif
+ #endif
+ 
  int truncate = 0;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/17_intro/names.cc gcc-10.4.0/libstdc++-v3/testsuite/17_intro/names.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/17_intro/names.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/17_intro/names.cc	Tue Jun 28 08:54:32 2022
***************
*** 106,111 ****
--- 106,113 ----
  #define z (
  
  #define tmp (
+ #define sz (
+ #define token (
  
  #if __cplusplus < 201103L
  #define uses_allocator  (
***************
*** 195,200 ****
--- 197,209 ----
  #undef y
  // <sys/var.h> defines vario::v
  #undef v
+ // <sys/timer.h> defines trb::func and cputime_tmr::func
+ #undef func
+ #endif
+ 
+ #ifdef __APPLE__
+ // inttypes.h:  extern intmax_t imaxabs(intmax_t j);
+ #undef j
  #endif
  
  #ifdef __hpux__
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.cc gcc-10.4.0/libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,42 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ 
+ #include <compare>
+ 
+ using std::strong_ordering;
+ using std::partial_ordering;
+ 
+ namespace adl
+ {
+   struct S { };
+   void strong_ordering(const S&, const S&);
+   bool operator==(const S&, S&) { return true; }
+   bool operator<(const S&, S&) { return true; }
+ }
+ 
+ template<typename T, typename U>
+   concept has_strong_order_fallback = requires (T& t, U& u) {
+     std::compare_strong_order_fallback(t, u);
+   };
+ 
+ template<typename T, typename U>
+   concept has_weak_order_fallback = requires (T& t, U& u) {
+     std::compare_weak_order_fallback(t, u);
+   };
+ 
+ template<typename T, typename U>
+   concept has_partial_order_fallback = requires (T& t, U& u) {
+     std::compare_partial_order_fallback(t, u);
+   };
+ 
+ using adl::S;
+ 
+ static_assert( has_strong_order_fallback<S, S> );
+ static_assert( has_strong_order_fallback<const S, S> );
+ static_assert( ! has_strong_order_fallback<const S, const S> );
+ static_assert( has_weak_order_fallback<S, S> );
+ static_assert( has_weak_order_fallback<const S, S> );
+ static_assert( ! has_weak_order_fallback<const S, const S> );
+ static_assert( has_partial_order_fallback<S, S> );
+ static_assert( ! has_partial_order_fallback<const S, S> ); // LWG 3465
+ static_assert( ! has_partial_order_fallback<const S, const S> );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/18_support/exception_ptr/103630.cc gcc-10.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/103630.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/18_support/exception_ptr/103630.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/103630.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,39 ----
+ // { dg-do run }
+ 
+ #include <exception>
+ #if __cplusplus < 201103L
+ // std::make_exception_ptr is defined for C++98 as a GNU extension
+ # include <bits/exception_ptr.h>
+ #endif
+ 
+ #include <testsuite_hooks.h>
+ 
+ struct B
+ {
+   virtual bool derived() const { return false; }
+ };
+ 
+ struct D : B
+ {
+   virtual bool derived() const { return true; }
+ };
+ 
+ int main()
+ {
+   D d;
+   std::exception_ptr p = std::make_exception_ptr<B&>(d); // PR libstdc++/103630
+ #if __cpp_exceptions
+   try
+   {
+     std::rethrow_exception(p);
+   }
+   catch (const D& d)
+   {
+     VERIFY(d.derived()); // PR libstdc++/103630
+   }
+   catch (const B& b)
+   {
+     VERIFY(!b.derived());
+   }
+ #endif
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc gcc-10.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,17 ----
+ // { dg-options "-nodefaultlibs -lsupc++ -lgcc_s -lc" { target sparc*-*-linux-gnu } }
+ // { dg-do link { target c++11 } }
+ 
+ #include <exception>
+ 
+ void
+ test01()
+ {
+   // PR libstdc++/96657 undefined references in libsupc++
+   std::make_exception_ptr(1);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc gcc-10.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,18 ----
+ // { dg-do run { target c++11 } }
+ #include <system_error>
+ #include <testsuite_hooks.h>
+ 
+ void test01()
+ {
+   // PR libstdc++/102425
+   VERIFY( std::error_code() == std::error_condition() );
+ 
+   auto zero = std::system_category().default_error_condition(0);
+   // This is the condition that the equality above relies on:
+   VERIFY( zero.category() == std::generic_category() );
+ }
+ 
+ int main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/allocator/void.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/allocator/void.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/allocator/void.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/allocator/void.cc	Tue Jun 28 08:54:32 2022
*************** test01()
*** 33,38 ****
--- 33,50 ----
    std::allocator_traits<alloc_type>::destroy(a, &i);
  }
  
+ static_assert( std::allocator<void>::propagate_on_container_move_assignment(),
+ 	       "POCMA trait should always be present" );
+ static_assert( std::allocator<void>::is_always_equal(),
+ 	       "is_always_equal trait should always be present" );
+ 
+ static_assert(
+     std::is_same<std::allocator<void>::size_type, std::size_t>(),
+     "size_type is size_t" );
+ static_assert(
+     std::is_same<std::allocator<void>::difference_type, std::ptrdiff_t>(),
+     "size_type is size_t" );
+ 
  // These properties are formally unspecified, but have always been true for
  // the libstdc++ definition of allocator<void>.
  static_assert(
*************** static_assert(
*** 51,59 ****
  #if __cplusplus > 201703L
  // C++20 removes the allocator<void> explicit specialization, so it can now be
  // constructed using the converting constructor from other specializations.
! static_assert( std::is_constructible_v<std::allocator<void>,
! 				       std::allocator<int>> );
! #endif
  
  int
  main()
--- 63,91 ----
  #if __cplusplus > 201703L
  // C++20 removes the allocator<void> explicit specialization, so it can now be
  // constructed using the converting constructor from other specializations.
! static_assert( std::is_nothrow_constructible_v<std::allocator<void>,
! 					       std::allocator<int>> );
! 
! template<typename T>
! concept has_pointer = requires { typename T::pointer; };
! template<typename T>
! concept has_const_pointer = requires { typename T::const_pointer; };
! template<typename T>
! concept has_size_type = requires { typename T::size_type; };
! template<typename T>
! concept has_difference_type = requires { typename T::difference_type; };
! 
! // These were removed for C++20
! static_assert( ! has_pointer<std::allocator<void>> );
! static_assert( ! has_const_pointer<std::allocator<void>> );
! 
! #else
! static_assert(
!     std::is_same<std::allocator<void>::pointer, void*>(),
!     "pointer is void*" );
! static_assert( std::is_same<std::allocator<void>::const_pointer, const void*>(),
!     "const_pointer is const void*" );
! #endif // C++20
  
  int
  main()
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/any/102894.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/any/102894.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/any/102894.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/any/102894.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,20 ----
+ // { dg-do compile { target c++17 } }
+ #include <any>
+ 
+ template<typename T, typename = void>
+ struct can_make_any
+ : std::false_type
+ { };
+ 
+ template<typename T>
+ struct can_make_any<T, std::void_t<decltype(std::make_any<T>())>>
+ : std::true_type
+ { };
+ 
+ struct move_only
+ {
+   move_only() = default;
+   move_only(move_only&&) = default;
+ };
+ 
+ static_assert( ! can_make_any<move_only>::value ); // PR libstdc++/102894
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/any/cons/101034.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/any/cons/101034.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/any/cons/101034.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/any/cons/101034.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,11 ----
+ // { dg-do compile { target c++17 } }
+ // PR libstdc++/101034 - wrong constraint in std::any's constructor
+ 
+ #include <any>
+ 
+ struct S {
+   S(std::initializer_list<int>&, int) {}
+ };
+ 
+ std::any a(std::in_place_type<S>, {0}, 0);
+ S& s = a.emplace<S>({0}, 0);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/common_reference/100894.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/common_reference/100894.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/common_reference/100894.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/common_reference/100894.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,9 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ // PR libstdc++/100894 - common_reference implementation seems to be wrong
+ 
+ #include <type_traits>
+ 
+ struct A {};
+ struct B { B(A); };
+ static_assert( std::is_same_v<std::common_reference_t<A&, B&&>, B> );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/forward/c_neg.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/forward/c_neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/forward/c_neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/forward/c_neg.cc	Tue Jun 28 08:54:32 2022
***************
*** 17,23 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-error "static assertion failed" "" { target *-*-* } 89 }
  
  #include <list>
  
--- 17,23 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-error "convert an rvalue to an lvalue" "" { target *-*-* } 0 }
  
  #include <list>
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/forward/f_neg.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/forward/f_neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/forward/f_neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/forward/f_neg.cc	Tue Jun 28 08:54:32 2022
***************
*** 17,23 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-error "static assertion failed" "" { target *-*-* } 89 }
  
  #include <utility>
  
--- 17,23 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-error "convert an rvalue to an lvalue" "" { target *-*-* } 0 }
  
  #include <utility>
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/from_chars/3.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/from_chars/3.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/from_chars/3.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/from_chars/3.cc	Tue Jun 28 08:54:32 2022
*************** long long
*** 29,35 ****
  read(const char* first, const char* last, int base)
  {
    long long val = 0;
!   long long place = 1;
    while (last > first)
    {
      val += (*--last - '0') * place;
--- 29,35 ----
  read(const char* first, const char* last, int base)
  {
    long long val = 0;
!   unsigned long long place = 1;
    while (last > first)
    {
      val += (*--last - '0') * place;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc	Tue Jun 28 08:54:32 2022
***************
*** 20,25 ****
--- 20,31 ----
  
  #include <memory>
  
+ #if __cplusplus >= 201103L
+ # define NOTHROW noexcept
+ #else
+ # define NOTHROW
+ #endif
+ 
  namespace std {
    //  lib.default.allocator, the default allocator:
    template <class T> class allocator;
*************** namespace std {
*** 40,46 ****
  
    //  lib.temporary.buffer, temporary buffers:
    template <class T>
!   pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n);
    template <class T>
    void return_temporary_buffer(T* p);
  
--- 46,52 ----
  
    //  lib.temporary.buffer, temporary buffers:
    template <class T>
!   pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n) NOTHROW;
    template <class T>
    void return_temporary_buffer(T* p);
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/integer_comparisons/greater.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/integer_comparisons/greater.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/integer_comparisons/greater.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/integer_comparisons/greater.cc	Tue Jun 28 08:54:32 2022
***************
*** 0 ****
--- 1,61 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do run { target c++20 } }
+ 
+ #include <utility>
+ #include <limits>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   unsigned int u = std::numeric_limits<unsigned int>::max();
+   int s = -1;
+   VERIFY( !std::cmp_greater(s, u) );
+   VERIFY( std::cmp_greater(u, s) );
+   u = (unsigned) std::numeric_limits<int>::max() + 1U;
+   VERIFY( !std::cmp_greater(s, u) );
+   VERIFY( std::cmp_greater(u, s) );
+ }
+ 
+ constexpr bool
+ test02()
+ {
+   unsigned int u = std::numeric_limits<unsigned int>::max();
+   int s = -1;
+   if (std::cmp_greater(s, u))
+     throw 1;
+   if (!std::cmp_greater(u, s))
+     throw 2;
+   return true;
+ }
+ 
+ void
+ test03()
+ {
+   short ss = -1;
+   int s = -1;
+   VERIFY( !std::cmp_greater(s, ss) );
+   VERIFY( !std::cmp_greater(ss, s) );
+ 
+   unsigned int u = (unsigned int) -1;
+   VERIFY( !std::cmp_greater(s, u) );
+   VERIFY( std::cmp_greater(u, s) );
+   VERIFY( !std::cmp_greater(ss, u) );
+   VERIFY( std::cmp_greater(u, ss) );
+ 
+   unsigned long long ul = (unsigned long long) -1;
+   VERIFY( !std::cmp_greater(s, ul) );
+   VERIFY( std::cmp_greater(ul, s) );
+   VERIFY( !std::cmp_greater(ss, ul) );
+   VERIFY( std::cmp_greater(ul, ss) );
+   VERIFY( !std::cmp_greater(u, ul) );
+   VERIFY( std::cmp_greater(ul, u) );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   static_assert( test02() );
+   test03();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/optional/assignment/100982.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/optional/assignment/100982.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/optional/assignment/100982.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/optional/assignment/100982.cc	Tue Jun 28 08:54:33 2022
***************
*** 0 ****
--- 1,17 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <optional>
+ 
+ struct U {};
+ 
+ struct T {
+   explicit T(const U&);
+   T& operator=(const U&);
+   T& operator=(U&&) = delete;
+ };
+ 
+ int main() {
+   std::optional<U> opt1;
+   std::optional<T> opt2;
+   opt2 = opt1; // PR libstdc++/100982
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc	Tue Jun 28 08:54:33 2022
***************
*** 15,22 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-options "-std=gnu++2a" }
! // { dg-do compile { target c++2a } }
  
  #include <optional>
  
--- 15,22 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // { dg-options "-std=gnu++20" }
! // { dg-do compile { target c++20 } }
  
  #include <optional>
  
*************** test02()
*** 74,76 ****
--- 74,94 ----
    static_assert( nullopt <= O{} );
    static_assert( nullopt <= O{1} );
  }
+ 
+ template<typename T>
+   concept has_spaceship = requires (const T& t) { t <=> t; };
+ 
+ void
+ test03()
+ {
+   struct E
+   {
+     auto operator<=>(const E&) const { return std::strong_ordering::equal; }
+   };
+   static_assert( !std::three_way_comparable<E> ); // not equality comparable
+   using O = std::optional<E>;
+   static_assert( !std::three_way_comparable<O> );
+   static_assert( ! has_spaceship<O> ); // PR libstdc++/98842
+   struct U : O { };
+   static_assert( ! has_spaceship<U> );
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc	Tue Jun 28 08:54:33 2022
*************** test01()
*** 47,52 ****
--- 47,53 ----
    auto p = sa.allocate(1);
    sa.construct(p);  // this is required to be ill-formed
    // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
+   // { dg-error "too many initializers for 'X'" "" { target c++2a } 0 }
  }
  
  // Needed because of PR c++/92193
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc	Tue Jun 28 08:54:33 2022
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do compile { target c++11 } }
+ 
+ #include <memory>
+ 
+ // LWG 3548
+ // shared_ptr construction from unique_ptr should move (not copy) the deleter
+ 
+ struct D
+ {
+   D() { }
+   D(D&&) { }
+   void operator()(int* p) const { delete p; }
+ };
+ 
+ std::unique_ptr<int, D> u;
+ std::shared_ptr<int> s1(std::move(u));
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc	Tue Jun 28 08:54:33 2022
*************** test02()
*** 58,67 ****
    VERIFY( D::count == 0 ); // LWG 2415
  }
  
  int
  main()
  {
    test01();
    test02();
!   return 0;
  }
--- 58,82 ----
    VERIFY( D::count == 0 ); // LWG 2415
  }
  
+ void
+ test03()
+ {
+   struct D
+   {
+     D() = default;
+     D(const D&) = delete; // not copyable or movable
+     void operator()(int* p) const { delete p; }
+   };
+ 
+   using namespace std;
+   static_assert( ! is_constructible<shared_ptr<int>, unique_ptr<int, D>>(),
+ 		 "Constraints: is_move_constructible_v<D> is true" );
+ }
+ 
  int
  main()
  {
    test01();
    test02();
!   test03();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc	Tue Jun 28 08:54:33 2022
***************
*** 0 ****
--- 1,9 ----
+ // FIXME: This should use { target { c++11 && { ! c++20 } } }
+ // { dg-do compile { target { c++11 } } }
+ 
+ #include <memory>
+ 
+ auto p = std::make_shared<int[]>(2); // { dg-error "here" }
+ auto q = std::make_shared<int[2]>(1, 2); // { dg-error "here" }
+ 
+ // { dg-prune-output "static assertion failed" }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc	Tue Jun 28 08:54:34 2022
*************** TwistedLogic operator<(const Compares&,
*** 48,51 ****
  
  auto a = std::make_tuple(nullptr, Compares{}, 2, 'U');
  auto b = a == a;
! auto c = a < a;
--- 48,56 ----
  
  auto a = std::make_tuple(nullptr, Compares{}, 2, 'U');
  auto b = a == a;
! 
! #if ! __cpp_lib_three_way_comparison
! // Not valid in C++20, because TwistedLogic doesn't model boolean-testable.
! auto c = std::make_tuple("", Compares{}, 2, 'U');
! auto d = c < c;
! #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc	Tue Jun 28 08:54:34 2022
***************
*** 0 ****
--- 1,64 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ 
+ #include <tuple>
+ 
+ // PR libstdc++/102270 - std::tuple<>::swap missing constexpr specifier
+ 
+ constexpr bool swap_empty_tuple()
+ {
+   std::tuple<> t, u;
+   t.swap(u);
+   return true;
+ }
+ static_assert( swap_empty_tuple() );
+ 
+ #include <testsuite_allocator.h>
+ 
+ constexpr bool construct_using_allocator()
+ {
+   using Alloc = __gnu_test::SimpleAllocator<int>;
+ 
+   Alloc a;
+   const int i = 0;
+ 
+   struct X0a {
+     using allocator_type = Alloc;
+     /* not constexpr */ X0a() { }
+     constexpr X0a(allocator_type) { }
+   };
+   std::tuple<X0a> t0a(std::allocator_arg, a);
+   std::tuple<X0a, X0a> t00a(std::allocator_arg, a);
+ 
+   struct X0b {
+     using allocator_type = Alloc;
+     /* not constexpr */ X0b() { }
+     constexpr X0b(std::allocator_arg_t, allocator_type) { }
+   };
+   std::tuple<X0b> t0b(std::allocator_arg, a);
+   std::tuple<X0b, X0b> t00b(std::allocator_arg, a);
+ 
+   struct X1a {
+     using allocator_type = Alloc;
+     /* not constexpr */ X1a(int) { }
+     constexpr X1a(int, allocator_type) { }
+   };
+   std::tuple<X1a> t1a(std::allocator_arg, a, 1);
+   std::tuple<X1a, X1a> t11a(std::allocator_arg, a, 1, i);
+ 
+   struct X1b {
+     using allocator_type = Alloc;
+     /* not constexpr */ X1b(int) { }
+     constexpr X1b(std::allocator_arg_t, allocator_type, int) { }
+   };
+   std::tuple<X1b> t1b(std::allocator_arg, a, 1);
+   std::tuple<X1b, X1b> t11b(std::allocator_arg, a, 1, i);
+ 
+   std::tuple<X1a, X1a, X1b, X1b> t1a1b(std::allocator_arg, a, 1, i, 1, i);
+ 
+   const int c = 0;
+   std::tuple<int, int> tii(std::allocator_arg, a, c, c);
+ 
+   return true;
+ }
+ static_assert( construct_using_allocator() );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc	Tue Jun 28 08:54:34 2022
*************** test01()
*** 45,49 ****
    alloc_type a;
    std::tuple<X> t(std::allocator_arg, a); // this is required to be ill-formed
    // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
!   // { dg-error "no matching function for call" "" { target c++2a } 0 }
  }
--- 45,50 ----
    alloc_type a;
    std::tuple<X> t(std::allocator_arg, a); // this is required to be ill-formed
    // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
!   // { dg-error "too many initializers for 'X'" "" { target c++2a } 0 }
!   // { dg-prune-output "in 'constexpr' expansion" }
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc	Tue Jun 28 08:54:34 2022
*************** void test01()
*** 45,47 ****
--- 45,48 ----
  }
  // { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
  // { dg-error "no matching function for call" "" { target c++2a } 0 }
+ // { dg-prune-output "in 'constexpr' expansion" }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/20_util/variant/100384.cc gcc-10.4.0/libstdc++-v3/testsuite/20_util/variant/100384.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/20_util/variant/100384.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/20_util/variant/100384.cc	Tue Jun 28 08:54:34 2022
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <variant>
+ 
+ int visit(int*, std::true_type) { return 0; }
+ 
+ const std::true_type dat;
+ 
+ int i = visit(nullptr, dat);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc	Tue Jun 28 08:54:34 2022
*************** void test01(void)
*** 117,123 ****
    VERIFY( str06 == L"corpus, corpus" );
  
    str06 = str02;
!   str06.append(L"corpus, ", 12);
    VERIFY( str06 != L"corpus, corpus, " );
  
  
--- 117,123 ----
    VERIFY( str06 == L"corpus, corpus" );
  
    str06 = str02;
!   str06.append(L"corpus, ", 9); // n=9 includes null terminator
    VERIFY( str06 != L"corpus, corpus, " );
  
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc	Tue Jun 28 08:54:34 2022
*************** test01()
*** 81,88 ****
    test_value(wcsncmp(str_1.data(), str_0.data(), 6), z);
    test_value(wcsncmp(str_1.data(), str_0.data(), 14), lt);
    test_value(wmemcmp(str_1.data(), str_0.data(), 6), z);
!   test_value(wmemcmp(str_1.data(), str_0.data(), 14), lt);
!   test_value(wmemcmp(L"costa marbella", L"costa rica", 14), lt);
  
    // int compare(const basic_string& str) const;
    test_value(str_0.compare(str_1), gt); //because r>m
--- 81,88 ----
    test_value(wcsncmp(str_1.data(), str_0.data(), 6), z);
    test_value(wcsncmp(str_1.data(), str_0.data(), 14), lt);
    test_value(wmemcmp(str_1.data(), str_0.data(), 6), z);
!   test_value(wmemcmp(str_1.data(), str_0.data(), 10), lt);
!   test_value(wmemcmp(L"costa marbella", L"costa rica", 10), lt);
  
    // int compare(const basic_string& str) const;
    test_value(str_0.compare(str_1), gt); //because r>m
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc	Tue Jun 28 08:54:34 2022
***************
*** 22,28 ****
  
  #ifndef __cpp_lib_constexpr_string_view
  # error "Feature test macro for constexpr copy is missing in <string_view>"
! #elif __cpp_lib_constexpr_iterator < 201811L
  # error "Feature test macro for constexpr copy has wrong value in <string_view>"
  #endif
  
--- 22,28 ----
  
  #ifndef __cpp_lib_constexpr_string_view
  # error "Feature test macro for constexpr copy is missing in <string_view>"
! #elif __cpp_lib_constexpr_string_view < 201811L
  # error "Feature test macro for constexpr copy has wrong value in <string_view>"
  #endif
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc	Tue Jun 28 08:54:34 2022
***************
*** 0 ****
--- 1,12 ----
+ // { dg-options "-std=gnu++17" }
+ // { dg-do compile { target c++17 } }
+ 
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2251r1.pdf
+ 
+ #include <string_view>
+ 
+ static_assert( std::is_trivially_copyable_v<std::string_view> );
+ static_assert( std::is_trivially_copyable_v<std::wstring_view> );
+ 
+ struct traits : std::char_traits<char> { };
+ static_assert( std::is_trivially_copyable_v<std::basic_string_view<char, traits>> );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc	Tue Jun 28 08:54:34 2022
*************** template<typename CT>
*** 73,84 ****
      return true;
    }
  
  #ifndef __cpp_lib_constexpr_char_traits
  # error Feature-test macro for constexpr char_traits is missing
! #elif __cpp_lib_constexpr_char_traits < 201611
  # error Feature-test macro for constexpr char_traits has the wrong value
- #elif __cpp_lib_constexpr_char_traits > 201611 && __cplusplus == 201703
- # error Feature-test macro for constexpr char_traits has wrong value for C++17
  #endif
  
  static_assert( test_assign<std::char_traits<char>>() );
--- 73,89 ----
      return true;
    }
  
+ #ifndef __cpp_lib_constexpr_string
+ # error Feature-test macro for constexpr char_traits is missing
+ #elif __cpp_lib_constexpr_string < (__cplusplus == 201703 ? 201611 : 201811)
+ # error Feature-test macro for constexpr char_traits has the wrong value
+ #endif
+ 
+ // We also provide this non-standard macro for P0426R1 (and P1032R1 in C++20).
  #ifndef __cpp_lib_constexpr_char_traits
  # error Feature-test macro for constexpr char_traits is missing
! #elif __cpp_lib_constexpr_char_traits != (__cplusplus == 201703 ? 201611 : 201811)
  # error Feature-test macro for constexpr char_traits has the wrong value
  #endif
  
  static_assert( test_assign<std::char_traits<char>>() );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc	Tue Jun 28 08:54:34 2022
***************
*** 1,5 ****
! // { dg-options "-std=gnu++2a" }
! // { dg-do compile { target c++2a } }
  
  // Copyright (C) 2017-2020 Free Software Foundation, Inc.
  //
--- 1,5 ----
! // { dg-options "-std=gnu++20" }
! // { dg-do compile { target c++20 } }
  
  // Copyright (C) 2017-2020 Free Software Foundation, Inc.
  //
*************** template<typename CT>
*** 25,35 ****
    test_move()
    {
      using char_type = typename CT::char_type;
      char_type s1[3] = {1, 2, 3};
      CT::move(s1+1, s1, 2);
!     return s1[0]==char_type{1} && s1[1]==char_type{1} && s1[2]==char_type{2};
    }
  
  #ifndef __cpp_lib_constexpr_char_traits
  # error Feature-test macro for constexpr char_traits is missing
  #elif __cpp_lib_constexpr_char_traits != 201811
--- 25,59 ----
    test_move()
    {
      using char_type = typename CT::char_type;
+ 
+     // Overlapping strings
      char_type s1[3] = {1, 2, 3};
      CT::move(s1+1, s1, 2);
!     if (s1[0] != char_type{1} || s1[1] != char_type{1} || s1[2] != char_type{2})
!       throw 1;
!     CT::move(s1, s1+1, 2);
!     if (s1[0] != char_type{1} || s1[1] != char_type{2} || s1[2] != char_type{2})
!       throw 2;
! 
!     // Disjoint strings
!     char_type why_is_six_scared_of_seven[] = {4, 5, 6};
!     char_type because789[] = {7, 8, 9};
!     CT::move(why_is_six_scared_of_seven, because789, 3);
!     if (why_is_six_scared_of_seven[0] != char_type{7}
! 	|| why_is_six_scared_of_seven[1] != char_type{8}
! 	|| why_is_six_scared_of_seven[2] != char_type{9})
!       throw 3;
! 
!     return true;
    }
  
+ #ifndef __cpp_lib_constexpr_string
+ # error Feature-test macro for constexpr char_traits is missing
+ #elif __cpp_lib_constexpr_string < 201811
+ # error Feature-test macro for constexpr char_traits has the wrong value
+ #endif
+ 
+ // We also provide this non-standard macro for P0426R1 and P1032R1.
  #ifndef __cpp_lib_constexpr_char_traits
  # error Feature-test macro for constexpr char_traits is missing
  #elif __cpp_lib_constexpr_char_traits != 201811
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc gcc-10.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc	Tue Jun 28 08:54:34 2022
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do compile { target c++17 } }
+ 
+ #include <version>
+ 
+ #ifndef __cpp_lib_constexpr_string
+ # error Feature-test macro for constexpr char_traits is missing in <version>
+ #elif __cpp_lib_constexpr_string < (__cplusplus == 201703 ? 201611 : 201811)
+ # error Feature-test macro for constexpr char_traits has the wrong value in <version>
+ #endif
+ 
+ // We also provide this non-standard macro for P0426R1 and P1032R1.
+ #ifndef __cpp_lib_constexpr_char_traits
+ # error Feature-test macro for constexpr char_traits is missing in <version>
+ #elif __cpp_lib_constexpr_char_traits != (__cplusplus == 201703 ? 201611 : 201811)
+ # error Feature-test macro for constexpr char_traits has the wrong value in <version>
+ #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc	Tue Jun 28 08:54:34 2022
***************
*** 17,22 ****
--- 17,23 ----
  
  // { dg-options "-std=gnu++2a" }
  // { dg-do run { target c++2a } }
+ // { dg-require-normal-mode "" }
  
  #include <array>
  #include <testsuite_hooks.h>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,48 ----
+ // { dg-do run { target c++11 } }
+ // C++11 23.3.4.6 Operations [forwardlist.ops]
+ 
+ #include <forward_list>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test_stable()
+ {
+   std::forward_list<double> a{1.5, 2.0, 3.5, 4.1};
+   std::forward_list<double> b{1.0, 2.5, 3.0, 4.3, 4.2, 5.0};
+ 
+   a.merge(b, std::less<int>{});
+ 
+   // result is sorted with respect to std::less<int>, so 1.0 and 1.5 are
+   // equivalent, and stability guarantee means the element from a comes first.
+   const std::forward_list<double> r { 1.5, 1.0,
+ 				      2.0, 2.5,
+ 				      3.5, 3.0,
+ 				      4.1, 4.3, 4.2,
+ 				      5.0};
+ 
+   VERIFY(a == r);
+ }
+ 
+ void
+ test_lwg3088()
+ {
+   // LWG 3088: forward_list::merge behavior unclear when passed *this
+   // PR libstdc++/103853
+   std::forward_list<int> c1{ 1, 2, 3 };
+   const std::forward_list<int> c2 = c1;
+   c1.merge(c1);
+   VERIFY( c1 == c2 );
+   c1.merge(c1, std::less<long>{});
+   VERIFY( c1 == c2 );
+   c1.merge(std::move(c1));
+   VERIFY( c1 == c2 );
+   c1.merge(std::move(c1), std::less<long>{});
+   VERIFY( c1 == c2 );
+ }
+ 
+ int
+ main()
+ {
+   test_stable();
+   test_lwg3088();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,53 ----
+ // Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <map>
+ #include <string>
+ 
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ using Cmp = std::less<int>;
+ 
+ using __gnu_test::uneq_allocator;
+ 
+ void test01()
+ {
+   typedef uneq_allocator<std::pair<const int, std::string>> alloc_type;
+   typedef std::map<int, std::string, Cmp, alloc_type> test_type;
+   test_type v1(alloc_type(1));
+   const char* str = "A long enough string to require dynamic allocation";
+   v1 = { { 1, str } };
+ 
+   alloc_type a2(2);
+   test_type v2(std::move(v1), a2);
+ 
+   VERIFY(1 == v1.get_allocator().get_personality());
+   VERIFY(2 == v2.get_allocator().get_personality());
+ 
+   VERIFY( v1.empty() );
+   VERIFY( v2[1] == str );
+ }
+ 
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
*************** static_assert( std::is_nothrow_construct
*** 29,34 ****
--- 29,61 ----
  	       mtype&&, const typename mtype::allocator_type&>::value,
  	       "noexcept move constructor with allocator" );
  
+ template<typename Type>
+   class not_noexcept_move_constructor_alloc : public std::allocator<Type>
+   {
+   public:
+     not_noexcept_move_constructor_alloc() noexcept { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	const not_noexcept_move_constructor_alloc& x) noexcept
+     : std::allocator<Type>(x)
+     { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	not_noexcept_move_constructor_alloc&& x) noexcept(false)
+     : std::allocator<Type>(std::move(x))
+     { }
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_move_constructor_alloc<_Tp1> other; };
+   };
+ 
+ typedef std::map<int, int, std::less<int>,
+ 		 not_noexcept_move_constructor_alloc<std::pair<const int, int>>> amtype;
+ 
+ static_assert( std::is_nothrow_move_constructible<amtype>::value,
+ 	       "noexcept move constructor with not noexcept alloc" );
+ 
  struct not_noexcept_less
  {
    not_noexcept_less() = default;
*************** struct not_noexcept_less
*** 42,47 ****
  
  typedef std::map<int, int, not_noexcept_less> emtype;
  
  static_assert( !std::is_nothrow_constructible<emtype, emtype&&,
  	       const typename emtype::allocator_type&>::value,
! 	       "except move constructor with allocator" );
--- 69,77 ----
  
  typedef std::map<int, int, not_noexcept_less> emtype;
  
+ static_assert( !std::is_nothrow_move_constructible<emtype>::value,
+ 	       "not noexcept move constructor with not noexcept less" );
+ 
  static_assert( !std::is_nothrow_constructible<emtype, emtype&&,
  	       const typename emtype::allocator_type&>::value,
! 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,53 ----
+ // Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <map>
+ #include <string>
+ 
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ using Cmp = std::less<int>;
+ 
+ using __gnu_test::uneq_allocator;
+ 
+ void test01()
+ {
+   typedef uneq_allocator<std::pair<const int, std::string>> alloc_type;
+   typedef std::multimap<int, std::string, Cmp, alloc_type> test_type;
+   test_type v1(alloc_type(1));
+   const char* str = "A long enough string to require dynamic allocation";
+   v1 = { { 1, str } };
+ 
+   alloc_type a2(2);
+   test_type v2(std::move(v1), a2);
+ 
+   VERIFY(1 == v1.get_allocator().get_personality());
+   VERIFY(2 == v2.get_allocator().get_personality());
+ 
+   VERIFY( v1.empty() );
+   VERIFY( v2.begin()->second == str );
+ }
+ 
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
*************** static_assert( std::is_nothrow_construct
*** 29,34 ****
--- 29,61 ----
  	       mmtype&&, const typename mmtype::allocator_type&>::value,
  	       "noexcept move constructor with allocator" );
  
+ template<typename Type>
+   class not_noexcept_move_constructor_alloc : public std::allocator<Type>
+   {
+   public:
+     not_noexcept_move_constructor_alloc() noexcept { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	const not_noexcept_move_constructor_alloc& x) noexcept
+     : std::allocator<Type>(x)
+     { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	not_noexcept_move_constructor_alloc&& x) noexcept(false)
+     : std::allocator<Type>(std::move(x))
+     { }
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_move_constructor_alloc<_Tp1> other; };
+   };
+ 
+ typedef std::multimap<int, int, std::less<int>,
+ 		      not_noexcept_move_constructor_alloc<std::pair<const int, int>>> ammtype;
+ 
+ static_assert( std::is_nothrow_move_constructible<ammtype>::value,
+ 	       "noexcept move constructor with not noexcept alloc" );
+ 
  struct not_noexcept_less
  {
    not_noexcept_less() = default;
*************** struct not_noexcept_less
*** 42,47 ****
  
  typedef std::multimap<int, int, not_noexcept_less> emmtype;
  
  static_assert( !std::is_nothrow_constructible<emmtype, emmtype&&,
  	       const typename emmtype::allocator_type&>::value,
! 	       "except move constructor with allocator" );
--- 69,77 ----
  
  typedef std::multimap<int, int, not_noexcept_less> emmtype;
  
+ static_assert( !std::is_nothrow_move_constructible<emmtype>::value,
+ 	       "not noexcept move constructor with not noexcept less" );
+ 
  static_assert( !std::is_nothrow_constructible<emmtype, emmtype&&,
  	       const typename emmtype::allocator_type&>::value,
! 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,32 ----
+ // { dg-do run { target c++11 } }
+ 
+ // PR libstdc++/103501
+ 
+ #include <set>
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ struct Y
+ {
+   int i;
+ 
+   Y(int i) : i(i) { }
+   Y(const Y& y) noexcept : i(y.i) { }
+   Y(Y&& y) noexcept : i(y.i) { y.i = -y.i; }
+ 
+   bool operator<(const Y& rhs) const { return i < rhs.i; }
+ };
+ 
+ int main()
+ {
+   using Alloc = __gnu_test::uneq_allocator<Y>;
+   std::multiset<Y, std::less<Y>, Alloc> s1{ {1, 2, 3}, Alloc(1)};
+   std::multiset<Y, std::less<Y>, Alloc> s2{ std::move(s1), Alloc(2) };
+   const Y* prev = nullptr;
+   for (const Y& y : s1)
+   {
+     if (prev)
+       VERIFY( !(y < *prev) );
+     prev = &y;
+   }
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,53 ----
+ // Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <set>
+ #include <string>
+ 
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ using Cmp = std::less<std::string>;
+ 
+ using __gnu_test::uneq_allocator;
+ 
+ void test01()
+ {
+   typedef uneq_allocator<std::string> alloc_type;
+   typedef std::multiset<std::string, Cmp, alloc_type> test_type;
+   test_type v1(alloc_type(1));
+   const char* str = "A long enough string to require dynamic allocation";
+   v1 = { str };
+ 
+   alloc_type a2(2);
+   test_type v2(std::move(v1), a2);
+ 
+   VERIFY(1 == v1.get_allocator().get_personality());
+   VERIFY(2 == v2.get_allocator().get_personality());
+ 
+   VERIFY( v1.count(str) == 0 );
+   VERIFY( v2.count(str) == 1 );
+ }
+ 
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
*************** static_assert( std::is_nothrow_construct
*** 29,34 ****
--- 29,61 ----
  	       mstype&&, const typename mstype::allocator_type&>::value,
  	       "noexcept move constructor with allocator" );
  
+ template<typename Type>
+   class not_noexcept_move_constructor_alloc : public std::allocator<Type>
+   {
+   public:
+     not_noexcept_move_constructor_alloc() noexcept { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	const not_noexcept_move_constructor_alloc& x) noexcept
+     : std::allocator<Type>(x)
+     { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	not_noexcept_move_constructor_alloc&& x) noexcept(false)
+     : std::allocator<Type>(std::move(x))
+     { }
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_move_constructor_alloc<_Tp1> other; };
+   };
+ 
+ typedef std::multiset<int, std::less<int>,
+ 		 not_noexcept_move_constructor_alloc<int>> amstype;
+ 
+ static_assert( std::is_nothrow_move_constructible<amstype>::value,
+ 	       "noexcept move constructor with not noexcept alloc" );
+ 
  struct not_noexcept_less
  {
    not_noexcept_less() = default;
*************** struct not_noexcept_less
*** 42,47 ****
  
  typedef std::multiset<int, not_noexcept_less> emstype;
  
  static_assert( !std::is_nothrow_constructible<emstype, emstype&&,
  	       const typename emstype::allocator_type&>::value,
! 	       "except move constructor with allocator" );
--- 69,77 ----
  
  typedef std::multiset<int, not_noexcept_less> emstype;
  
+ static_assert( !std::is_nothrow_move_constructible<emstype>::value,
+ 	       "not noexcept move constructor with not noexcept less" );
+ 
  static_assert( !std::is_nothrow_constructible<emstype, emstype&&,
  	       const typename emstype::allocator_type&>::value,
! 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/set/allocator/103501.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/set/allocator/103501.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/set/allocator/103501.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/set/allocator/103501.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,32 ----
+ // { dg-do run { target c++11 } }
+ 
+ // PR libstdc++/103501
+ 
+ #include <set>
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ struct X
+ {
+   int i;
+ 
+   X(int i) : i(i) { }
+   X(const X& x) noexcept : i(x.i) { }
+   X(X&& x) noexcept : i(x.i) { x.i = -1; }
+ 
+   bool operator<(const X& rhs) const { return i < rhs.i; }
+ };
+ 
+ int main()
+ {
+   using Alloc = __gnu_test::uneq_allocator<X>;
+   std::set<X, std::less<X>, Alloc> s1{ {1, 2, 3}, Alloc(1)};
+   std::set<X, std::less<X>, Alloc> s2{ std::move(s1), Alloc(2) };
+   const X* prev = nullptr;
+   for (const X& x : s1)
+   {
+     if (prev)
+       VERIFY( *prev < x );
+     prev = &x;
+   }
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,53 ----
+ // Copyright (C) 2020-2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <set>
+ #include <string>
+ 
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ using Cmp = std::less<std::string>;
+ 
+ using __gnu_test::uneq_allocator;
+ 
+ void test01()
+ {
+   typedef uneq_allocator<std::string> alloc_type;
+   typedef std::set<std::string, Cmp, alloc_type> test_type;
+   test_type v1(alloc_type(1));
+   const char* str = "A long enough string to require dynamic allocation";
+   v1 = { str };
+ 
+   alloc_type a2(2);
+   test_type v2(std::move(v1), a2);
+ 
+   VERIFY(1 == v1.get_allocator().get_personality());
+   VERIFY(2 == v2.get_allocator().get_personality());
+ 
+   VERIFY( v1.count(str) == 0 );
+   VERIFY( v2.count(str) == 1 );
+ }
+ 
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
*************** static_assert( std::is_nothrow_construct
*** 29,34 ****
--- 29,61 ----
  	       stype&&, const typename stype::allocator_type&>::value,
  	       "noexcept move constructor with allocator" );
  
+ template<typename Type>
+   class not_noexcept_move_constructor_alloc : public std::allocator<Type>
+   {
+   public:
+     not_noexcept_move_constructor_alloc() noexcept { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	const not_noexcept_move_constructor_alloc& x) noexcept
+     : std::allocator<Type>(x)
+     { }
+ 
+     not_noexcept_move_constructor_alloc(
+ 	not_noexcept_move_constructor_alloc&& x) noexcept(false)
+     : std::allocator<Type>(std::move(x))
+     { }
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_move_constructor_alloc<_Tp1> other; };
+   };
+ 
+ typedef std::set<int, std::less<int>,
+ 		 not_noexcept_move_constructor_alloc<int>> astype;
+ 
+ static_assert( std::is_nothrow_move_constructible<astype>::value,
+ 	       "noexcept move constructor with not noexcept alloc" );
+ 
  struct not_noexcept_less
  {
    not_noexcept_less() = default;
*************** struct not_noexcept_less
*** 42,47 ****
  
  typedef std::set<int, not_noexcept_less> estype;
  
  static_assert( !std::is_nothrow_constructible<estype, estype&&,
  	       const typename estype::allocator_type&>::value,
! 	       "except move constructor with allocator" );
--- 69,77 ----
  
  typedef std::set<int, not_noexcept_less> estype;
  
+ static_assert( !std::is_nothrow_move_constructible<estype>::value,
+ 	       "not noexcept move constructor with not noexcept less" );
+ 
  static_assert( !std::is_nothrow_constructible<estype, estype&&,
  	       const typename estype::allocator_type&>::value,
! 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/span/101411.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/span/101411.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/span/101411.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/span/101411.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,15 ----
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do compile { xfail c++2a } }
+ #include <span>
+ 
+ // PR libstdc++/101411
+ 
+ void f(std::span<const int> s)
+ {
+   std::as_writable_bytes(s); // { dg-error "unsatisfied constraints" }
+ }
+ 
+ void f1(std::span<const int, 1> s)
+ {
+   std::as_writable_bytes(s); // { dg-error "unsatisfied constraints" }
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/span/trivially_copyable.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/span/trivially_copyable.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/span/trivially_copyable.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/span/trivially_copyable.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,13 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ 
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2251r1.pdf
+ 
+ #include <span>
+ 
+ static_assert( std::is_trivially_copyable_v<std::span<int>> );
+ static_assert( std::is_trivially_copyable_v<std::span<int, 42>> );
+ 
+ struct NonTrivial { NonTrivial(); NonTrivial(const NonTrivial&); };
+ static_assert( std::is_trivially_copyable_v<std::span<NonTrivial>> );
+ static_assert( std::is_trivially_copyable_v<std::span<NonTrivial, 99>> );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,68 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ // { dg-options "-O0" }
+ 
+ #include <unordered_map>
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ #include <ext/aligned_buffer.h>
+ 
+ using T = int;
+ 
+ using __gnu_test::default_init_allocator;
+ 
+ void test01()
+ {
+   typedef default_init_allocator<std::pair<const T, T>> alloc_type;
+   typedef std::unordered_map<T, T, std::hash<T>, std::equal_to<T>,
+ 			     alloc_type> test_type;
+ 
+   __gnu_cxx::__aligned_buffer<test_type> buf;
+   __builtin_memset(buf._M_addr(), ~0, sizeof(test_type));
+ 
+   test_type *tmp = ::new(buf._M_addr()) test_type;
+ 
+   VERIFY( tmp->get_allocator().state == 0 );
+ 
+   tmp->~test_type();
+ }
+ 
+ void test02()
+ {
+   typedef default_init_allocator<std::pair<const T, T>> alloc_type;
+   typedef std::unordered_map<T, T, std::hash<T>, std::equal_to<T>,
+ 			     alloc_type> test_type;
+ 
+   __gnu_cxx::__aligned_buffer<test_type> buf;
+   __builtin_memset(buf._M_addr(), ~0, sizeof(test_type));
+ 
+   test_type *tmp = ::new(buf._M_addr()) test_type();
+ 
+   VERIFY( tmp->get_allocator().state == 0 );
+ 
+   tmp->~test_type();
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,51 ----
+ // { dg-do compile { target c++11 } }
+ #include <unordered_map>
+ 
+ static_assert( std::is_default_constructible<std::unordered_map<int, int>>{}, "" );
+ 
+ template<typename T>
+   struct NoDefaultConsAlloc
+   {
+     using value_type = T;
+ 
+     NoDefaultConsAlloc(int) noexcept { }
+ 
+     template<typename U>
+       NoDefaultConsAlloc(const NoDefaultConsAlloc<U>&) { }
+ 
+     T *allocate(std::size_t n)
+     { return std::allocator<T>().allocate(n); }
+ 
+     void deallocate(T *p, std::size_t n)
+     { std::allocator<T>().deallocate(p, n); }
+ 
+     bool operator==(const NoDefaultConsAlloc&) const { return true; }
+     bool operator!=(const NoDefaultConsAlloc&) const { return false; }
+   };
+ 
+ using Map = std::unordered_map<int, int, std::hash<int>, std::equal_to<int>,
+ 			       NoDefaultConsAlloc<std::pair<const int, int>>>;
+ static_assert( ! std::is_default_constructible<Map>{}, "PR libstdc++/100863" );
+ 
+ struct Hash : std::hash<int> { Hash(int) { } };
+ using Map2 = std::unordered_map<int, int, Hash>;
+ static_assert( ! std::is_default_constructible<Map2>{}, "PR libstdc++/100863" );
+ 
+ struct Equal : std::equal_to<int> { Equal(int) { } };
+ using Map3 = std::unordered_map<int, int, std::hash<int>, Equal>;
+ static_assert( ! std::is_default_constructible<Map3>{}, "PR libstdc++/100863" );
+ 
+ // PR libstdc++/101583
+ // verify non-default ctors can still be used
+ using Map4 = std::unordered_map<int, int, Hash, Equal,
+ 			        NoDefaultConsAlloc<std::pair<const int, int>>>;
+ Hash h(1);
+ Equal eq(1);
+ Map4::allocator_type a(1);
+ Map4 m{1, h, eq, a};
+ Map4 m2{m.begin(), m.end(), m.size(), h, eq, a};
+ Map4 m3{{{1,1}, {2,2}, {3,3}}, 3, h, eq, a};
+ Map4 m4{m};
+ Map4 m5{m, a};
+ Map4 m6{std::move(m)};
+ Map4 m7{std::move(m6), a};
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,68 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do compile { target c++11 } }
+ 
+ #include <unordered_map>
+ 
+ using type1 = std::unordered_map<int, int>;
+ 
+ static_assert(std::is_nothrow_default_constructible<type1>::value,
+ 	      "noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_hash
+ {
+   not_noexcept_dflt_cons_hash() /* noexcept */;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_map<int, int, not_noexcept_dflt_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type2>::value,
+ 	       "not noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_equal_to
+ {
+   not_noexcept_dflt_cons_equal_to() /* noexcept */;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_map<int, int, std::hash<int>,
+ 				  not_noexcept_dflt_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type3>::value,
+ 	       "not noexcept default constructible");
+ 
+ template<typename _Tp>
+   struct not_noexcept_dflt_cons_alloc : std::allocator<_Tp>
+   {
+     not_noexcept_dflt_cons_alloc() /* noexcept */;
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_dflt_cons_alloc<_Tp1> other; };
+   };
+ 
+ using type4 = std::unordered_map<int, int, std::hash<int>, std::equal_to<int>,
+ 			not_noexcept_dflt_cons_alloc<std::pair<const int, int>>>;
+ 
+ static_assert(!std::is_nothrow_default_constructible<type4>::value,
+ 	      "not noexcept default constructible");
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,65 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <unordered_map>
+ 
+ using type1 = std::unordered_map<int, int>;
+ 
+ static_assert( std::is_nothrow_move_constructible<type1>::value,
+ 	       "noexcept move constructor" );
+ static_assert( std::is_nothrow_constructible<type1,
+ 	       type1&&, const typename type1::allocator_type&>::value,
+ 	       "noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_hash
+ {
+   not_noexcept_copy_cons_hash() noexcept;
+   not_noexcept_copy_cons_hash(const not_noexcept_copy_cons_hash&) /* noexcept */;
+   not_noexcept_copy_cons_hash(not_noexcept_copy_cons_hash&&) noexcept;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_map<int, int, not_noexcept_copy_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type2>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type2, type2&&,
+ 	       const typename type2::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_equal_to
+ {
+   not_noexcept_copy_cons_equal_to() noexcept;
+   not_noexcept_copy_cons_equal_to(const not_noexcept_copy_cons_equal_to&) /* noexcept */;
+   not_noexcept_copy_cons_equal_to(not_noexcept_copy_cons_equal_to&&) noexcept;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_map<int, int, std::hash<int>,
+ 				  not_noexcept_copy_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type3>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type3, type3&&,
+ 	       const typename type3::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,81 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <utility>
+ #include <unordered_map>
+ #include <vector>
+ 
+ #include <testsuite_hooks.h>
+ #include <testsuite_counter_type.h>
+ #include <testsuite_allocator.h>
+ 
+ void test01()
+ {
+   using namespace std;
+   using __gnu_test::counter_type;
+ 
+   std::vector<pair<int, counter_type>> insts { { 0, 0 }, { 1, 1 }, { 2, 2 } };
+   typedef unordered_map<int, counter_type> Map;
+   Map m;
+ 
+   counter_type::reset();
+ 
+   m.insert(make_move_iterator(insts.begin()), make_move_iterator(insts.end()));
+ 
+   VERIFY( m.size() == 3 );
+   VERIFY( counter_type::default_count == 0 );
+   VERIFY( counter_type::copy_count == 0 );
+   VERIFY( counter_type::move_count == 3 );
+ }
+ 
+ void test02()
+ {
+   using namespace std;
+   using __gnu_test::counter_type;
+   using __gnu_test::propagating_allocator;
+ 
+   typedef propagating_allocator<pair<const int, counter_type>, false> Alloc;
+   typedef unordered_map<int, counter_type,
+ 			hash<int>, equal_to<int>,
+ 			Alloc> Map;
+ 
+   Alloc a1(1);
+   Map m1(3, a1);
+   m1 = { { 0, 0 }, { 1, 1 }, { 2, 2 } };
+   Alloc a2(2);
+   Map m2(3, a2);
+   m2 = { { 3, 0 }, { 4, 1 }, { 5, 2 } };
+ 
+   counter_type::reset();
+ 
+   m2 = move(m1);
+ 
+   VERIFY( m1.empty() );
+   VERIFY( m2.size() == 3 );
+   VERIFY( counter_type::default_count == 0 );
+   VERIFY( counter_type::copy_count == 0 );
+   VERIFY( counter_type::move_count == 3 );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,68 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do compile { target c++11 } }
+ 
+ #include <unordered_map>
+ 
+ using type1 = std::unordered_multimap<int, int>;
+ 
+ static_assert(std::is_nothrow_default_constructible<type1>::value,
+ 	      "noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_hash
+ {
+   not_noexcept_dflt_cons_hash() /* noexcept */;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_multimap<int, int, not_noexcept_dflt_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type2>::value,
+ 	       "not noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_equal_to
+ {
+   not_noexcept_dflt_cons_equal_to() /* noexcept */;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_multimap<int, int, std::hash<int>,
+ 				       not_noexcept_dflt_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type3>::value,
+ 	       "not noexcept default constructible");
+ 
+ template<typename _Tp>
+   struct not_noexcept_dflt_cons_alloc : std::allocator<_Tp>
+   {
+     not_noexcept_dflt_cons_alloc() /* noexcept */;
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_dflt_cons_alloc<_Tp1> other; };
+   };
+ 
+ using type4 = std::unordered_multimap<int, int, std::hash<int>, std::equal_to<int>,
+ 				       not_noexcept_dflt_cons_alloc<std::pair<const int, int>>>;
+ 
+ static_assert(!std::is_nothrow_default_constructible<type4>::value,
+ 	      "not noexcept default constructible");
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,65 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <unordered_map>
+ 
+ using type1 = std::unordered_multimap<int, int>;
+ 
+ static_assert( std::is_nothrow_move_constructible<type1>::value,
+ 	       "noexcept move constructor" );
+ static_assert( std::is_nothrow_constructible<type1,
+ 	       type1&&, const typename type1::allocator_type&>::value,
+ 	       "noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_hash
+ {
+   not_noexcept_copy_cons_hash() noexcept;
+   not_noexcept_copy_cons_hash(const not_noexcept_copy_cons_hash&) /* noexcept */;
+   not_noexcept_copy_cons_hash(not_noexcept_copy_cons_hash&&) noexcept;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_multimap<int, int, not_noexcept_copy_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type2>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type2, type2&&,
+ 	       const typename type2::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_equal_to
+ {
+   not_noexcept_copy_cons_equal_to() noexcept;
+   not_noexcept_copy_cons_equal_to(const not_noexcept_copy_cons_equal_to&) /* noexcept */;
+   not_noexcept_copy_cons_equal_to(not_noexcept_copy_cons_equal_to&&) noexcept;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_multimap<int, int, std::hash<int>,
+ 				       not_noexcept_copy_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type3>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type3, type3&&,
+ 	       const typename type3::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,68 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do compile { target c++11 } }
+ 
+ #include <unordered_set>
+ 
+ using type1 = std::unordered_multiset<int>;
+ 
+ static_assert(std::is_nothrow_default_constructible<type1>::value,
+ 	      "noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_hash
+ {
+   not_noexcept_dflt_cons_hash() /* noexcept */;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_multiset<int, not_noexcept_dflt_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type2>::value,
+ 	       "not noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_equal_to
+ {
+   not_noexcept_dflt_cons_equal_to() /* noexcept */;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_multiset<int, std::hash<int>,
+ 				      not_noexcept_dflt_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type3>::value,
+ 	       "not noexcept default constructible");
+ 
+ template<typename _Tp>
+   struct not_noexcept_dflt_cons_alloc : std::allocator<_Tp>
+   {
+     not_noexcept_dflt_cons_alloc() /* noexcept */;
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_dflt_cons_alloc<_Tp1> other; };
+   };
+ 
+ using type4 = std::unordered_multiset<int, std::hash<int>, std::equal_to<int>,
+ 				      not_noexcept_dflt_cons_alloc<int>>;
+ 
+ static_assert(!std::is_nothrow_default_constructible<type4>::value,
+ 	      "not noexcept default constructible");
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,65 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <unordered_set>
+ 
+ using type1 = std::unordered_multiset<int>;
+ 
+ static_assert( std::is_nothrow_move_constructible<type1>::value,
+ 	       "noexcept move constructor" );
+ static_assert( std::is_nothrow_constructible<type1,
+ 	       type1&&, const typename type1::allocator_type&>::value,
+ 	       "noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_hash
+ {
+   not_noexcept_copy_cons_hash() noexcept;
+   not_noexcept_copy_cons_hash(const not_noexcept_copy_cons_hash&) /* noexcept */;
+   not_noexcept_copy_cons_hash(not_noexcept_copy_cons_hash&&) noexcept;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_multiset<int, not_noexcept_copy_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type2>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type2, type2&&,
+ 	       const typename type2::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_equal_to
+ {
+   not_noexcept_copy_cons_equal_to() noexcept;
+   not_noexcept_copy_cons_equal_to(const not_noexcept_copy_cons_equal_to&) /* noexcept */;
+   not_noexcept_copy_cons_equal_to(not_noexcept_copy_cons_equal_to&&) noexcept;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_multiset<int, std::hash<int>,
+ 				      not_noexcept_copy_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type3>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type3, type3&&,
+ 	       const typename type3::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,68 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ // { dg-options "-O0" }
+ 
+ #include <unordered_set>
+ #include <testsuite_hooks.h>
+ #include <testsuite_allocator.h>
+ 
+ #include <ext/aligned_buffer.h>
+ 
+ using T = int;
+ 
+ using __gnu_test::default_init_allocator;
+ 
+ void test01()
+ {
+   typedef default_init_allocator<T> alloc_type;
+   typedef std::unordered_set<T, std::hash<T>, std::equal_to<T>,
+ 			     alloc_type> test_type;
+ 
+   __gnu_cxx::__aligned_buffer<test_type> buf;
+   __builtin_memset(buf._M_addr(), ~0, sizeof(test_type));
+ 
+   test_type *tmp = ::new(buf._M_addr()) test_type;
+ 
+   VERIFY( tmp->get_allocator().state == 0 );
+ 
+   tmp->~test_type();
+ }
+ 
+ void test02()
+ {
+   typedef default_init_allocator<T> alloc_type;
+   typedef std::unordered_set<T, std::hash<T>, std::equal_to<T>,
+ 			     alloc_type> test_type;
+ 
+   __gnu_cxx::__aligned_buffer<test_type> buf;
+   __builtin_memset(buf._M_addr(), ~0, sizeof(test_type));
+ 
+   test_type *tmp = ::new(buf._M_addr()) test_type();
+ 
+   VERIFY( tmp->get_allocator().state == 0 );
+ 
+   tmp->~test_type();
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,47 ----
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=gnu++11" }
+ // { dg-do compile { target c++11 } }
+ 
+ #include <unordered_set>
+ #include <testsuite_allocator.h>
+ 
+ template<typename Alloc, typename T = typename Alloc::value_type>
+   using Set = std::unordered_set<T, std::hash<T>, std::equal_to<T>, Alloc>;
+ 
+ // PR libstdc++/99985 - invalid constexpr function in C++11 mode
+ 
+ void
+ test01()
+ {
+   using A = std::allocator<int>;
+   A a;
+   Set<A> s;
+   static_assert( noexcept( Set<A>(std::move(s)) ), "non-throwing" );
+   static_assert( noexcept( Set<A>(std::move(s), a) ), "non-throwing" );
+ }
+ 
+ void
+ test02()
+ {
+   using A = __gnu_test::uneq_allocator<long>;
+   A a;
+   Set<A> s;
+   static_assert( noexcept( Set<A>(std::move(s)) ), "non-throwing" );
+   static_assert( ! noexcept( Set<A>(std::move(s), a) ), "throwing" );
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,50 ----
+ // { dg-do compile { target c++11 } }
+ #include <unordered_set>
+ 
+ static_assert( std::is_default_constructible<std::unordered_set<int>>{}, "" );
+ 
+ template<typename T>
+   struct NoDefaultConsAlloc
+   {
+     using value_type = T;
+ 
+     NoDefaultConsAlloc(int) noexcept { }
+ 
+     template<typename U>
+       NoDefaultConsAlloc(const NoDefaultConsAlloc<U>&) { }
+ 
+     T *allocate(std::size_t n)
+     { return std::allocator<T>().allocate(n); }
+ 
+     void deallocate(T *p, std::size_t n)
+     { std::allocator<T>().deallocate(p, n); }
+ 
+     bool operator==(const NoDefaultConsAlloc&) const { return true; }
+     bool operator!=(const NoDefaultConsAlloc&) const { return false; }
+   };
+ 
+ using Set = std::unordered_set<int, std::hash<int>, std::equal_to<int>,
+ 			       NoDefaultConsAlloc<int>>;
+ static_assert( ! std::is_default_constructible<Set>{}, "PR libstdc++/100863" );
+ 
+ struct Hash : std::hash<int> { Hash(int) { } };
+ using Set2 = std::unordered_set<int, Hash>;
+ static_assert( ! std::is_default_constructible<Set2>{}, "PR libstdc++/100863" );
+ 
+ struct Equal : std::equal_to<int> { Equal(int) { } };
+ using Set3 = std::unordered_set<int, std::hash<int>, Equal>;
+ static_assert( ! std::is_default_constructible<Set3>{}, "PR libstdc++/100863" );
+ 
+ // PR libstdc++/101583
+ // verify non-default ctors can still be used
+ using Set4 = std::unordered_set<int, Hash, Equal, NoDefaultConsAlloc<int>>;
+ Hash h(1);
+ Equal eq(1);
+ Set4::allocator_type a(1);
+ Set4 s{1, h, eq, a};
+ Set4 s2{s.begin(), s.end(), s.size(), h, eq, a};
+ Set4 s3{{1, 2, 3}, 3, h, eq, a};
+ Set4 s4{s};
+ Set4 s5{s, a};
+ Set4 s6{std::move(s)};
+ Set4 s7{std::move(s6), a};
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,68 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do compile { target c++11 } }
+ 
+ #include <unordered_set>
+ 
+ using type1 = std::unordered_set<int>;
+ 
+ static_assert(std::is_nothrow_default_constructible<type1>::value,
+ 	      "noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_hash
+ {
+   not_noexcept_dflt_cons_hash() /* noexcept */;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_set<int, not_noexcept_dflt_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type2>::value,
+ 	       "not noexcept default constructible");
+ 
+ struct not_noexcept_dflt_cons_equal_to
+ {
+   not_noexcept_dflt_cons_equal_to() /* noexcept */;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_set<int, std::hash<int>,
+ 				  not_noexcept_dflt_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_default_constructible<type3>::value,
+ 	       "not noexcept default constructible");
+ 
+ template<typename _Tp>
+   struct not_noexcept_dflt_cons_alloc : std::allocator<_Tp>
+   {
+     not_noexcept_dflt_cons_alloc() /* noexcept */;
+ 
+     template<typename _Tp1>
+       struct rebind
+       { typedef not_noexcept_dflt_cons_alloc<_Tp1> other; };
+   };
+ 
+ using type4 = std::unordered_set<int, std::hash<int>, std::equal_to<int>,
+ 				 not_noexcept_dflt_cons_alloc<int>>;
+ 
+ static_assert(!std::is_nothrow_default_constructible<type4>::value,
+ 	      "not noexcept default constructible");
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,65 ----
+ // { dg-do compile { target c++11 } }
+ 
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ //
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ //
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <unordered_set>
+ 
+ using type1 = std::unordered_set<int>;
+ 
+ static_assert( std::is_nothrow_move_constructible<type1>::value,
+ 	       "noexcept move constructor" );
+ static_assert( std::is_nothrow_constructible<type1,
+ 	       type1&&, const typename type1::allocator_type&>::value,
+ 	       "noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_hash
+ {
+   not_noexcept_copy_cons_hash() noexcept;
+   not_noexcept_copy_cons_hash(const not_noexcept_copy_cons_hash&) /* noexcept */;
+   not_noexcept_copy_cons_hash(not_noexcept_copy_cons_hash&&) noexcept;
+ 
+   std::size_t
+   operator()(int) const noexcept;
+ };
+ 
+ using type2 = std::unordered_set<int, not_noexcept_copy_cons_hash>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type2>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type2, type2&&,
+ 	       const typename type2::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
+ 
+ struct not_noexcept_copy_cons_equal_to
+ {
+   not_noexcept_copy_cons_equal_to() noexcept;
+   not_noexcept_copy_cons_equal_to(const not_noexcept_copy_cons_equal_to&) /* noexcept */;
+   not_noexcept_copy_cons_equal_to(not_noexcept_copy_cons_equal_to&&) noexcept;
+ 
+   bool
+   operator()(int, int) const noexcept;
+ };
+ 
+ using type3 = std::unordered_set<int, std::hash<int>,
+ 				  not_noexcept_copy_cons_equal_to>;
+ 
+ static_assert( !std::is_nothrow_move_constructible<type3>::value,
+ 	       "not noexcept move constructor" );
+ static_assert( !std::is_nothrow_constructible<type3, type3&&,
+ 	       const typename type3::allocator_type&>::value,
+ 	       "not noexcept move constructor with allocator" );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc	Tue Jun 28 08:54:35 2022
*************** struct J
*** 141,143 ****
--- 141,169 ----
  // iterator_traits<J> matches constrained specialization in the library,
  // so use its value_type.
  static_assert( check_alias<J, int> );
+ 
+ struct I2
+ {
+   using element_type = int;
+ };
+ // iterator_traits<I2> is not specialized, and no standard specialization
+ // matches, so use indirectly_readable_traits.
+ static_assert( check_alias<I2, std::indirectly_readable_traits<I2>::value_type> );
+ 
+ // LWG 3446
+ struct I3
+ {
+   using value_type = long;
+   using element_type = const long;
+ };
+ // iterator_traits<I3> is not specialized, and no standard specialization
+ // matches, so use indirectly_readable_traits.
+ static_assert( check_alias<I3, std::indirectly_readable_traits<I3>::value_type> );
+ 
+ // Correction to LWG 3446
+ struct I4
+ {
+   using value_type = int;
+   using element_type = long;
+ };
+ static_assert( ! has_alias<I4> );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc	Tue Jun 28 08:54:35 2022
*************** namespace std
*** 31,56 ****
  
    namespace ranges
    {
!     template<input_or_output_iterator I, sentinel_for<I> S>
!       constexpr iter_difference_t<I> distance(I first, S last);
!     template<range R>
!       constexpr range_difference_t<R> distance(R&& r);
! 
!     template<input_or_output_iterator I>
!       constexpr I next(I x);
!     template<input_or_output_iterator I>
!       constexpr I next(I x, iter_difference_t<I> n);
!     template<input_or_output_iterator I, sentinel_for<I> S>
!       constexpr I next(I x, S bound);
!     template<input_or_output_iterator I, sentinel_for<I> S>
!       constexpr I next(I x, iter_difference_t<I> n, S bound);
! 
!     template<bidirectional_iterator I>
!       constexpr I prev(I x);
!     template<bidirectional_iterator I>
!       constexpr I prev(I x, iter_difference_t<I> n);
!     template<bidirectional_iterator I>
!       constexpr I prev(I x, iter_difference_t<I> n, I bound);
    }
  
    template<semiregular S> class move_sentinel;
--- 31,41 ----
  
    namespace ranges
    {
!     // These are function objects of unspecified type.
!     auto& _distance = distance;
!     auto& _advance = advance;
!     auto& _next = next;
!     auto& _prev = prev;
    }
  
    template<semiregular S> class move_sentinel;
*************** namespace std
*** 73,78 ****
--- 58,64 ----
      struct incrementable_traits<counted_iterator<I>>;
  
    template<input_iterator I>
+     requires same_as<__detail::__iter_traits<I>, iterator_traits<I>>
      struct iterator_traits<counted_iterator<I>>;
  
    struct unreachable_sentinel_t;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,37 ----
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do compile { target c++2a } }
+ 
+ // Verify LWG 3391 changes.
+ 
+ #include <iterator>
+ #include <ranges>
+ 
+ #include <testsuite_iterators.h>
+ 
+ using __gnu_test::test_range;
+ using __gnu_test::input_iterator_wrapper_nocopy;
+ 
+ void
+ test01()
+ {
+   extern test_range<int, input_iterator_wrapper_nocopy> rx;
+   auto v = rx | std::views::take(5);
+   std::ranges::begin(v) != std::ranges::end(v);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc	Tue Jun 28 08:54:35 2022
*************** template<> struct std::iterator_traits<m
*** 43,49 ****
  static_assert(std::input_iterator<move_only_iterator>);
  
  template<typename T>
!   concept has_member_base = requires (T t) { std::forward<T>(t).base(); };
  
  using move_only_move_iterator = std::move_iterator<move_only_iterator>;
  
--- 43,55 ----
  static_assert(std::input_iterator<move_only_iterator>);
  
  template<typename T>
!   concept has_member_base = requires (T t) {
!     // LWG 3391 made the const& overload of move_iterator::base()
!     // unconstrained and return a const reference.  So rather than checking
!     // whether base() is valid (which is now trivially true in an unevaluated
!     // context), the below now checks whether decay-copying base() is valid.
!     [](auto){}(std::forward<T>(t).base());
!   };
  
  using move_only_move_iterator = std::move_iterator<move_only_iterator>;
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,128 ----
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ 
+ // PR libstdc++/100768 - Range iterator operations should be function objects
+ 
+ #include <iterator>
+ #include <ranges>
+ 
+ namespace ns1
+ {
+   struct R { };
+   void check_adl(R) { }
+ }
+ 
+ namespace ns2
+ {
+   using ns1::R;
+ 
+   struct A { };
+ 
+   template<typename I>
+     R advance(I, ...) { return R{}; }
+ 
+   template<typename I>
+     R distance(I, ...) { return R{}; }
+ 
+   template<typename I>
+     R next(I, ...) { return R{}; }
+ 
+   template<typename I>
+     R prev(I, ...) { return R{}; }
+ }
+ 
+ template<typename T, typename U> struct associated { };
+ 
+ void
+ test02()
+ {
+   // This type has both ns2 and std::ranges as associated namespaces.
+   using X = associated<ns2::A, std::ranges::dangling>;
+ 
+   X range[1];
+   X* iter = range;
+   X* const sentinel = iter + 1;
+ 
+   // [range.iter.op.general] p2 says: "The function templates defined in
+   // [range.iter.ops] are not found by argument-dependent name lookup."
+   //
+   // If we do not meet that requirement then the following will find those
+   // function templates (because std::ranges is an associated namespace),
+   // and the calls to check_adl will be ill-formed.
+   check_adl( advance(iter, 1) );
+   check_adl( advance(iter, 1, sentinel) );
+   check_adl( distance(iter, sentinel) );
+   check_adl( distance(range) );
+   check_adl( next(iter) );
+   check_adl( next(iter, 1) );
+   check_adl( next(iter, sentinel) );
+   check_adl( next(iter, 1, sentinel) );
+   check_adl( prev(iter) );
+   check_adl( prev(iter, 1) );
+   check_adl( prev(iter, 1, sentinel) );
+ }
+ 
+ namespace ns3
+ {
+   struct A { };
+ 
+   void advance(A*, int) = delete;
+   void advance(A*, int, A*) = delete;
+ 
+   void distance(A*, A*) = delete;
+   void distance(A(&)[1]) = delete;
+ 
+   void next(A*) = delete;
+   void next(A*, int) = delete;
+   void next(A*, A*) = delete;
+   void next(A*, int, A*) = delete;
+ 
+   void prev(A*) = delete;
+   void prev(A*, int) = delete;
+   void prev(A*, int, A*) = delete;
+ }
+ 
+ void
+ test01()
+ {
+   ns3::A range[1];
+   ns3::A* iter = range;
+   ns3::A* const sentinel = iter + 1;
+ 
+   // [range.iter.op.general] p2 also says: "When found by unqualified name
+   // lookup for the postfix-expression in a function call, they inhibit
+   // argument-dependent name lookup."
+   //
+   // If we do not meet that requirement then the following will find the
+   // deleted overloads in namespace ns3 (because it is an associated namespace
+   // and those functions are exact matches for the arguments).
+   using namespace std::ranges;
+   advance(iter, 1);
+   advance(iter, 3, sentinel);
+   distance(iter, sentinel);
+   distance(range);
+   next(iter);
+   next(iter, -1);
+   next(iter, sentinel);
+   next(iter, 5, sentinel);
+   prev(iter);
+   prev(iter, 0);
+   prev(iter, 0, sentinel);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc	Tue Jun 28 08:54:35 2022
*************** test01()
*** 49,58 ****
    std::ranges::advance(iter, r.begin());
    VERIFY( iter == r.begin() );
  
!   std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   std::ranges::advance(iter, -222, r.begin());
    VERIFY( iter == r.begin() );
  }
  
  void
--- 49,60 ----
    std::ranges::advance(iter, r.begin());
    VERIFY( iter == r.begin() );
  
!   auto diff = std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   VERIFY( diff == 97 );
!   diff = std::ranges::advance(iter, -222, r.begin());
    VERIFY( iter == r.begin() );
+   VERIFY( diff == -220 );
  }
  
  void
*************** test02()
*** 77,86 ****
    std::ranges::advance(iter, r.begin());
    VERIFY( iter == r.begin() );
  
!   std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   std::ranges::advance(iter, -222, r.begin());
    VERIFY( iter == r.begin() );
  }
  
  void
--- 79,90 ----
    std::ranges::advance(iter, r.begin());
    VERIFY( iter == r.begin() );
  
!   auto diff = std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   VERIFY( diff == 97 );
!   diff = std::ranges::advance(iter, -222, r.begin());
    VERIFY( iter == r.begin() );
+   VERIFY( diff == -220 );
  }
  
  void
*************** test03()
*** 108,122 ****
    std::ranges::advance(iter, r.end());
    VERIFY( iter == r.end() );
  
!   std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
    iter = r.begin();
!   std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
  }
  
  void
--- 112,130 ----
    std::ranges::advance(iter, r.end());
    VERIFY( iter == r.end() );
  
!   auto diff = std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   VERIFY( diff == 99 ); // PR libstdc++/100833
!   diff = std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
+   VERIFY( diff == 99 );
    iter = r.begin();
!   diff = std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
!   VERIFY( diff == 97 );
!   diff = std::ranges::advance(iter, 99, r.end());
    VERIFY( iter == r.end() );
+   VERIFY( diff == 99 );
  }
  
  void
*************** test04()
*** 145,161 ****
    std::ranges::advance(iter, r2.end());
    VERIFY( iter == r2.end() );
  
!   std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
!   std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
  
    test_range<int, input_iterator_wrapper> r3(a);
    iter = r3.begin();
!   std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
!   std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
  }
  
  void
--- 153,173 ----
    std::ranges::advance(iter, r2.end());
    VERIFY( iter == r2.end() );
  
!   auto diff = std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
!   VERIFY( diff == 99 );
!   diff = std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
+   VERIFY( diff == 99 );
  
    test_range<int, input_iterator_wrapper> r3(a);
    iter = r3.begin();
!   diff = std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
!   VERIFY( diff == 97 );
!   diff = std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
+   VERIFY( diff == 99 );
  }
  
  void
*************** test05()
*** 180,196 ****
    std::ranges::advance(iter, r2.end());
    VERIFY( iter == r2.end() );
  
!   std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
!   std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
  
    test_range<int, output_iterator_wrapper> r3(a);
    iter = r3.begin();
!   std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
!   std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
  }
  
  int
--- 192,212 ----
    std::ranges::advance(iter, r2.end());
    VERIFY( iter == r2.end() );
  
!   auto diff = std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
!   VERIFY( diff == 99 );
!   diff = std::ranges::advance(iter, 99, r2.end());
    VERIFY( iter == r2.end() );
+   VERIFY( diff == 99 );
  
    test_range<int, output_iterator_wrapper> r3(a);
    iter = r3.begin();
!   diff = std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
!   VERIFY( diff == 97 );
!   diff = std::ranges::advance(iter, 99, r3.end());
    VERIFY( iter == r3.end() );
+   VERIFY( diff == 99 );
  }
  
  int
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,37 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ 
+ // Public domain testcase from Casey Carter, send to LWG list on 2021-07-24.
+ //
+ // Here's a compile-only test case for which n is INT_MIN, which will overflow
+ // if simply negated to get |n|: https://godbolt.org/z/M7Wz1nW58.
+ 
+ #include <cassert>
+ #include <iterator>
+ #include <limits>
+ 
+ struct I {
+     using difference_type = int;
+     using value_type = int;
+ 
+     int x;
+ 
+     constexpr int operator*() const { return x; }
+     constexpr I& operator++() { ++x; return *this; }
+     constexpr I operator++(int) { ++x; return {x - 1}; }
+     constexpr bool operator==(const I&) const = default;
+ 
+     constexpr int operator-(const I& that) const { return x - that.x; }
+ 
+     constexpr I& operator--() { --x; return *this; }
+     constexpr I operator--(int) { --x; return {x - 1}; }
+ };
+ static_assert(std::bidirectional_iterator<I>);
+ static_assert(std::sized_sentinel_for<I, I>);
+ 
+ constexpr bool test() {
+     using L = std::numeric_limits<int>;
+     I i{-2};
+     return std::ranges::advance(i, L::min(), I{-4}) == L::min() + 2;
+ }
+ static_assert(test());
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,37 ----
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=c++2a" }
+ // { dg-do compile { target c++2a } }
+ 
+ // PR libstdc++/100639
+ 
+ #include <iterator>
+ #include <ranges>
+ 
+ void
+ test01()
+ {
+   using iter = std::ranges::iterator_t<std::ranges::iota_view<long long>>;
+   using riter = std::reverse_iterator<iter>;
+   static_assert(std::same_as<std::iter_reference_t<iter>,
+ 			     std::iter_reference_t<riter>>);
+   static_assert(std::same_as<std::iter_value_t<iter>,
+ 			     std::iter_value_t<riter>>);
+   static_assert(std::same_as<std::iter_difference_t<iter>,
+ 			     std::iter_difference_t<riter>>);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc	Tue Jun 28 08:54:35 2022
*************** void test02()
*** 27,33 ****
    iterator_type it01;
    iterator_type it02;
  
!   // Sanity check non-member operators and functions can be instantiated. 
    it01 == it02;
    it01 != it02;
    it01 < it02;
--- 27,33 ----
    iterator_type it01;
    iterator_type it02;
  
!   // Sanity check non-member operators and functions can be instantiated.
    it01 == it02;
    it01 != it02;
    it01 < it02;
*************** void test02()
*** 35,45 ****
    it01 > it02;
    it01 >= it02;
    it01 - it02;
!   5 + it02;
  }
  
! int main() 
! { 
    test02();
    return 0;
  }
--- 35,45 ----
    it01 > it02;
    it01 >= it02;
    it01 - it02;
!   0 + it02;
  }
  
! int main()
! {
    test02();
    return 0;
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc	Tue Jun 28 08:54:35 2022
***************
*** 26,31 ****
--- 26,32 ----
  using __gnu_test::test_container;
  using __gnu_test::test_range;
  using __gnu_test::input_iterator_wrapper;
+ using __gnu_test::input_iterator_wrapper_nocopy;
  using __gnu_test::output_iterator_wrapper;
  using __gnu_test::forward_iterator_wrapper;
  
*************** test05()
*** 214,219 ****
--- 215,231 ----
    return ok;
  }
  
+ void
+ test06()
+ {
+   // PR libstdc++/101599
+   int x[] = {1,2,3};
+   test_range<int, input_iterator_wrapper_nocopy> rx(x);
+   std::vector<int> v(4, 0);
+   ranges::copy(rx, v.begin());
+   VERIFY( ranges::equal(v, (int[]){1,2,3,0}) );
+ }
+ 
  int
  main()
  {
*************** main()
*** 222,225 ****
--- 234,238 ----
    static_assert(test03());
    test04();
    static_assert(test05());
+   test06();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,36 ----
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-D_GLIBCXX_DEBUG" }
+ // { dg-do run }
+ 
+ #include <algorithm>
+ #include <set>
+ #include <vector>
+ 
+ // PR libstdc++/99402
+ 
+ using namespace std;
+ 
+ int main()
+ {
+     int two[] = { 0, 1 };
+     // any container with non-random access iterators:
+     const set<int> source(two, two + 2);
+     vector<int> dest(1);
+     copy(source.begin(), ++source.begin(), dest.begin());
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc	Tue Jun 28 08:54:35 2022
*************** test01()
*** 35,40 ****
    static_assert(std::is_trivial<trivial_rvalstruct>::value, "");
  
    trivial_rvalstruct a[1], b[1];
!   copy_backward(std::make_move_iterator(a), std::make_move_iterator(a+1), b);
  }
  // { dg-prune-output "use of deleted" }
--- 35,40 ----
    static_assert(std::is_trivial<trivial_rvalstruct>::value, "");
  
    trivial_rvalstruct a[1], b[1];
!   copy_backward(std::make_move_iterator(a), std::make_move_iterator(a+1), b+1);
  }
  // { dg-prune-output "use of deleted" }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc	Tue Jun 28 08:54:35 2022
*************** test01()
*** 73,83 ****
      }
  }
  
  constexpr bool
  test02()
  {
    bool ok = true;
!   int x[6] = { 1, 2, 3, 4, 5, 6 };
    const int y[6] = { 1, 2, 3, 4, 5, 6 };
    const int z[6] = { 17, 17, 17, 4, 5, 6 };
  
--- 73,84 ----
      }
  }
  
+ template<typename T>
  constexpr bool
  test02()
  {
    bool ok = true;
!   T x[6] = { 1, 2, 3, 4, 5, 6 };
    const int y[6] = { 1, 2, 3, 4, 5, 6 };
    const int z[6] = { 17, 17, 17, 4, 5, 6 };
  
*************** int
*** 94,98 ****
  main()
  {
    test01();
!   static_assert(test02());
  }
--- 95,100 ----
  main()
  {
    test01();
!   static_assert(test02<int>());
!   static_assert(test02<unsigned char>()); // PR libstdc++/101608
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc	Tue Jun 28 08:54:35 2022
***************
*** 20,25 ****
--- 20,26 ----
  // 25.2.12 [alg.is_permutation] Is permutation
  
  #include <algorithm>
+ #include <iterator>
  #include <functional>
  #include <testsuite_hooks.h>
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc	Tue Jun 28 08:54:35 2022
***************
*** 19,24 ****
--- 19,26 ----
  // { dg-do run { target c++2a } }
  
  #include <algorithm>
+ #include <string>
+ #include <vector>
  #include <testsuite_hooks.h>
  #include <testsuite_iterators.h>
  
*************** test03()
*** 89,98 ****
--- 91,140 ----
  	  == res_t(1,4) );
  }
  
+ void
+ test04()
+ {
+   // Verify we perform at most 3*N/2 applications of the comparison predicate.
+   static int counter;
+   struct counted_less
+   { bool operator()(int a, int b) { ++counter; return a < b; } };
+ 
+   ranges::minmax({1,2}, counted_less{});
+   VERIFY( counter == 1 );
+ 
+   counter = 0;
+   ranges::minmax({1,2,3}, counted_less{});
+   VERIFY( counter == 3 );
+ 
+   counter = 0;
+   ranges::minmax({1,2,3,4,5,6,7,8,9,10}, counted_less{});
+   VERIFY( counter <= 15 );
+ 
+   counter = 0;
+   ranges::minmax({10,9,8,7,6,5,4,3,2,1}, counted_less{});
+   VERIFY( counter <= 15 );
+ }
+ 
+ void
+ test05()
+ {
+   // PR libstdc++/100387
+   using namespace std::literals::string_literals;
+   auto comp = [](const auto& a, const auto& b) {
+     return a.size() == b.size() ? a.front() < b.front() : a.size() > b.size();
+   };
+   auto result = ranges::minmax({"b"s, "a"s}, comp);
+   VERIFY( result.min == "a"s && result.max == "b"s );
+   result = ranges::minmax({"c"s, "b"s, "a"s}, comp);
+   VERIFY( result.min == "a"s && result.max == "c"s );
+ }
+ 
  int
  main()
  {
    test01();
    test02();
    test03();
+   test04();
+   test05();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc	Tue Jun 28 08:54:35 2022
*************** test01()
*** 61,68 ****
--- 61,95 ----
    static_assert(ranges::minmax_element(y, y+3, {}, &X::i).max->j == 3);
  }
  
+ void
+ test02()
+ {
+   // Verify we perform at most 3*N/2 applications of the comparison predicate.
+   static int counter;
+   struct counted_less
+   { bool operator()(int a, int b) { ++counter; return a < b; } };
+ 
+   int x[] = {1,2,3,4,5,6,7,8,9,10};
+   ranges::minmax_element(x, x+2, counted_less{});
+   VERIFY( counter == 1 );
+ 
+   counter = 0;
+   ranges::minmax_element(x, x+3, counted_less{});
+   VERIFY( counter == 3 );
+ 
+   counter = 0;
+   ranges::minmax_element(x, counted_less{});
+   VERIFY( counter <= 15 );
+ 
+   ranges::reverse(x);
+   counter = 0;
+   ranges::minmax_element(x, counted_less{});
+   VERIFY( counter <= 15 );
+ }
+ 
  int
  main()
  {
    test01();
+   test02();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,19 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ 
+ #include <algorithm>
+ #include <span>
+ 
+ constexpr bool
+ test01()
+ {
+   // PR libstdc++/102358
+   int x[2] = {1,2}, y[2];
+   std::span in(x), out(y);
+   std::move(std::move_iterator(in.begin()), std::move_iterator(in.end()),
+ 	    out.begin());
+   return std::equal(std::move_iterator(in.begin()), std::move_iterator(in.end()),
+ 		    std::move_iterator(out.begin()));
+ }
+ 
+ static_assert(test01());
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move/constrained.cc	Tue Jun 28 08:54:35 2022
***************
*** 26,31 ****
--- 26,32 ----
  using __gnu_test::test_container;
  using __gnu_test::test_range;
  using __gnu_test::input_iterator_wrapper;
+ using __gnu_test::input_iterator_wrapper_nocopy;
  using __gnu_test::output_iterator_wrapper;
  using __gnu_test::forward_iterator_wrapper;
  
*************** test04()
*** 193,198 ****
--- 194,210 ----
    VERIFY( ranges::count(y, 0, &X::moved) == 6 );
  }
  
+ void
+ test05()
+ {
+   // PR libstdc++/101599
+   int x[] = {1,2,3};
+   test_range<int, input_iterator_wrapper_nocopy> rx(x);
+   std::vector<int> v(4, 0);
+   ranges::move(rx, v.begin());
+   VERIFY( ranges::equal(v, (int[]){1,2,3,0}) );
+ }
+ 
  int
  main()
  {
*************** main()
*** 200,203 ****
--- 212,216 ----
    test02();
    static_assert(test03());
    test04();
+   test05();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc	Tue Jun 28 08:54:35 2022
*************** test01()
*** 35,40 ****
    static_assert(std::is_trivial<trivial_rvalstruct>::value, "");
  
    trivial_rvalstruct a[1], b[1];
!   std::move_backward(a, a + 1, b);
  }
  // { dg-prune-output "use of deleted" }
--- 35,40 ----
    static_assert(std::is_trivial<trivial_rvalstruct>::value, "");
  
    trivial_rvalstruct a[1], b[1];
!   std::move_backward(a, a + 1, b + 1);
  }
  // { dg-prune-output "use of deleted" }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc	Tue Jun 28 08:54:35 2022
*************** void
*** 35,39 ****
  test01()
  {
    X a[2], b[2];
!   std::move_backward(std::begin(a), std::end(a), std::begin(b));
  }
--- 35,39 ----
  test01()
  {
    X a[2], b[2];
!   std::move_backward(std::begin(a), std::end(a), std::end(b));
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/find_end.cc	Tue Jun 28 08:54:35 2022
***************
*** 1,7 ****
  // -*- C++ -*-
  // { dg-options "-std=gnu++17 -ltbb" }
  // { dg-do run { target c++17 } }
! // { dg-timeout-factor 3 }
  // { dg-require-effective-target tbb-backend }
  
  //===-- find_end.pass.cpp -------------------------------------------------===//
--- 1,7 ----
  // -*- C++ -*-
  // { dg-options "-std=gnu++17 -ltbb" }
  // { dg-do run { target c++17 } }
! // { dg-timeout-factor 4 }
  // { dg-require-effective-target tbb-backend }
  
  //===-- find_end.pass.cpp -------------------------------------------------===//
*************** test(const std::size_t bits)
*** 78,85 ****
  
      const std::size_t max_n1 = 1000;
      const std::size_t max_n2 = (max_n1 * 10) / 8;
!     Sequence<T> in(max_n1, [max_n1, bits](std::size_t k) { return T(2 * HashBits(max_n1, bits - 1) ^ 1); });
!     Sequence<T> sub(max_n2, [max_n1, bits](std::size_t k) { return T(2 * HashBits(max_n1, bits - 1)); });
      for (std::size_t n1 = 0; n1 <= max_n1; n1 = n1 <= 16 ? n1 + 1 : size_t(3.1415 * n1))
      {
          std::size_t sub_n[] = {0, 1, 3, n1, (n1 * 10) / 8};
--- 78,85 ----
  
      const std::size_t max_n1 = 1000;
      const std::size_t max_n2 = (max_n1 * 10) / 8;
!     Sequence<T> in(max_n1, [max_n1, bits](std::size_t) { return T(2 * HashBits(max_n1, bits - 1) ^ 1); });
!     Sequence<T> sub(max_n2, [max_n1, bits](std::size_t) { return T(2 * HashBits(max_n1, bits - 1)); });
      for (std::size_t n1 = 0; n1 <= max_n1; n1 = n1 <= 16 ? n1 + 1 : size_t(3.1415 * n1))
      {
          std::size_t sub_n[] = {0, 1, 3, n1, (n1 * 10) / 8};
*************** test(const std::size_t bits)
*** 89,95 ****
              for (auto r : res)
              {
                  std::size_t i = r, isub = 0;
!                 for (; i < n1 & isub < n2; ++i, ++isub)
                      in[i] = sub[isub];
                  invoke_on_all_policies(test_one_policy(), in.begin(), in.begin() + n1, sub.begin(), sub.begin() + n2,
                                         std::equal_to<T>());
--- 89,95 ----
              for (auto r : res)
              {
                  std::size_t i = r, isub = 0;
!                 for (; i < n1 && isub < n2; ++i, ++isub)
                      in[i] = sub[isub];
                  invoke_on_all_policies(test_one_policy(), in.begin(), in.begin() + n1, sub.begin(), sub.begin() + n2,
                                         std::equal_to<T>());
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/25_algorithms/pstl/alg_nonmodifying/search_n.cc	Tue Jun 28 08:54:35 2022
*************** test()
*** 79,85 ****
              {
                  Sequence<T> in(n1, [n1](std::size_t k) { return T(0); });
                  std::size_t i = r, isub = 0;
!                 for (; i < n1 & isub < n2; ++i, ++isub)
                      in[i] = value;
  
                  invoke_on_all_policies(test_one_policy(), in.begin(), in.begin() + n1, n2, value, std::equal_to<T>());
--- 79,85 ----
              {
                  Sequence<T> in(n1, [n1](std::size_t k) { return T(0); });
                  std::size_t i = r, isub = 0;
!                 for (; i < n1 && isub < n2; ++i, ++isub)
                      in[i] = value;
  
                  invoke_on_all_policies(test_one_policy(), in.begin(), in.begin() + n1, n2, value, std::equal_to<T>());
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp/1.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp/1.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp/1.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp/1.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,124 ----
+ // Copyright (C) 2019-2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do run { target c++2a } }
+ 
+ #include <cmath>
+ 
+ #ifndef __cpp_lib_interpolate
+ # error "Feature-test macro for midpoint and lerp missing"
+ #elif __cpp_lib_interpolate != 201902L
+ # error "Feature-test macro for midpoint and lerp has wrong value"
+ #endif
+ 
+ #include <limits>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   using lim = std::numeric_limits<double>;
+ 
+   VERIFY( std::lerp(0.0, 1.0, 0.0) == 0.0 );
+   VERIFY( std::lerp(-2.0, 10.0, 1.0) == 10.0 );
+   VERIFY( std::lerp(2.0, -10.0, 1.0) == -10.0 );
+   VERIFY( std::lerp(-8.0, 10.0, 0.5) == 1.0 );
+   VERIFY( std::lerp(-10.0, 10.0, 0.25) == -5.0 );
+   VERIFY( std::lerp(10.0, -10.0, 0.375) == 2.5 );
+ 
+   VERIFY( std::lerp(2.0, 2.0, 200.0) == 2.0 );
+   VERIFY( std::lerp(2.0, 4.0, 200.0) == 402.0 );
+   VERIFY( std::lerp(2.0, 4.0, -20.0) == -38.0 );
+ 
+   VERIFY( std::lerp(1.1, 30201.1, 0) == 1.1 );
+   VERIFY( std::lerp(1.1, 30201.1, 1) == 30201.1 );
+   VERIFY( std::lerp(1.1, -30201.1, 0) == 1.1 );
+   VERIFY( std::lerp(1.1, -30201.1, 1) == -30201.1 );
+ 
+   VERIFY( std::lerp(1.1, 1.1, lim::infinity()) == 1.1 );
+   VERIFY( std::isfinite(std::lerp(1.1, 1.1+lim::min(), lim::max())) );
+ 
+   VERIFY( std::lerp(lim::max(), lim::max(), 1) == lim::max() );
+   VERIFY( std::lerp(lim::max(), lim::max()/9e9, 0) == lim::max() );
+   VERIFY( std::lerp(lim::max()/9e9, lim::max(), 1) == lim::max() );
+ }
+ 
+ void
+ test02()
+ {
+   using lim = std::numeric_limits<float>;
+ 
+   VERIFY( std::lerp(0.0f, 1.0f, 0.0f) == 0.0f );
+   VERIFY( std::lerp(-2.0f, 10.0f, 1.0f) == 10.0f );
+   VERIFY( std::lerp(2.0f, -10.0f, 1.0f) == -10.0f );
+   VERIFY( std::lerp(-8.0f, 10.0f, 0.5f) == 1.0f );
+   VERIFY( std::lerp(-10.0f, 10.0f, 0.25f) == -5.0f );
+   VERIFY( std::lerp(10.0f, -10.0f, 0.375f) == 2.5f );
+ 
+   VERIFY( std::lerp(2.0f, 2.0f, 200.0f) == 2.0f );
+   VERIFY( std::lerp(2.0f, 4.0f, 200.0f) == 402.0f );
+   VERIFY( std::lerp(2.0f, 4.0f, -20.0f) == -38.0f );
+ 
+   VERIFY( std::lerp(1.1f, 30201.1f, 0) == 1.1f );
+   VERIFY( std::lerp(1.1f, 30201.1f, 1) == 30201.1f );
+   VERIFY( std::lerp(1.1f, -30201.1f, 0) == 1.1f );
+   VERIFY( std::lerp(1.1f, -30201.1f, 1) == -30201.1f );
+ 
+   VERIFY( std::lerp(1.1f, 1.1f, lim::infinity()) == 1.1f );
+   VERIFY( std::isfinite(std::lerp(1.1f, 1.1f+lim::min(), lim::max())) );
+ 
+   VERIFY( std::lerp(lim::max(), lim::max(), 1) == lim::max() );
+   VERIFY( std::lerp(lim::max(), lim::max()/9e9f, 0) == lim::max() );
+   VERIFY( std::lerp(lim::max()/9e9f, lim::max(), 1) == lim::max() );
+ }
+ 
+ void
+ test03()
+ {
+   using lim = std::numeric_limits<long double>;
+ 
+   VERIFY( std::lerp(0.0l, 1.0l, 0.0l) == 0.0l );
+   VERIFY( std::lerp(-2.0l, 10.0l, 1.0l) == 10.0l );
+   VERIFY( std::lerp(2.0l, -10.0l, 1.0l) == -10.0l );
+   VERIFY( std::lerp(-8.0l, 10.0l, 0.5l) == 1.0l );
+   VERIFY( std::lerp(-10.0l, 10.0l, 0.25l) == -5.0l );
+   VERIFY( std::lerp(10.0l, -10.0l, 0.375l) == 2.5l );
+ 
+   VERIFY( std::lerp(2.0l, 2.0l, 200.0l) == 2.0l );
+   VERIFY( std::lerp(2.0l, 4.0l, 200.0l) == 402.0l );
+   VERIFY( std::lerp(2.0l, 4.0l, -20.0l) == -38.0l );
+ 
+   VERIFY( std::lerp(1.1l, 30201.1l, 0) == 1.1l );
+   VERIFY( std::lerp(1.1l, 30201.1l, 1) == 30201.1l );
+   VERIFY( std::lerp(1.1l, -30201.1l, 0) == 1.1l );
+   VERIFY( std::lerp(1.1l, -30201.1l, 1) == -30201.1l );
+ 
+   VERIFY( std::lerp(1.1l, 1.1l, lim::infinity()) == 1.1l );
+   VERIFY( std::isfinite(std::lerp(1.1l, 1.1l+lim::min(), lim::max())) );
+ 
+   VERIFY( std::lerp(lim::max(), lim::max(), 1) == lim::max() );
+   VERIFY( std::lerp(lim::max(), lim::max()/9e9l, 0) == lim::max() );
+   VERIFY( std::lerp(lim::max()/9e9l, lim::max(), 1) == lim::max() );
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+   test03();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,21 ----
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do compile { target c++2a } }
+ 
+ #include <cmath>
+ 
+ // Fails template argument deduction unless both arguments are the same type.
+ template<typename T>
+ constexpr bool
+ eq(T result, T expected) { return result == expected; }
+ 
+ static_assert( eq( std::lerp(-10.0, 10.0, 0.25), -5.0 ) );
+ static_assert( eq( std::lerp(2.0f, 2.0f, 200.0f), 2.0f ) );
+ static_assert( eq( std::lerp(2.0L, 4.0L, 200.0L), 402.0L ) );
+ // at least one type is long double, so result is long double
+ static_assert( eq( std::lerp(2.0L, 4.0f, -20.0), -38.0L ) );
+ // at least one type is double, so result is double:
+ static_assert( eq( std::lerp(-8.0f, 10.0, 0.5f), 1.0 ) );
+ // int promotes to double, so result is double
+ static_assert( eq( std::lerp(0, 1, 0), 0.0 ) );
+ // int promotes to double, so result is double
+ static_assert( eq( std::lerp(2.0f, -10.0f, 1), -10.0 ) );
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp/version.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp/version.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp/version.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp/version.cc	Tue Jun 28 08:54:35 2022
***************
*** 0 ****
--- 1,10 ----
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do preprocess { target c++2a } }
+ 
+ #include <version>
+ 
+ #ifndef __cpp_lib_interpolate
+ # error "Feature-test macro for midpoint and lerp missing in <version>"
+ #elif __cpp_lib_interpolate != 201902L
+ # error "Feature-test macro for midpoint and lerp has wrong value in <version>"
+ #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/lerp.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/lerp.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,124 ****
- // Copyright (C) 2019-2020 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your option)
- // any later version.
- 
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- // GNU General Public License for more details.
- 
- // You should have received a copy of the GNU General Public License along
- // with this library; see the file COPYING3.  If not see
- // <http://www.gnu.org/licenses/>.
- 
- // { dg-options "-std=gnu++2a" }
- // { dg-do run { target c++2a } }
- 
- #include <cmath>
- 
- #ifndef __cpp_lib_interpolate
- # error "Feature-test macro for midpoint and lerp missing"
- #elif __cpp_lib_interpolate != 201902L
- # error "Feature-test macro for midpoint and lerp has wrong value"
- #endif
- 
- #include <limits>
- #include <testsuite_hooks.h>
- 
- void
- test01()
- {
-   using lim = std::numeric_limits<double>;
- 
-   VERIFY( std::lerp(0.0, 1.0, 0.0) == 0.0 );
-   VERIFY( std::lerp(-2.0, 10.0, 1.0) == 10.0 );
-   VERIFY( std::lerp(2.0, -10.0, 1.0) == -10.0 );
-   VERIFY( std::lerp(-8.0, 10.0, 0.5) == 1.0 );
-   VERIFY( std::lerp(-10.0, 10.0, 0.25) == -5.0 );
-   VERIFY( std::lerp(10.0, -10.0, 0.375) == 2.5 );
- 
-   VERIFY( std::lerp(2.0, 2.0, 200.0) == 2.0 );
-   VERIFY( std::lerp(2.0, 4.0, 200.0) == 402.0 );
-   VERIFY( std::lerp(2.0, 4.0, -20.0) == -38.0 );
- 
-   VERIFY( std::lerp(1.1, 30201.1, 0) == 1.1 );
-   VERIFY( std::lerp(1.1, 30201.1, 1) == 30201.1 );
-   VERIFY( std::lerp(1.1, -30201.1, 0) == 1.1 );
-   VERIFY( std::lerp(1.1, -30201.1, 1) == -30201.1 );
- 
-   VERIFY( std::lerp(1.1, 1.1, lim::infinity()) == 1.1 );
-   VERIFY( std::isfinite(std::lerp(1.1, 1.1+lim::min(), lim::max())) );
- 
-   VERIFY( std::lerp(lim::max(), lim::max(), 1) == lim::max() );
-   VERIFY( std::lerp(lim::max(), lim::max()/9e9, 0) == lim::max() );
-   VERIFY( std::lerp(lim::max()/9e9, lim::max(), 1) == lim::max() );
- }
- 
- void
- test02()
- {
-   using lim = std::numeric_limits<float>;
- 
-   VERIFY( std::lerp(0.0f, 1.0f, 0.0f) == 0.0f );
-   VERIFY( std::lerp(-2.0f, 10.0f, 1.0f) == 10.0f );
-   VERIFY( std::lerp(2.0f, -10.0f, 1.0f) == -10.0f );
-   VERIFY( std::lerp(-8.0f, 10.0f, 0.5f) == 1.0f );
-   VERIFY( std::lerp(-10.0f, 10.0f, 0.25f) == -5.0f );
-   VERIFY( std::lerp(10.0f, -10.0f, 0.375f) == 2.5f );
- 
-   VERIFY( std::lerp(2.0f, 2.0f, 200.0f) == 2.0f );
-   VERIFY( std::lerp(2.0f, 4.0f, 200.0f) == 402.0f );
-   VERIFY( std::lerp(2.0f, 4.0f, -20.0f) == -38.0f );
- 
-   VERIFY( std::lerp(1.1f, 30201.1f, 0) == 1.1f );
-   VERIFY( std::lerp(1.1f, 30201.1f, 1) == 30201.1f );
-   VERIFY( std::lerp(1.1f, -30201.1f, 0) == 1.1f );
-   VERIFY( std::lerp(1.1f, -30201.1f, 1) == -30201.1f );
- 
-   VERIFY( std::lerp(1.1f, 1.1f, lim::infinity()) == 1.1f );
-   VERIFY( std::isfinite(std::lerp(1.1f, 1.1f+lim::min(), lim::max())) );
- 
-   VERIFY( std::lerp(lim::max(), lim::max(), 1) == lim::max() );
-   VERIFY( std::lerp(lim::max(), lim::max()/9e9f, 0) == lim::max() );
-   VERIFY( std::lerp(lim::max()/9e9f, lim::max(), 1) == lim::max() );
- }
- 
- void
- test03()
- {
-   using lim = std::numeric_limits<long double>;
- 
-   VERIFY( std::lerp(0.0l, 1.0l, 0.0l) == 0.0l );
-   VERIFY( std::lerp(-2.0l, 10.0l, 1.0l) == 10.0l );
-   VERIFY( std::lerp(2.0l, -10.0l, 1.0l) == -10.0l );
-   VERIFY( std::lerp(-8.0l, 10.0l, 0.5l) == 1.0l );
-   VERIFY( std::lerp(-10.0l, 10.0l, 0.25l) == -5.0l );
-   VERIFY( std::lerp(10.0l, -10.0l, 0.375l) == 2.5l );
- 
-   VERIFY( std::lerp(2.0l, 2.0l, 200.0l) == 2.0l );
-   VERIFY( std::lerp(2.0l, 4.0l, 200.0l) == 402.0l );
-   VERIFY( std::lerp(2.0l, 4.0l, -20.0l) == -38.0l );
- 
-   VERIFY( std::lerp(1.1l, 30201.1l, 0) == 1.1l );
-   VERIFY( std::lerp(1.1l, 30201.1l, 1) == 30201.1l );
-   VERIFY( std::lerp(1.1l, -30201.1l, 0) == 1.1l );
-   VERIFY( std::lerp(1.1l, -30201.1l, 1) == -30201.1l );
- 
-   VERIFY( std::lerp(1.1l, 1.1l, lim::infinity()) == 1.1l );
-   VERIFY( std::isfinite(std::lerp(1.1l, 1.1l+lim::min(), lim::max())) );
- 
-   VERIFY( std::lerp(lim::max(), lim::max(), 1) == lim::max() );
-   VERIFY( std::lerp(lim::max(), lim::max()/9e9l, 0) == lim::max() );
-   VERIFY( std::lerp(lim::max()/9e9l, lim::max(), 1) == lim::max() );
- }
- 
- int main()
- {
-   test01();
-   test02();
-   test03();
- }
--- 0 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc	Tue Jun 28 08:54:36 2022
***************
*** 25,30 ****
--- 25,31 ----
  
  #include <random>
  #include <sstream>
+ #include <testsuite_hooks.h>
  
  void
  test01()
*************** test01()
*** 37,46 ****
    str << u;
  
    str >> v;
  }
  
  int main()
  {
    test01();
!   return 0;
  }
--- 38,80 ----
    str << u;
  
    str >> v;
+   VERIFY( u == v );
+ }
+ 
+ void
+ test_pr105502()
+ {
+   // PR libstdc++/105502 std::normal_distribution deserialization issue
+   std::stringstream str;
+   std::normal_distribution<> d{1, 2}, d2;
+   std::minstd_rand0 g;
+   str << d;
+   VERIFY( str );
+   str >> d2;
+   VERIFY( str );
+   VERIFY( d == d2 );
+ 
+   (void) d(g); // sets d._M_saved_available = true
+   str.str("");
+   str.clear();
+   str << d;
+   VERIFY( str );
+   str >> d2;
+   VERIFY( str );
+   VERIFY( d == d2 );
+ 
+   (void) d(g); // sets d._M_saved_available = false
+   str.str("");
+   str.clear();
+   str << d;
+   VERIFY( str );
+   str >> d2;
+   VERIFY( str );
+   VERIFY( d == d2 );
  }
  
  int main()
  {
    test01();
!   test_pr105502();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc	Tue Jun 28 08:54:36 2022
*************** auto x = std::generate_canonical<std::si
*** 12,15 ****
  
  // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 167 }
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3284 }
--- 12,15 ----
  
  // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 167 }
  
! // { dg-error "static assertion failed: template argument must be a floating point type" "" { target *-*-* } 3288 }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc	Tue Jun 28 08:54:36 2022
*************** test02()
*** 41,47 ****
  #ifdef _GLIBCXX_USE_DEV_RANDOM
    std::random_device x1("/dev/urandom");
    std::random_device x2("/dev/random");
!   VERIFY( x1() != x2() );
  #endif
  }
  
--- 41,47 ----
  #ifdef _GLIBCXX_USE_DEV_RANDOM
    std::random_device x1("/dev/urandom");
    std::random_device x2("/dev/random");
!   VERIFY( x1() != x2() || x1() != x2() );
  #endif
  }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc	Tue Jun 28 08:54:36 2022
***************
*** 25,30 ****
--- 25,33 ----
  #include <random>
  #include <testsuite_hooks.h>
  
+ static_assert( std::is_nothrow_default_constructible<std::seed_seq>::value,
+ 	       "LWG 3422" );
+ 
  void
  test01()
  {
*************** test01()
*** 34,40 ****
    seq.generate(foo.begin(), foo.end());
  
    VERIFY( seq.size() == 0 );
-   //VERIFY();
  }
  
  int
--- 37,42 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc	Tue Jun 28 08:54:36 2022
*************** test01()
*** 36,41 ****
--- 36,48 ----
    VERIFY( seq.size() == 10 );
  }
  
+ void
+ lwg3422()
+ {
+   int i[32] = { };
+   std::seed_seq ss{i, i+32}; // LWG 3422
+ }
+ 
  int main()
  {
    test01();
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/reduce/95833.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/reduce/95833.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/reduce/95833.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/reduce/95833.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,16 ----
+ // { dg-do compile { target c++17 } }
+ // PR libstdc++/95833 - Incorrect static_assert in std::reduce overload
+ 
+ #include <numeric>
+ 
+ struct A { };
+ struct B { };
+ 
+ struct binop
+ {
+   template<typename T, typename U>
+     A operator()(T&&, U&&) const { return A{}; }
+ };
+ 
+ B b;
+ A a = std::reduce(&b, &b + 1, A{}, binop{});
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/103022.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/103022.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/103022.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/103022.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,15 ----
+ // { dg-options "-D_GLIBCXX_DEBUG" }
+ // { dg-do compile { target c++11 } }
+ 
+ #include <valarray>
+ 
+ int main()
+ {
+   // PR libstdc++/103022
+   std::valarray<double> va;
+   (void) std::begin(va);
+   (void) std::end(va);
+   const auto& cva = va;
+   (void) std::begin(cva);
+   (void) std::end(cva);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.C	Thu Jan  1 00:00:00 1970
***************
*** 1,35 ****
- // Copyright (C) 2013-2020 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your option)
- // any later version.
- 
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- // GNU General Public License for more details.
- 
- // You should have received a copy of the GNU General Public License along
- // with this library; see the file COPYING3.  If not see
- // <http://www.gnu.org/licenses/>.
- 
- #include <valarray>
- #include <testsuite_hooks.h>
- 
- // libstdc++/57666
- void test01()
- {
-   std::valarray<int> a(3), b(3), d1, d2;
-   d1 = a;
-   VERIFY( d1.size() == 3 );
-   d2 = a + b;
-   VERIFY( d2.size() == 3 );
- }
- 
- int main()
- {
-   test01();
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,35 ----
+ // Copyright (C) 2013-2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ #include <valarray>
+ #include <testsuite_hooks.h>
+ 
+ // libstdc++/57666
+ void test01()
+ {
+   std::valarray<int> a(3), b(3), d1, d2;
+   d1 = a;
+   VERIFY( d1.size() == 3 );
+   d2 = a + b;
+   VERIFY( d2.size() == 3 );
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc	Tue Jun 28 08:54:36 2022
***************
*** 1,4 ****
! // { dg-do compile { target c++11 } }
  
  // Copyright (C) 2010-2020 Free Software Foundation, Inc.
  //
--- 1,4 ----
! // { dg-do run { target c++11 } }
  
  // Copyright (C) 2010-2020 Free Software Foundation, Inc.
  //
***************
*** 17,23 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // 26.6.10 valarray range access: [valarray.range]
  
  #include <valarray>
  
--- 17,23 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // C++11 26.6.10 valarray range access: [valarray.range]
  
  #include <valarray>
  
*************** void
*** 25,33 ****
  test01()
  {
    std::valarray<double> va{1.0, 2.0, 3.0};
!   std::begin(va);
!   std::end(va);
    const auto& cva = va;
!   std::begin(cva);
!   std::end(cva);
  }
--- 25,70 ----
  test01()
  {
    std::valarray<double> va{1.0, 2.0, 3.0};
!   (void) std::begin(va);
!   (void) std::end(va);
    const auto& cva = va;
!   (void) std::begin(cva);
!   (void) std::end(cva);
! 
!   using Iter = decltype(std::begin(va));
!   using IterTraits = std::iterator_traits<Iter>;
!   static_assert( std::is_same<Iter, decltype(std::end(va))>::value, "" );
!   static_assert( std::is_same<IterTraits::iterator_category,
! 			      std::random_access_iterator_tag>::value, "" );
!   static_assert( std::is_same<IterTraits::value_type, double>::value, "" );
!   static_assert( std::is_same<IterTraits::reference, double&>::value, "" );
!   using CIter = decltype(std::begin(cva));
!   using CIterTraits = std::iterator_traits<CIter>;
!   static_assert( std::is_same<CIter, decltype(std::end(cva))>::value, "" );
!   static_assert( std::is_same<CIterTraits::iterator_category,
! 			      std::random_access_iterator_tag>::value, "" );
!   static_assert( std::is_same<CIterTraits::value_type, double>::value, "" );
!   static_assert( std::is_same<CIterTraits::reference, const double&>::value, "" );
! #if __cplusplus >= 202002L
!   static_assert( std::contiguous_iterator<Iter> );
!   static_assert( std::contiguous_iterator<CIter> );
! #endif
! }
! 
! // PR libstdc++/103022
! void
! test02()
! {
!   std::valarray<double> va;
!   (void) std::begin(va);
!   (void) std::end(va);
!   const auto& cva = va;
!   (void) std::begin(cva);
!   (void) std::end(cva);
! }
! 
! int main()
! {
!   test01();
!   test02();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc	Tue Jun 28 08:54:36 2022
***************
*** 1,4 ****
! // { dg-do compile { target c++14 } }
  
  // Copyright (C) 2015-2020 Free Software Foundation, Inc.
  //
--- 1,4 ----
! // { dg-do run { target c++14 } }
  
  // Copyright (C) 2015-2020 Free Software Foundation, Inc.
  //
***************
*** 17,23 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // 26.6.10 valarray range access: [valarray.range]
  
  #include <iterator>
  #include <valarray>
--- 17,23 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // C++11 26.6.10 valarray range access: [valarray.range]
  
  #include <iterator>
  #include <valarray>
*************** test01()
*** 33,35 ****
--- 33,53 ----
    std::cbegin(cva);
    std::cend(cva);
  }
+ 
+ // PR libstdc++/103022
+ void
+ test02()
+ {
+   std::valarray<double> va;
+   (void) std::cbegin(va);
+   (void) std::cend(va);
+   const auto& cva = va;
+   (void) std::cbegin(cva);
+   (void) std::cend(cva);
+ }
+ 
+ int main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/81256.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,109 ****
- // Copyright (C) 2018-2020 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your option)
- // any later version.
- 
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- // GNU General Public License for more details.
- 
- // You should have received a copy of the GNU General Public License along
- // with this library; see the file COPYING3.  If not see
- // <http://www.gnu.org/licenses/>.
- 
- // { dg-do run { target c++11 } }
- 
- #include <fstream>
- #include <locale>
- #include <testsuite_hooks.h>
- 
- struct E : std::runtime_error
- {
-   E() : runtime_error("") { }
- };
- 
- struct Cvt : std::codecvt<wchar_t, char, std::mbstate_t>
- {
-   explicit Cvt(size_t refs) : codecvt(refs) { }
- 
-   mutable int exceptions_thrown = 0;
- 
- private:
-   int
-   do_encoding() const noexcept override
-   { return -1; }
- 
-   bool
-   do_always_noconv() const noexcept override
-   { return false; }
- 
-   result
-   do_unshift(state_type&, char*, char*, char*&) const override
-   {
-     ++exceptions_thrown;
-     throw E();
-   }
- };
- 
- struct filebuf : std::basic_filebuf<wchar_t>
- {
-   explicit filebuf(Cvt* c)
-   {
-     std::locale loc(std::locale::classic(), c);
-     imbue(loc);
-   }
- };
- 
- void
- test01()
- {
-   // This facet needs to still be valid when ~basic_filebuf runs:
-   Cvt conv{1};
-   {
-     filebuf fb(&conv);
-     fb.open("output.txt", std::wios::out);
-     fb.sputn(L"x", 1);
- 
-     bool caught = false;
-     try
-     {
-       /* [filebuf.members] p7: If one of these calls throws an exception,
-        * the exception is caught and rethrown after closing the file.  */
-       fb.close();
-     }
-     catch (const E&)
-     {
-       caught = true;
-     }
-     VERIFY( conv.exceptions_thrown == 1 );
-     VERIFY( caught );
-   }
-   VERIFY( conv.exceptions_thrown == 1 );
- }
- 
- void
- test02()
- {
-   // This facet needs to still be valid when ~basic_filebuf runs:
-   Cvt conv{1};
-   {
-     filebuf fb(&conv);
-     fb.open("output.txt", std::wios::out);
-     fb.sputn(L"x", 1);
-     /* [filebuf.cons] p5: If an exception occurs during the destruction
-      * of the object, including the call to close(), the exception is
-      * caught but not rethrown.  */
-   }
-   VERIFY( conv.exceptions_thrown == 1 );
- }
- 
- int
- main()
- {
-   test01();
-   test02();
- }
--- 0 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,109 ----
+ // Copyright (C) 2018-2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target c++11 } }
+ 
+ #include <fstream>
+ #include <locale>
+ #include <testsuite_hooks.h>
+ 
+ struct E : std::runtime_error
+ {
+   E() : runtime_error("") { }
+ };
+ 
+ struct Cvt : std::codecvt<wchar_t, char, std::mbstate_t>
+ {
+   explicit Cvt(size_t refs) : codecvt(refs) { }
+ 
+   mutable int exceptions_thrown = 0;
+ 
+ private:
+   int
+   do_encoding() const noexcept override
+   { return -1; }
+ 
+   bool
+   do_always_noconv() const noexcept override
+   { return false; }
+ 
+   result
+   do_unshift(state_type&, char*, char*, char*&) const override
+   {
+     ++exceptions_thrown;
+     throw E();
+   }
+ };
+ 
+ struct filebuf : std::basic_filebuf<wchar_t>
+ {
+   explicit filebuf(Cvt* c)
+   {
+     std::locale loc(std::locale::classic(), c);
+     imbue(loc);
+   }
+ };
+ 
+ void
+ test01()
+ {
+   // This facet needs to still be valid when ~basic_filebuf runs:
+   Cvt conv{1};
+   {
+     filebuf fb(&conv);
+     fb.open("output.txt", std::wios::out);
+     fb.sputn(L"x", 1);
+ 
+     bool caught = false;
+     try
+     {
+       /* [filebuf.members] p7: If one of these calls throws an exception,
+        * the exception is caught and rethrown after closing the file.  */
+       fb.close();
+     }
+     catch (const E&)
+     {
+       caught = true;
+     }
+     VERIFY( conv.exceptions_thrown == 1 );
+     VERIFY( caught );
+   }
+   VERIFY( conv.exceptions_thrown == 1 );
+ }
+ 
+ void
+ test02()
+ {
+   // This facet needs to still be valid when ~basic_filebuf runs:
+   Cvt conv{1};
+   {
+     filebuf fb(&conv);
+     fb.open("output.txt", std::wios::out);
+     fb.sputn(L"x", 1);
+     /* [filebuf.cons] p5: If an exception occurs during the destruction
+      * of the object, including the call to close(), the exception is
+      * caught but not rethrown.  */
+   }
+   VERIFY( conv.exceptions_thrown == 1 );
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.C	Thu Jan  1 00:00:00 1970
***************
*** 1,41 ****
- // Copyright (C) 2008-2020 Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library.  This library is free
- // software; you can redistribute it and/or modify it under the
- // terms of the GNU General Public License as published by the
- // Free Software Foundation; either version 3, or (at your option)
- // any later version.
- 
- // This library is distributed in the hope that it will be useful,
- // but WITHOUT ANY WARRANTY; without even the implied warranty of
- // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- // GNU General Public License for more details.
- 
- // You should have received a copy of the GNU General Public License along
- // with this library; see the file COPYING3.  If not see
- // <http://www.gnu.org/licenses/>.
- 
- // 27.6.1.5 - Template class basic_iostream 
- 
- #include <iostream>
- 
- class mystream
- : public std::iostream
- {
- public:
-   mystream () { };
- };
- 
- // libstdc++/16251
- void test01()
- {
-   mystream x;
-   x.rdbuf(std::cout.rdbuf());
-   x << std::endl;
- }
- 
- int main()
- {
-   test01();
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,41 ----
+ // Copyright (C) 2008-2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // 27.6.1.5 - Template class basic_iostream 
+ 
+ #include <iostream>
+ 
+ class mystream
+ : public std::iostream
+ {
+ public:
+   mystream () { };
+ };
+ 
+ // libstdc++/16251
+ void test01()
+ {
+   mystream x;
+   x.rdbuf(std::cout.rdbuf());
+   x << std::endl;
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc	Tue Jun 28 08:54:36 2022
*************** test01()
*** 57,80 ****
    ++iter;
    VERIFY( iter == end(iter) );
  
! #if !(defined(__MINGW32__) || defined(__MINGW64__))
!   // Test inaccessible directory.
!   ec = bad_ec;
!   permissions(p, fs::perms::none, ec);
!   VERIFY( !ec );
!   iter = fs::directory_iterator(p, ec);
!   VERIFY( ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible directory, skipping permission denied.
!   const auto opts = fs::directory_options::skip_permission_denied;
!   ec = bad_ec;
!   iter = fs::directory_iterator(p, opts, ec);
!   VERIFY( !ec );
!   VERIFY( iter == end(iter) );
! #endif
  
-   permissions(p, fs::perms::owner_all, ec);
    remove_all(p, ec);
  }
  
--- 57,82 ----
    ++iter;
    VERIFY( iter == end(iter) );
  
!   if (__gnu_test::permissions_are_testable())
!   {
!     // Test inaccessible directory.
!     ec = bad_ec;
!     permissions(p, fs::perms::none, ec);
!     VERIFY( !ec );
!     iter = fs::directory_iterator(p, ec);
!     VERIFY( ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible directory, skipping permission denied.
!     const auto opts = fs::directory_options::skip_permission_denied;
!     ec = bad_ec;
!     iter = fs::directory_iterator(p, opts, ec);
!     VERIFY( !ec );
!     VERIFY( iter == end(iter) );
! 
!     permissions(p, fs::perms::owner_all, ec);
!   }
  
    remove_all(p, ec);
  }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,148 ----
+ // Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-do run { target { c++17 } } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <filesystem>
+ #include <cerrno>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <dirent.h>
+ #include <testsuite_hooks.h>
+ #include <testsuite_fs.h>
+ 
+ int choice;
+ 
+ extern "C" struct dirent* readdir(DIR*)
+ {
+   // On some targets dirent::d_name is very small, but the OS allocates
+   // a trailing char array after the dirent struct. Emulate that here.
+   union State
+   {
+     struct dirent d;
+     char buf[sizeof(struct dirent) + 16] = {};
+   };
+ 
+   static State state;
+   char* d_name = state.buf + offsetof(struct dirent, d_name);
+ 
+   switch (choice)
+   {
+   case 1:
+     state.d.d_ino = 999;
+ #if defined _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE && defined DT_REG
+     state.d.d_type = DT_REG;
+ #endif
+     state.d.d_reclen = 0;
+     std::char_traits<char>::copy(d_name, "file", 5);
+     choice = 0;
+     return &state.d;
+   case 2:
+     state.d.d_ino = 111;
+ #if defined _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE && defined DT_DIR
+     state.d.d_type = DT_DIR;
+ #endif
+     state.d.d_reclen = 60;
+     std::char_traits<char>::copy(d_name, "subdir", 7);
+     choice = 1;
+     return &state.d;
+   default:
+     errno = EIO;
+     return nullptr;
+   }
+   return &state.d;
+ }
+ 
+ void
+ test01()
+ {
+   namespace fs = std::filesystem;
+   std::error_code ec;
+   choice = 1;
+   fs::recursive_directory_iterator it(".", ec);
+   if (choice == 0) // custom readdir was called
+   {
+     it.increment(ec);
+     VERIFY( ec.value() == EIO );
+     VERIFY( it == end(it) );
+   }
+   else
+   {
+     puts("Custom readdir not used, cannot test error handling");
+     exit(0);
+   }
+ 
+ #if __cpp_exceptions
+   choice = 1;
+   fs::recursive_directory_iterator it2(".", ec);
+   if (choice == 0)
+   {
+     try {
+       ++it2;
+       VERIFY( false );
+     } catch (const fs::filesystem_error& e) {
+       VERIFY( e.code().value() == EIO );
+       VERIFY( it2 == end(it2) );
+     }
+   }
+ #endif
+ }
+ 
+ void
+ test02()
+ {
+   namespace fs = std::filesystem;
+   auto dir = __gnu_test::nonexistent_path();
+   fs::create_directories(dir/"subdir");
+ 
+   std::error_code ec;
+   choice = 2;
+   fs::recursive_directory_iterator it(dir, ec);
+   if (choice == 1)
+   {
+     ++it;
+     it.pop(ec);
+     VERIFY( ec.value() == EIO );
+     VERIFY( it == end(it) );
+   }
+ 
+ #if __cpp_exceptions
+   choice = 2;
+   fs::recursive_directory_iterator it2(dir, ec);
+   if (choice == 1)
+   {
+     ++it2;
+     try {
+       it2.pop();
+       VERIFY( false );
+     } catch (const fs::filesystem_error& e) {
+       VERIFY( e.code().value() == EIO );
+       VERIFY( it2 == end(it2) );
+     }
+   }
+ #endif
+ 
+   fs::remove_all(dir, ec);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc	Tue Jun 28 08:54:36 2022
*************** test01()
*** 60,113 ****
    ++iter;
    VERIFY( iter == end(iter) );
  
! #if ! (defined (__MINGW32__) || defined(__MINGW64__))
!   // Test inaccessible directory.
!   ec = bad_ec;
!   permissions(p, fs::perms::none, ec);
!   VERIFY( !ec );
!   iter = fs::recursive_directory_iterator(p, ec);
!   VERIFY( ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible directory, skipping permission denied.
!   const auto opts = fs::directory_options::skip_permission_denied;
!   iter = fs::recursive_directory_iterator(p, opts, ec);
!   VERIFY( !ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible sub-directory.
!   ec = bad_ec;
!   permissions(p, fs::perms::owner_all, ec);
!   VERIFY( !ec );
!   ec = bad_ec;
!   permissions(p/"d1/d2", fs::perms::none, ec);
!   VERIFY( !ec );
!   ec = bad_ec;
!   iter = fs::recursive_directory_iterator(p, ec);
!   VERIFY( !ec );
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1" );
!   ++iter;              // should recurse into d1
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1/d2" );
!   iter.increment(ec);  // should fail to recurse into p/d1/d2
!   VERIFY( ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible sub-directory, skipping permission denied.
!   ec = bad_ec;
!   iter = fs::recursive_directory_iterator(p, opts, ec);
!   VERIFY( !ec );
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1" );
!   ++iter;              // should recurse into d1
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1/d2" );
!   ec = bad_ec;
!   iter.increment(ec);  // should fail to recurse into p/d1/d2, so skip it
!   VERIFY( !ec );
!   VERIFY( iter == end(iter) );
! #endif
  
    permissions(p/"d1/d2", fs::perms::owner_all, ec);
    remove_all(p, ec);
--- 60,114 ----
    ++iter;
    VERIFY( iter == end(iter) );
  
!   if (__gnu_test::permissions_are_testable())
!   {
!     // Test inaccessible directory.
!     ec = bad_ec;
!     permissions(p, fs::perms::none, ec);
!     VERIFY( !ec );
!     iter = fs::recursive_directory_iterator(p, ec);
!     VERIFY( ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible directory, skipping permission denied.
!     const auto opts = fs::directory_options::skip_permission_denied;
!     iter = fs::recursive_directory_iterator(p, opts, ec);
!     VERIFY( !ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible sub-directory.
!     ec = bad_ec;
!     permissions(p, fs::perms::owner_all, ec);
!     VERIFY( !ec );
!     ec = bad_ec;
!     permissions(p/"d1/d2", fs::perms::none, ec);
!     VERIFY( !ec );
!     ec = bad_ec;
!     iter = fs::recursive_directory_iterator(p, ec);
!     VERIFY( !ec );
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1" );
!     ++iter;              // should recurse into d1
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1/d2" );
!     iter.increment(ec);  // should fail to recurse into p/d1/d2
!     VERIFY( ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible sub-directory, skipping permission denied.
!     ec = bad_ec;
!     iter = fs::recursive_directory_iterator(p, opts, ec);
!     VERIFY( !ec );
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1" );
!     ++iter;              // should recurse into d1
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1/d2" );
!     ec = bad_ec;
!     iter.increment(ec);  // should fail to recurse into p/d1/d2, so skip it
!     VERIFY( !ec );
!     VERIFY( iter == end(iter) );
!   }
  
    permissions(p/"d1/d2", fs::perms::owner_all, ec);
    remove_all(p, ec);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc	Tue Jun 28 08:54:36 2022
*************** test05()
*** 194,199 ****
--- 194,227 ----
    VERIFY( !ec );  // Previous value should be cleared (LWG 2683)
  }
  
+ void
+ test_pr99290()
+ {
+   auto dir = __gnu_test::nonexistent_path();
+   auto source = dir/"source";
+   auto dest = dir/"dest";
+   create_directories(source/"emptydir");
+   create_directories(dest/"emptydir");
+   std::ofstream{source/"file"} << 'a';
+   std::ofstream{dest/"file"} << 'b';
+   // PR libstdc++/99290
+   // std::filesystem::copy does not always report errors for recursion
+   std::error_code ec;
+   copy(source, dest, ec);
+   VERIFY( ec == std::errc::file_exists );
+ 
+ #if __cpp_exceptions
+   try {
+     copy(source, dest);
+     VERIFY( false );
+   } catch (const fs::filesystem_error& e) {
+     VERIFY( e.code() == std::errc::file_exists );
+   }
+ #endif
+ 
+   remove_all(dir);
+ }
+ 
  int
  main()
  {
*************** main()
*** 202,205 ****
--- 230,234 ----
    test03();
    test04();
    test05();
+   test_pr99290();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc	Tue Jun 28 08:54:36 2022
*************** test03()
*** 146,155 ****
--- 146,178 ----
    remove_all(p);
  }
  
+ void
+ test04()
+ {
+ #if defined(__MINGW32__) || defined(__MINGW64__)
+   // no symlinks
+ #else
+   // PR libstdc++/101510
+   // create_directories reports an error if the path is a symlink to a dir
+   std::error_code ec = make_error_code(std::errc::invalid_argument);
+   const auto p = __gnu_test::nonexistent_path() / "";
+   fs::create_directories(p/"dir");
+   auto link = p/"link";
+   fs::create_directory_symlink("dir", link);
+   bool created = fs::create_directories(link, ec);
+   VERIFY( !created );
+   VERIFY( !ec );
+   created = fs::create_directories(link);
+   VERIFY( !created );
+   remove_all(p);
+ #endif
+ }
+ 
  int
  main()
  {
    test01();
    test02();
    test03();
+   test04();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc	Tue Jun 28 08:54:36 2022
*************** test01()
*** 55,60 ****
--- 55,91 ----
    b = create_directory(p);
    VERIFY( !b );
  
+   auto f = p/"file";
+   std::ofstream{f} << "create file";
+   b = create_directory(f, ec);
+   VERIFY( ec == std::errc::file_exists );
+   VERIFY( !b );
+   try
+   {
+     create_directory(f);
+     VERIFY( false );
+   }
+   catch (const fs::filesystem_error& e)
+   {
+     VERIFY( e.code() == std::errc::file_exists );
+     VERIFY( e.path1() == f );
+   }
+ 
+ #if defined(__MINGW32__) || defined(__MINGW64__)
+   // no symlinks
+ #else
+   // PR libstdc++/101510 create_directory on an existing symlink to a directory
+   fs::create_directory(p/"dir");
+   auto link = p/"link";
+   fs::create_directory_symlink("dir", link);
+   ec = bad_ec;
+   b = fs::create_directory(link, ec);
+   VERIFY( !b );
+   VERIFY( !ec );
+   b = fs::create_directory(link);
+   VERIFY( !b );
+ #endif
+ 
    remove_all(p, ec);
  }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc	Tue Jun 28 08:54:36 2022
*************** test03()
*** 80,89 ****
  void
  test04()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // filesystem permissions not supported
!   return;
! #endif
  
    using std::filesystem::perms;
    using std::filesystem::perm_options;
--- 80,87 ----
  void
  test04()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
  
    using std::filesystem::perms;
    using std::filesystem::perm_options;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc	Tue Jun 28 08:54:36 2022
*************** namespace fs = std::filesystem;
*** 28,37 ****
  void
  test01()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // filesystem permissions not supported
!   return;
! #endif
  
    auto p = __gnu_test::nonexistent_path();
    create_directory(p);
--- 28,35 ----
  void
  test01()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
  
    auto p = __gnu_test::nonexistent_path();
    create_directory(p);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc	Tue Jun 28 08:54:36 2022
*************** test01()
*** 77,95 ****
    VERIFY( !n );
    VERIFY( exists(dir/"a/b") );
  
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // No permissions support
! #else
!   permissions(dir, fs::perms::none, ec);
!   if (!ec)
    {
!     ec.clear();
!     n = remove(dir/"a/b", ec);
!     VERIFY( ec );
!     VERIFY( !n );
!     permissions(dir, fs::perms::owner_all, ec);
    }
- #endif
  
    ec = bad_ec;
    n = remove(dir/"a/b", ec);
--- 77,94 ----
    VERIFY( !n );
    VERIFY( exists(dir/"a/b") );
  
!   if (__gnu_test::permissions_are_testable())
    {
!     permissions(dir, fs::perms::none, ec);
!     if (!ec)
!     {
!       ec.clear();
!       n = remove(dir/"a/b", ec);
!       VERIFY( ec );
!       VERIFY( !n );
!       permissions(dir, fs::perms::owner_all, ec);
!     }
    }
  
    ec = bad_ec;
    n = remove(dir/"a/b", ec);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc	Tue Jun 28 08:54:36 2022
*************** test03()
*** 143,151 ****
  void
  test04()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // no permissions
! #else
    // PR libstdc++/93201
    std::error_code ec;
    std::uintmax_t n;
--- 143,151 ----
  void
  test04()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
! 
    // PR libstdc++/93201
    std::error_code ec;
    std::uintmax_t n;
*************** test04()
*** 171,177 ****
    }
  
    fs::permissions(dir, fs::perms::owner_write, fs::perm_options::add);
! #endif
  }
  
  int
--- 171,178 ----
    }
  
    fs::permissions(dir, fs::perms::owner_write, fs::perm_options::add);
!   fs::remove_all(dir, ec);
!   f.path.clear();
  }
  
  int
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc	Tue Jun 28 08:54:36 2022
*************** test02()
*** 56,65 ****
  void
  test03()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // No permissions support
!   return;
! #endif
  
    fs::path dir = __gnu_test::nonexistent_path();
    fs::create_directory(dir);
--- 56,63 ----
  void
  test03()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
  
    fs::path dir = __gnu_test::nonexistent_path();
    fs::create_directory(dir);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc	Tue Jun 28 08:54:36 2022
*************** test02()
*** 69,74 ****
--- 69,77 ----
  void
  test03()
  {
+   if (!__gnu_test::permissions_are_testable())
+     return;
+ 
    fs::path dir = __gnu_test::nonexistent_path();
    fs::create_directory(dir);
    __gnu_test::scoped_file d(dir, __gnu_test::scoped_file::adopt_file);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc	Tue Jun 28 08:54:36 2022
*************** test02()
*** 95,104 ****
  void
  test03()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // No permissions support
!   return;
! #endif
  
    clean_env();
  
--- 95,102 ----
  void
  test03()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
  
    clean_env();
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,14 ----
+ // { dg-options "-std=gnu++17" }
+ // { dg-do compile { target c++17 } }
+ 
+ #include <filesystem>
+ 
+ void f(bool) { }
+ void f(const std::filesystem::path&) { }
+ 
+ void
+ test_100630()
+ {
+   volatile bool b = true;
+   f(b);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc	Tue Jun 28 08:54:36 2022
***************
*** 18,24 ****
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // 8.4.9 path decomposition [path.decompose]
  
  #include <filesystem>
  #include <testsuite_hooks.h>
--- 18,24 ----
  // with this library; see the file COPYING3.  If not see
  // <http://www.gnu.org/licenses/>.
  
! // C++17 30.10.8.4.9 path decomposition [fs.path.decompose]
  
  #include <filesystem>
  #include <testsuite_hooks.h>
*************** test02()
*** 64,72 ****
--- 64,95 ----
    }
  }
  
+ void
+ test03()
+ {
+   const std::string narrow = "there/are/no/wrong/turns/only/unexpected/paths";
+   const path::string_type s(narrow.begin(), narrow.end());
+   const auto s1 = s.substr(0, s.length() - 6);    // remove "/paths"
+   const auto s2 = s1.substr(0, s1.length() - 16); // remove "/only/..."
+ 
+   // PR libstdc++/99805
+   path p = path::string_type(s);
+   auto pp = p.parent_path();
+   VERIFY( pp.native() == s1 );
+   pp = pp.parent_path().parent_path();
+   VERIFY( pp.native() == s2 );
+ 
+   path from_lval(s);
+   pp = from_lval.parent_path();
+   VERIFY( pp.native() == s1 );
+   pp = pp.parent_path().parent_path();
+   VERIFY( pp.native() == s2 );
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test03();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/27_io/types/1.cc gcc-10.4.0/libstdc++-v3/testsuite/27_io/types/1.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/27_io/types/1.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/27_io/types/1.cc	Tue Jun 28 08:54:36 2022
***************
*** 27,40 ****
  // Annex D, deprecated.
  void test01()
  {
!   typedef std::ios_base::streampos streampos_type; // { dg-warning "is deprecated: use 'std::streampos' instead" }
!   typedef std::ios_base::streamoff streamoff_type; // { dg-warning "is deprecated: use 'std::streamoff' instead" }
  }
  
  // Annex D, deprecated.
  void test02()
  {
!   typedef std::ios_base::io_state iostate_type; // { dg-warning "is deprecated: use 'std::iostate' instead" }
!   typedef std::ios_base::open_mode openmode_type; // { dg-warning "is deprecated: use 'std::openmode' instead" }
!   typedef std::ios_base::seek_dir seekdir_type; // { dg-warning "is deprecated: use 'std::seekdir' instead" }
  }
--- 27,40 ----
  // Annex D, deprecated.
  void test01()
  {
!   typedef std::ios_base::streampos streampos_type; // { dg-warning "is deprecated: use 'std::streampos' instead" "" { target c++11 } }
!   typedef std::ios_base::streamoff streamoff_type; // { dg-warning "is deprecated: use 'std::streamoff' instead" "" { target c++11 } }
  }
  
  // Annex D, deprecated.
  void test02()
  {
!   typedef std::ios_base::io_state iostate_type; // { dg-warning "is deprecated: use 'std::iostate' instead" "" { target c++11 } }
!   typedef std::ios_base::open_mode openmode_type; // { dg-warning "is deprecated: use 'std::openmode' instead" "" { target c++11 } }
!   typedef std::ios_base::seek_dir seekdir_type; // { dg-warning "is deprecated: use 'std::seekdir' instead" "" { target c++11 } }
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/28_regex/match_results/102667.cc gcc-10.4.0/libstdc++-v3/testsuite/28_regex/match_results/102667.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/28_regex/match_results/102667.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/28_regex/match_results/102667.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,39 ----
+ // { dg-do run { target c++11 } }
+ 
+ #include <regex>
+ #include <testsuite_hooks.h>
+ 
+ void
+ test01()
+ {
+   std::cmatch sm;
+   VERIFY( sm.empty() );
+   VERIFY( sm.size() == 0 );
+   VERIFY( sm.begin() == sm.end() );  // PR libstdc++/83600
+ 
+   bool matched = std::regex_match("a", sm, std::regex("b"));
+   VERIFY( ! matched );
+   VERIFY( sm.ready() );
+   VERIFY( sm.empty() );
+   VERIFY( sm.size() == 0 );
+   VERIFY( sm.begin() == sm.end() ); // PR libstdc++/102667
+ 
+   matched = std::regex_match("a", sm, std::regex("a"));
+   VERIFY( matched );
+   VERIFY( sm.ready() );
+   VERIFY( ! sm.empty() );
+   VERIFY( sm.size() == 1 );
+   VERIFY( (sm.end() - sm.begin()) == 1 );
+ 
+   matched = std::regex_search("abcd", sm, std::regex("(b)(c)"));
+   VERIFY( matched );
+   VERIFY( sm.ready() );
+   VERIFY( ! sm.empty() );
+   VERIFY( sm.size() == 3 );
+   VERIFY( (sm.end() - sm.begin()) == 3 );
+ }
+ 
+ int main()
+ {
+   test01();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc gcc-10.4.0/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc	Tue Jun 28 08:54:36 2022
***************
*** 0 ****
--- 1,13 ----
+ // { dg-do compile { target c++11 } }
+ // DR 3220. P0558 broke conforming C++14 uses of atomic shared_ptr
+ 
+ #include <atomic>
+ #include <memory>
+ 
+ struct Abstract { virtual void test() = 0; };
+ struct Concrete : Abstract { virtual void test() override {} };
+ 
+ int main() {
+   std::shared_ptr<Abstract> ptr;
+   std::atomic_store<Abstract>(&ptr, std::make_shared<Concrete>());
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/30_threads/jthread/95989.cc gcc-10.4.0/libstdc++-v3/testsuite/30_threads/jthread/95989.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/30_threads/jthread/95989.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/30_threads/jthread/95989.cc	Tue Jun 28 08:54:37 2022
***************
*** 20,25 ****
--- 20,26 ----
  // { dg-require-gthreads {} }
  // { dg-additional-options "-pthread" { target pthread } }
  // { dg-additional-options "-static" { target static } }
+ // { dg-skip-if "broken" { *-*-* } }
  
  #include <thread>
  
*************** int
*** 50,54 ****
  main()
  {
    test01();
!   test01();
  }
--- 51,56 ----
  main()
  {
    test01();
!   test02();
!   test03();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc gcc-10.4.0/libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc	Tue Jun 28 08:54:37 2022
*************** void test02()
*** 119,125 ****
  void test03()
  {
    std::promise<void> p1;
-   int i = 0;
    p1.set_value();
    try {
      p1.set_value_at_thread_exit();
--- 119,124 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc	Tue Jun 28 08:54:37 2022
*************** test01()
*** 53,74 ****
    ++iter;
    VERIFY( iter == end(iter) );
  
! #if !(defined(__MINGW32__) || defined(__MINGW64__))
!   // Test inaccessible directory.
!   permissions(p, fs::perms::none, ec);
!   VERIFY( !ec );
!   iter = fs::directory_iterator(p, ec);
!   VERIFY( ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible directory, skipping permission denied.
!   const auto opts = fs::directory_options::skip_permission_denied;
!   iter = fs::directory_iterator(p, opts, ec);
!   VERIFY( !ec );
!   VERIFY( iter == end(iter) );
! #endif
  
-   permissions(p, fs::perms::owner_all, ec);
    remove_all(p, ec);
  }
  
--- 53,76 ----
    ++iter;
    VERIFY( iter == end(iter) );
  
!   if (__gnu_test::permissions_are_testable())
!   {
!     // Test inaccessible directory.
!     permissions(p, fs::perms::none, ec);
!     VERIFY( !ec );
!     iter = fs::directory_iterator(p, ec);
!     VERIFY( ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible directory, skipping permission denied.
!     const auto opts = fs::directory_options::skip_permission_denied;
!     iter = fs::directory_iterator(p, opts, ec);
!     VERIFY( !ec );
!     VERIFY( iter == end(iter) );
! 
!     permissions(p, fs::perms::owner_all, ec);
!   }
  
    remove_all(p, ec);
  }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc	Tue Jun 28 08:54:37 2022
***************
*** 0 ****
--- 1,140 ----
+ // Copyright (C) 2020-2022 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-DUSE_FILESYSTEM_TS -lstdc++fs" }
+ // { dg-do run { target { c++11 } } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <experimental/filesystem>
+ #include <cerrno>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <dirent.h>
+ #include <testsuite_hooks.h>
+ #include <testsuite_fs.h>
+ 
+ int choice;
+ 
+ struct dirent global_dirent;
+ 
+ extern "C" struct dirent* readdir(DIR*)
+ {
+   switch (choice)
+   {
+   case 1:
+     global_dirent.d_ino = 999;
+ #if defined _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE && defined DT_REG
+     global_dirent.d_type = DT_REG;
+ #endif
+     global_dirent.d_reclen = 0;
+     std::char_traits<char>::copy(global_dirent.d_name, "file", 5);
+     choice = 0;
+     return &global_dirent;
+   case 2:
+     global_dirent.d_ino = 111;
+ #if defined _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE && defined DT_DIR
+     global_dirent.d_type = DT_DIR;
+ #endif
+     global_dirent.d_reclen = 60;
+     std::char_traits<char>::copy(global_dirent.d_name, "subdir", 7);
+     choice = 1;
+     return &global_dirent;
+   default:
+     errno = EIO;
+     return nullptr;
+   }
+   return &global_dirent;
+ }
+ 
+ void
+ test01()
+ {
+   namespace fs = std::experimental::filesystem;
+   std::error_code ec;
+   choice = 1;
+   fs::recursive_directory_iterator it(".", ec);
+   if (choice == 0) // custom readdir was called
+   {
+     it.increment(ec);
+     VERIFY( ec.value() == EIO );
+     VERIFY( it == end(it) );
+   }
+   else
+   {
+     puts("Custom readdir not used, cannot test error handling");
+     exit(0);
+   }
+ 
+ #if __cpp_exceptions
+   choice = 1;
+   fs::recursive_directory_iterator it2(".", ec);
+   if (choice == 0) // custom readdir was called
+   {
+     try {
+       ++it2;
+       VERIFY( false );
+     } catch (const fs::filesystem_error& e) {
+       VERIFY( e.code().value() == EIO );
+       VERIFY( it2 == end(it2) );
+     }
+   }
+ #endif
+ }
+ 
+ void
+ test02()
+ {
+   namespace fs = std::experimental::filesystem;
+   auto dir = __gnu_test::nonexistent_path();
+   fs::create_directories(dir/"subdir");
+ 
+   std::error_code ec;
+   choice = 2;
+   fs::recursive_directory_iterator it(dir, ec);
+   if (choice == 1)
+   {
+     ++it;
+     it.pop(ec);
+     VERIFY( ec.value() == EIO );
+     VERIFY( it == end(it) );
+   }
+ 
+ #if __cpp_exceptions
+   choice = 2;
+   fs::recursive_directory_iterator it2(dir, ec);
+   if (choice == 1)
+   {
+     ++it2;
+     try {
+       it2.pop();
+       VERIFY( false );
+     } catch (const fs::filesystem_error& e) {
+       VERIFY( e.code().value() == EIO );
+       VERIFY( it2 == end(it2) );
+     }
+   }
+ #endif
+ 
+   fs::remove_all(dir, ec);
+ }
+ 
+ int
+ main()
+ {
+   test01();
+   test02();
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc	Tue Jun 28 08:54:37 2022
*************** test01()
*** 61,114 ****
    ++iter;
    VERIFY( iter == end(iter) );
  
!   // Test inaccessible directory.
!   ec = bad_ec;
!   permissions(p, fs::perms::none, ec);
!   VERIFY( !ec );
!   iter = fs::recursive_directory_iterator(p, ec);
!   VERIFY( ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible directory, skipping permission denied.
!   const auto opts = fs::directory_options::skip_permission_denied;
!   ec = bad_ec;
!   iter = fs::recursive_directory_iterator(p, opts, ec);
!   VERIFY( !ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible sub-directory.
!   ec = bad_ec;
!   permissions(p, fs::perms::owner_all, ec);
!   VERIFY( !ec );
!   ec = bad_ec;
!   permissions(p/"d1/d2", fs::perms::none, ec);
!   VERIFY( !ec );
!   ec = bad_ec;
!   iter = fs::recursive_directory_iterator(p, ec);
!   VERIFY( !ec );
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1" );
!   ++iter;              // should recurse into d1
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1/d2" );
!   iter.increment(ec);  // should fail to recurse into p/d1/d2
!   VERIFY( ec );
!   VERIFY( iter == end(iter) );
  
!   // Test inaccessible sub-directory, skipping permission denied.
!   ec = bad_ec;
!   iter = fs::recursive_directory_iterator(p, opts, ec);
!   VERIFY( !ec );
!   VERIFY( iter != end(iter) );
!   VERIFY( iter->path() == p/"d1" );
!   ++iter;              // should recurse into d1
!   VERIFY( iter->path() == p/"d1/d2" );
!   ec = bad_ec;
!   iter.increment(ec);  // should fail to recurse into p/d1/d2, so skip it
!   VERIFY( !ec );
!   VERIFY( iter == end(iter) );
  
-   permissions(p/"d1/d2", fs::perms::owner_all, ec);
    remove_all(p, ec);
  }
  
--- 61,118 ----
    ++iter;
    VERIFY( iter == end(iter) );
  
!   if (__gnu_test::permissions_are_testable())
!   {
!     // Test inaccessible directory.
!     ec = bad_ec;
!     permissions(p, fs::perms::none, ec);
!     VERIFY( !ec );
!     iter = fs::recursive_directory_iterator(p, ec);
!     VERIFY( ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible directory, skipping permission denied.
!     const auto opts = fs::directory_options::skip_permission_denied;
!     ec = bad_ec;
!     iter = fs::recursive_directory_iterator(p, opts, ec);
!     VERIFY( !ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible sub-directory.
!     ec = bad_ec;
!     permissions(p, fs::perms::owner_all, ec);
!     VERIFY( !ec );
!     ec = bad_ec;
!     permissions(p/"d1/d2", fs::perms::none, ec);
!     VERIFY( !ec );
!     ec = bad_ec;
!     iter = fs::recursive_directory_iterator(p, ec);
!     VERIFY( !ec );
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1" );
!     ++iter;              // should recurse into d1
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1/d2" );
!     iter.increment(ec);  // should fail to recurse into p/d1/d2
!     VERIFY( ec );
!     VERIFY( iter == end(iter) );
  
!     // Test inaccessible sub-directory, skipping permission denied.
!     ec = bad_ec;
!     iter = fs::recursive_directory_iterator(p, opts, ec);
!     VERIFY( !ec );
!     VERIFY( iter != end(iter) );
!     VERIFY( iter->path() == p/"d1" );
!     ++iter;              // should recurse into d1
!     VERIFY( iter->path() == p/"d1/d2" );
!     ec = bad_ec;
!     iter.increment(ec);  // should fail to recurse into p/d1/d2, so skip it
!     VERIFY( !ec );
!     VERIFY( iter == end(iter) );
! 
!     permissions(p/"d1/d2", fs::perms::owner_all, ec);
!   }
  
    remove_all(p, ec);
  }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc	Tue Jun 28 08:54:37 2022
*************** test05()
*** 190,195 ****
--- 190,223 ----
    VERIFY( !ec );  // Previous value should be cleared (LWG 2683)
  }
  
+ void
+ test_pr99290()
+ {
+   auto dir = __gnu_test::nonexistent_path();
+   auto source = dir/"source";
+   auto dest = dir/"dest";
+   create_directories(source/"emptydir");
+   create_directories(dest/"emptydir");
+   std::ofstream{source/"file"} << 'a';
+   std::ofstream{dest/"file"} << 'b';
+   // PR libstdc++/99290
+   // std::filesystem::copy does not always report errors for recursion
+   std::error_code ec;
+   copy(source, dest, ec);
+   VERIFY( ec == std::errc::file_exists );
+ 
+ #if __cpp_exceptions
+   try {
+     copy(source, dest);
+     VERIFY( false );
+   } catch (const fs::filesystem_error& e) {
+     VERIFY( e.code() == std::errc::file_exists );
+   }
+ #endif
+ 
+   remove_all(dir);
+ }
+ 
  int
  main()
  {
*************** main()
*** 198,201 ****
--- 226,230 ----
    test03();
    test04();
    test05();
+   test_pr99290();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc	Tue Jun 28 08:54:37 2022
*************** test03()
*** 129,138 ****
--- 129,161 ----
    remove_all(p);
  }
  
+ void
+ test04()
+ {
+ #if defined(__MINGW32__) || defined(__MINGW64__)
+   // no symlinks
+ #else
+   // PR libstdc++/101510
+   // create_directories reports an error if the path is a symlink to a dir
+   std::error_code ec = make_error_code(std::errc::invalid_argument);
+   const auto p = __gnu_test::nonexistent_path() / "";
+   fs::create_directories(p/"dir");
+   auto link = p/"link";
+   fs::create_directory_symlink("dir", link);
+   bool created = fs::create_directories(link, ec);
+   VERIFY( !created );
+   VERIFY( !ec );
+   created = fs::create_directories(link);
+   VERIFY( !created );
+   remove_all(p);
+ #endif
+ }
+ 
  int
  main()
  {
    test01();
    test02();
    test03();
+   test04();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc	Tue Jun 28 08:54:37 2022
*************** test01()
*** 46,57 ****
--- 46,89 ----
    VERIFY( exists(p) );
  
    // Test existing path (libstdc++/71036).
+   ec = make_error_code(std::errc::invalid_argument);
    b = create_directory(p, ec);
    VERIFY( !ec );
    VERIFY( !b );
    b = create_directory(p);
    VERIFY( !b );
  
+   auto f = p/"file";
+   std::ofstream{f} << "create file";
+   b = create_directory(f, ec);
+   VERIFY( ec == std::errc::file_exists );
+   VERIFY( !b );
+   try
+   {
+     create_directory(f);
+     VERIFY( false );
+   }
+   catch (const fs::filesystem_error& e)
+   {
+     VERIFY( e.code() == std::errc::file_exists );
+     VERIFY( e.path1() == f );
+   }
+ 
+ #if defined(__MINGW32__) || defined(__MINGW64__)
+   // no symlinks
+ #else
+   // PR libstdc++/101510 create_directory on an existing symlink to a directory
+   fs::create_directory(p/"dir");
+   auto link = p/"link";
+   fs::create_directory_symlink("dir", link);
+   ec = make_error_code(std::errc::invalid_argument);
+   b = fs::create_directory(link, ec);
+   VERIFY( !b );
+   VERIFY( !ec );
+   b = fs::create_directory(link);
+   VERIFY( !b );
+ #endif
+ 
    remove_all(p, ec);
  }
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc	Tue Jun 28 08:54:37 2022
*************** test03()
*** 74,83 ****
  void
  test04()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // filesystem permissions not supported
!   return;
! #endif
  
    using perms = std::experimental::filesystem::perms;
    path p = __gnu_test::nonexistent_path();
--- 74,81 ----
  void
  test04()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
  
    using perms = std::experimental::filesystem::perms;
    path p = __gnu_test::nonexistent_path();
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc	Tue Jun 28 08:54:37 2022
*************** namespace fs = std::experimental::filesy
*** 28,37 ****
  void
  test01()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // filesystem permissions not supported
!   return;
! #endif
  
    auto p = __gnu_test::nonexistent_path();
    create_directory(p);
--- 28,35 ----
  void
  test01()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
  
    auto p = __gnu_test::nonexistent_path();
    create_directory(p);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc	Tue Jun 28 08:54:37 2022
*************** test01()
*** 78,96 ****
    VERIFY( !n );
    VERIFY( exists(dir/"a/b") );
  
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // No permissions support
! #else
!   permissions(dir, fs::perms::none, ec);
!   if (!ec)
    {
!     ec.clear();
!     n = remove(dir/"a/b", ec);
!     VERIFY( ec );
!     VERIFY( !n );
!     permissions(dir, fs::perms::owner_all, ec);
    }
- #endif
  
    ec = bad_ec;
    n = remove(dir/"a/b", ec);
--- 78,95 ----
    VERIFY( !n );
    VERIFY( exists(dir/"a/b") );
  
!   if (__gnu_test::permissions_are_testable())
    {
!     permissions(dir, fs::perms::none, ec);
!     if (!ec)
!     {
!       ec.clear();
!       n = remove(dir/"a/b", ec);
!       VERIFY( ec );
!       VERIFY( !n );
!       permissions(dir, fs::perms::owner_all, ec);
!     }
    }
  
    ec = bad_ec;
    n = remove(dir/"a/b", ec);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc	Tue Jun 28 08:54:37 2022
*************** test02()
*** 111,119 ****
  void
  test04()
  {
! #if defined(__MINGW32__) || defined(__MINGW64__)
!   // no permissions
! #else
    // PR libstdc++/93201
    std::error_code ec;
    std::uintmax_t n;
--- 111,119 ----
  void
  test04()
  {
!   if (!__gnu_test::permissions_are_testable())
!     return;
! 
    // PR libstdc++/93201
    std::error_code ec;
    std::uintmax_t n;
*************** test04()
*** 137,143 ****
    }
  
    fs::permissions(dir, fs::perms::owner_write|fs::perms::add_perms);
! #endif
  }
  
  int
--- 137,144 ----
    }
  
    fs::permissions(dir, fs::perms::owner_write|fs::perms::add_perms);
!   fs::remove_all(dir, ec);
!   f.path.clear();
  }
  
  int
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc	Tue Jun 28 08:54:37 2022
*************** test02()
*** 95,100 ****
--- 95,103 ----
  void
  test03()
  {
+   if (!__gnu_test::permissions_are_testable())
+     return;
+ 
    auto p = __gnu_test::nonexistent_path();
    create_directories(p/"tmp");
    permissions(p, fs::perms::none);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc	Tue Jun 28 08:54:37 2022
***************
*** 0 ****
--- 1,14 ----
+ // { dg-do compile { target c++11 } }
+ // { dg-require-filesystem-ts "" }
+ 
+ #include <experimental/filesystem>
+ 
+ void f(bool) { }
+ void f(const std::experimental::filesystem::path&) { }
+ 
+ void
+ test_100630()
+ {
+   volatile bool b = true;
+   f(b);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc	Tue Jun 28 08:54:37 2022
***************
*** 17,22 ****
--- 17,23 ----
  
  // { dg-do run { target c++14 } }
  // { dg-add-options net_ts }
+ // { dg-require-gthreads "" }
  
  #include <experimental/internet>
  #include <sstream>
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/random/randint.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/random/randint.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/random/randint.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/random/randint.cc	Tue Jun 28 08:54:37 2022
*************** test01()
*** 34,40 ****
    }
  
    std::experimental::reseed(99u);
!   const long n1[] = {
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
--- 34,40 ----
    }
  
    std::experimental::reseed(99u);
!   const int n1[] = {
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
*************** test01()
*** 42,48 ****
      std::experimental::randint(0, 100)
    };
    std::experimental::reseed(99u);
!   const long n2[] = {
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
--- 42,48 ----
      std::experimental::randint(0, 100)
    };
    std::experimental::reseed(99u);
!   const int n2[] = {
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
      std::experimental::randint(0, 100),
*************** test01()
*** 52,64 ****
    for (int i = 0; i < 5; ++i)
      VERIFY( n1[i] == n2[i] );
  
!   std::experimental::reseed();
!   const long n3[] = {
!     std::experimental::randint(0, 100),
!     std::experimental::randint(0, 100),
!     std::experimental::randint(0, 100)
!   };
!   VERIFY( !(n3[0] == n1[0] && n3[1] == n1[1] && n3[2] == n1[2]) );
  }
  
  void
--- 52,64 ----
    for (int i = 0; i < 5; ++i)
      VERIFY( n1[i] == n2[i] );
  
!   do
!   {
!     std::experimental::reseed();
!   }
!   while (std::experimental::randint(0, 100) == n1[0]
!       && std::experimental::randint(0, 100) == n1[1]
!       && std::experimental::randint(0, 100) == n1[2]);
  }
  
  void
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc gcc-10.4.0/libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc	Tue Jun 28 08:54:37 2022
*************** test01()
*** 81,88 ****
    test_value(wcsncmp(str_1.data(), str_0.data(), 6), z);
    test_value(wcsncmp(str_1.data(), str_0.data(), 14), lt);
    test_value(wmemcmp(str_1.data(), str_0.data(), 6), z);
!   test_value(wmemcmp(str_1.data(), str_0.data(), 14), lt);
!   test_value(wmemcmp(L"costa marbella", L"costa rica", 14), lt);
  
    // int compare(const basic_string_view& str) const;
    test_value(str_0.compare(str_1), gt); //because r>m
--- 81,88 ----
    test_value(wcsncmp(str_1.data(), str_0.data(), 6), z);
    test_value(wcsncmp(str_1.data(), str_0.data(), 14), lt);
    test_value(wmemcmp(str_1.data(), str_0.data(), 6), z);
!   test_value(wmemcmp(str_1.data(), str_0.data(), 10), lt);
!   test_value(wmemcmp(L"costa marbella", L"costa rica", 10), lt);
  
    // int compare(const basic_string_view& str) const;
    test_value(str_0.compare(str_1), gt); //because r>m
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc gcc-10.4.0/libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc	Tue Jun 28 08:54:37 2022
***************
*** 20,25 ****
--- 20,26 ----
  // { dg-do run }
  // { dg-options "-pthread"  }
  // { dg-require-effective-target pthread }
+ // { dg-timeout-factor 2 }
  
  #include <ext/rope>
  #include <cstring>
*************** typedef __gnu_cxx::rope<char, std::alloc
*** 33,39 ****
  rope_type foo2;
  rope_type foo4;
  
! void* thread_main(void *) 
  {
    // To see a problem with gcc 3.3 and before, set a break point here.
    // Single step through c_str implementation, call sched_yield after
--- 34,40 ----
  rope_type foo2;
  rope_type foo4;
  
! void* thread_main(void *)
  {
    // To see a problem with gcc 3.3 and before, set a break point here.
    // Single step through c_str implementation, call sched_yield after
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/lib/gdb-test.exp gcc-10.4.0/libstdc++-v3/testsuite/lib/gdb-test.exp
*** gcc-10.3.0/libstdc++-v3/testsuite/lib/gdb-test.exp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/lib/gdb-test.exp	Tue Jun 28 08:54:37 2022
*************** proc get_line_number {filename marker} {
*** 50,89 ****
      return $gdb_markers($filename,$marker)
  }
  
! # Make note of a gdb test.  A test consists of a variable name and an
! # expected result.
! proc note-test {var result} {
      global gdb_tests
  
!     lappend gdb_tests $var $result print 0
  }
  
  # A test that uses a regular expression.  This is like note-test, but
  # the result is a regular expression that is matched against the
  # output.
! proc regexp-test {var result} {
!     global gdb_tests
! 
!     lappend gdb_tests $var $result print 1
  }
  
  # A test of 'whatis'.  This tests a type rather than a variable.
! proc whatis-test {var result} {
!     global gdb_tests
! 
!     lappend gdb_tests $var $result whatis 0
  }
  
  # A test of 'whatis' that uses a regular expression. This tests a type rather
  # than a variable.
! proc whatis-regexp-test {var result} {
!     global gdb_tests
! 
!     lappend gdb_tests $var $result whatis 1
  }
  
  # Utility for testing variable values using gdb, invoked via dg-final.
! # Tests all tests indicated by note-test and regexp-test.
  #
  # Argument 0 is the marker on which to put a breakpoint
  # Argument 2 handles expected failures and the like
--- 50,97 ----
      return $gdb_markers($filename,$marker)
  }
  
! proc register_gdb_test {var result kind rexp selector} {
      global gdb_tests
  
!     set xfail 0
!     if {[string length $selector] > 0} {
! 	switch [dg-process-target $selector] {
! 	    "N" { return }
! 	    "S" { }
! 	    "P" { }
! 	    "F" { set xfail 1 }
! 	}
!     }
! 
!     lappend gdb_tests $var $result $kind $rexp $xfail
! }
! 
! # Make note of a gdb test.  A test consists of a variable name and an
! # expected result, and an optional target selector.
! proc note-test {var result {selector {}}} {
!     register_gdb_test $var $result print 0 $selector
  }
  
  # A test that uses a regular expression.  This is like note-test, but
  # the result is a regular expression that is matched against the
  # output.
! proc regexp-test {var result {selector {}}} {
!     register_gdb_test $var $result print 1 $selector
  }
  
  # A test of 'whatis'.  This tests a type rather than a variable.
! proc whatis-test {var result {selector {}}} {
!     register_gdb_test $var $result whatis 0 $selector
  }
  
  # A test of 'whatis' that uses a regular expression. This tests a type rather
  # than a variable.
! proc whatis-regexp-test {var result {selector {}}} {
!     register_gdb_test $var $result whatis 1 $selector
  }
  
  # Utility for testing variable values using gdb, invoked via dg-final.
! # Tests all tests indicated by note-test, whatis-test, and the regexp versions.
  #
  # Argument 0 is the marker on which to put a breakpoint
  # Argument 2 handles expected failures and the like
*************** proc gdb-test { marker {selector {}} {lo
*** 144,150 ****
      puts $fd "info share"
  
      set count 0
!     foreach {var result kind rexp} $gdb_tests {
  	incr count
  	set gdb_var($count) $var
  	set gdb_expected($count) $result
--- 152,158 ----
      puts $fd "info share"
  
      set count 0
!     foreach {var result kind rexp xfail} $gdb_tests {
  	incr count
  	set gdb_var($count) $var
  	set gdb_expected($count) $result
*************** proc gdb-test { marker {selector {}} {lo
*** 152,157 ****
--- 160,166 ----
  	    if {$do_whatis_tests} {
  		set gdb_is_type($count) 1
  		set gdb_is_regexp($count) $rexp
+ 		set gdb_is_xfail($count) $xfail
  		set gdb_command($count) "whatis $var"
  	    } else {
  	        unsupported "$testname"
*************** proc gdb-test { marker {selector {}} {lo
*** 161,166 ****
--- 170,176 ----
  	} else {
  	    set gdb_is_type($count) 0
  	    set gdb_is_regexp($count) $rexp
+ 	    set gdb_is_xfail($count) $xfail
  	    set gdb_command($count) "print $var"
  	}
  	puts $fd $gdb_command($count)
*************** proc gdb-test { marker {selector {}} {lo
*** 198,208 ****
  	    }
  
  	    if {$match} {
! 		pass "$testname $gdb_command($test_counter)"
  	    } else {
! 		fail "$testname $gdb_command($test_counter)"
! 		verbose "     got =>$first<="
! 		verbose "expected =>$gdb_expected($test_counter)<="
  	    }
  
  	    if {$test_counter == $count} {
--- 208,227 ----
  	    }
  
  	    if {$match} {
! 		if {$gdb_is_xfail($test_counter)} {
! 		    xpass "$testname $gdb_command($test_counter)"
! 		    verbose " matched =>$first<="
! 		} else {
! 		    pass "$testname $gdb_command($test_counter)"
! 		}
  	    } else {
! 		if {$gdb_is_xfail($test_counter)} {
! 		    xfail "$testname $gdb_command($test_counter)"
! 		} else {
! 		    fail "$testname $gdb_command($test_counter)"
! 		    verbose "     got =>$first<="
! 		    verbose "expected =>$gdb_expected($test_counter)<="
! 		}
  	    }
  
  	    if {$test_counter == $count} {
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/lib/libstdc++.exp gcc-10.4.0/libstdc++-v3/testsuite/lib/libstdc++.exp
*** gcc-10.3.0/libstdc++-v3/testsuite/lib/libstdc++.exp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/lib/libstdc++.exp	Tue Jun 28 08:54:37 2022
*************** proc libstdc++-dg-test { prog do_what ex
*** 410,417 ****
      set select_compile "v3_target_compile"
      set options ""
      if { $extra_tool_flags != "" } {
! 	verbose -log "extra_tool_flags are:"
! 	verbose -log -- $extra_tool_flags
  	if { [string first "-x c" $extra_tool_flags ] != -1 } {
  	    verbose -log "compiling and executing as C, not C++"
  	    set edit_tool_flags $extra_tool_flags
--- 410,416 ----
      set select_compile "v3_target_compile"
      set options ""
      if { $extra_tool_flags != "" } {
! 	verbose -log "extra_tool_flags are: $extra_tool_flags"
  	if { [string first "-x c" $extra_tool_flags ] != -1 } {
  	    verbose -log "compiling and executing as C, not C++"
  	    set edit_tool_flags $extra_tool_flags
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/lib/prune.exp gcc-10.4.0/libstdc++-v3/testsuite/lib/prune.exp
*** gcc-10.3.0/libstdc++-v3/testsuite/lib/prune.exp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/lib/prune.exp	Tue Jun 28 08:54:37 2022
*************** proc libstdc++-dg-prune { system text }
*** 63,71 ****
      regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable:  AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
  
!     # Ignore harmless warnings from Xcode 4.0.
      regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
  
      foreach p $additional_prunes {
  	if { [string length $p] > 0 } {
  	    # Following regexp matches a complete line containing $p.
--- 63,74 ----
      regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
      regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable:  AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
  
!     # Ignore harmless warnings from Xcode 4+.
      regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
  
+     # Ignore dsymutil warning (tool bug is actually in the linker)
+     regsub -all "(^|\n)\[^\n\]*could not find object file symbol for symbol\[^\n\]*" $text "" text
+ 
      foreach p $additional_prunes {
  	if { [string length $p] > 0 } {
  	    # Following regexp matches a complete line containing $p.
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc	Tue Jun 28 08:54:37 2022
*************** main()
*** 46,52 ****
    // { dg-final { whatis-regexp-test p1 "std::unique_ptr<std::(__debug::)?vector<std::unique_ptr<std::(__debug::)?vector<int>\\*>>>" } }
    // { dg-final { whatis-regexp-test p2 "std::unique_ptr<std::(__debug::)?vector<std::unique_ptr<std::(__debug::)?set<int>\\*>>\\\[\\\]>" } }
    // { dg-final { whatis-regexp-test p3 "std::unique_ptr<std::(__debug::)?set<std::unique_ptr<std::(__debug::)?vector<int>\\*>>\\\[10\\\]>" } }
!   // { dg-final { whatis-regexp-test p4 "std::unique_ptr<std::(__debug::)?vector<std::unique_ptr<std::(__debug::)?list<std::string>\\\[\\\]>>\\\[99\\\]>" } }
  
    placeholder(&p1);		// Mark SPOT
    placeholder(&p2);
--- 46,52 ----
    // { dg-final { whatis-regexp-test p1 "std::unique_ptr<std::(__debug::)?vector<std::unique_ptr<std::(__debug::)?vector<int>\\*>>>" } }
    // { dg-final { whatis-regexp-test p2 "std::unique_ptr<std::(__debug::)?vector<std::unique_ptr<std::(__debug::)?set<int>\\*>>\\\[\\\]>" } }
    // { dg-final { whatis-regexp-test p3 "std::unique_ptr<std::(__debug::)?set<std::unique_ptr<std::(__debug::)?vector<int>\\*>>\\\[10\\\]>" } }
!   // { dg-final { whatis-regexp-test p4 "std::unique_ptr<std::(__debug::)?vector<std::unique_ptr<std::(__debug::)?list<std::string>\\\[\\\]>>\\\[99\\\]>" { xfail c++20 } } }
  
    placeholder(&p1);		// Mark SPOT
    placeholder(&p2);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc	Tue Jun 28 08:54:37 2022
*************** main()
*** 151,160 ****
--- 151,190 ----
    std::unique_ptr<int, Deleter>& rempty_ptr = empty_ptr;
  // { dg-final { note-test rempty_ptr {std::unique_ptr<int> = {get() = {<No data fields>}}} } }
  
+   struct Deleter_pr103086
+   {
+     int deleter_member = -1;
+     void operator()(int*) const noexcept { }
+   };
+ 
+   std::unique_ptr<int, Deleter_pr103086> uniq_ptr;
+ // { dg-final { note-test uniq_ptr {std::unique_ptr<int> = {get() = 0x0}} } }
+   std::unique_ptr<int, Deleter_pr103086>& runiq_ptr = uniq_ptr;
+ // { dg-final { note-test runiq_ptr {std::unique_ptr<int> = {get() = 0x0}} } }
+ 
    ExTuple tpl(6,7);
  // { dg-final { note-test tpl {std::tuple containing = {[1] = 6, [2] = 7}} } }
    ExTuple &rtpl = tpl;
  // { dg-final { note-test rtpl {std::tuple containing = {[1] = 6, [2] = 7}} } }
+ 
+   std::error_code e0;
+   // { dg-final { note-test e0 {std::error_code = { }} } }
+   std::error_condition ec0;
+   // { dg-final { note-test ec0 {std::error_condition = { }} } }
+   std::error_code einval = std::make_error_code(std::errc::invalid_argument);
+   // { dg-final { note-test einval {std::error_code = {"generic": EINVAL}} } }
+   std::error_condition ecinval = std::make_error_condition(std::errc::invalid_argument);
+   // { dg-final { note-test ecinval {std::error_condition = {"generic": EINVAL}} } }
+ 
+   struct custom_cat : std::error_category {
+     const char* name() const noexcept { return "miaow"; }
+     std::string message(int) const { return ""; }
+   } cat;
+   std::error_code emiaow(42, cat);
+   // { dg-final { note-test emiaow {std::error_code = {"miaow": 42}} } }
+   std::error_condition ecmiaow(42, cat);
+   // { dg-final { note-test ecmiaow {std::error_condition = {"miaow": 42}} } }
+ 
    placeholder(""); // Mark SPOT
    use(efl);
    use(fl);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc	Tue Jun 28 08:54:37 2022
*************** main()
*** 50,56 ****
    om = std::map<int, double>{ {1, 2.}, {3, 4.}, {5, 6.} };
  // { dg-final { regexp-test om {std::experimental::optional<std::(__debug::)?map<int, double>> containing std::(__debug::)?map with 3 elements = {\[1\] = 2, \[3\] = 4, \[5\] = 6}} } }
    optional<std::string> os{ "stringy" };
! // { dg-final { note-test os {std::experimental::optional<std::string> = {[contained value] = "stringy"}} } }
  
    any a;
  // { dg-final { note-test a {std::experimental::any [no contained value]} } }
--- 50,56 ----
    om = std::map<int, double>{ {1, 2.}, {3, 4.}, {5, 6.} };
  // { dg-final { regexp-test om {std::experimental::optional<std::(__debug::)?map<int, double>> containing std::(__debug::)?map with 3 elements = {\[1\] = 2, \[3\] = 4, \[5\] = 6}} } }
    optional<std::string> os{ "stringy" };
! // { dg-final { note-test os {std::experimental::optional<std::string> = {[contained value] = "stringy"}} { xfail c++20 } } }
  
    any a;
  // { dg-final { note-test a {std::experimental::any [no contained value]} } }
*************** main()
*** 61,67 ****
    any ap = (void*)nullptr;
  // { dg-final { note-test ap {std::experimental::any containing void * = {[contained value] = 0x0}} } }
    any as = *os;
! // { dg-final { note-test as {std::experimental::any containing std::string = {[contained value] = "stringy"}} } }
    any as2("stringiest");
  // { dg-final { regexp-test as2 {std::experimental::any containing const char \* = {\[contained value\] = 0x[[:xdigit:]]+ "stringiest"}} } }
    any am = *om;
--- 61,67 ----
    any ap = (void*)nullptr;
  // { dg-final { note-test ap {std::experimental::any containing void * = {[contained value] = 0x0}} } }
    any as = *os;
! // { dg-final { note-test as {std::experimental::any containing std::string = {[contained value] = "stringy"}} { xfail c++20 } } }
    any as2("stringiest");
  // { dg-final { regexp-test as2 {std::experimental::any containing const char \* = {\[contained value\] = 0x[[:xdigit:]]+ "stringiest"}} } }
    any am = *om;
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
*** gcc-10.3.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp	Tue Jun 28 08:54:37 2022
*************** gdb-dg-runtest [lsort [glob $srcdir/$sub
*** 49,55 ****
  
  if { [check_effective_target_lto] } {
    append cxxflags " -flto"
!   # work around sourceware.org 20882
    regsub {^(.*)-Wl,--gc-sections(.*)$} $cxxldflags {\1\2} cxxldflags
    gdb-dg-runtest [lsort [glob $srcdir/$subdir/*.cc]] \
      "" "$DEFAULT_CXXFLAGS -flto $PCH_CXXFLAGS"
--- 49,55 ----
  
  if { [check_effective_target_lto] } {
    append cxxflags " -flto"
!   # Work around linker bug https://sourceware.org/PR20882
    regsub {^(.*)-Wl,--gc-sections(.*)$} $cxxldflags {\1\2} cxxldflags
    gdb-dg-runtest [lsort [glob $srcdir/$subdir/*.cc]] \
      "" "$DEFAULT_CXXFLAGS -flto $PCH_CXXFLAGS"
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/97600.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/97600.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/97600.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/97600.cc	Tue Jun 28 08:54:46 2022
***************
*** 0 ****
--- 1,32 ----
+ // Copyright (C) 2020 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do compile { target c++2a } }
+ 
+ // PR libstdc++/97600
+ 
+ #include <sstream>
+ #include <ranges>
+ 
+ void
+ test01()
+ {
+   std::ranges::basic_istream_view<int, char, std::char_traits<char>> v;
+   v.begin();
+   static_assert(std::ranges::range<decltype(v)>);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/access/empty.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/access/empty.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/access/empty.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/access/empty.cc	Tue Jun 28 08:54:46 2022
*************** test02()
*** 68,76 ****
--- 68,107 ----
    VERIFY( !std::ranges::empty(so) );
  }
  
+ void
+ test04()
+ {
+   struct E1
+   {
+     bool empty() const noexcept { return {}; }
+   };
+ 
+   static_assert( noexcept(std::ranges::empty(E1{})) );
+ 
+   struct E2
+   {
+     bool empty() const noexcept(false) { return {}; }
+   };
+ 
+   static_assert( ! noexcept(std::ranges::empty(E2{})) );
+ 
+   struct E3
+   {
+     struct B
+     {
+       explicit operator bool() const noexcept(false) { return true; }
+     };
+ 
+     B empty() const noexcept { return {}; }
+   };
+ 
+   static_assert( ! noexcept(std::ranges::empty(E3{})) );
+ }
+ 
  int
  main()
  {
    test01();
    test02();
+   test04();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc	Tue Jun 28 08:54:46 2022
*************** struct X
*** 76,81 ****
--- 76,84 ----
  void
  test03()
  {
+   using ranges::next;
+   using ranges::begin;
+ 
    // LWG 3483
    std::pair<int, X> x[3];
    __gnu_test::test_forward_range<std::pair<int, X>> r(x);
*************** test03()
*** 89,98 ****
--- 92,149 ----
    VERIFY( (next(b_const, 2) - b_const) == 2 );
  }
  
+ void
+ test05()
+ {
+   // LWG 3502
+   std::vector<int> vec = {42};
+   auto r1 = vec
+     | views::transform([](auto c) { return std::make_tuple(c, c); })
+     | views::keys;
+   VERIFY( ranges::equal(r1, (int[]){42}) );
+ 
+   std::tuple<int, int> a[] = {{1,2},{3,4}};
+   auto r2 = a | views::keys;
+   VERIFY( r2[0] == 1 && r2[1] == 3 );
+ }
+ 
+ void
+ test06()
+ {
+   // PR libstdc++/100631
+   auto r = views::iota(0)
+     | views::filter([](int){ return true; })
+     | views::take(42)
+     | views::reverse
+     | views::transform([](int) { return std::make_pair(42, "hello"); })
+     | views::take(42)
+     | views::keys;
+   auto b = r.begin();
+   auto e = r.end();
+   VERIFY( e - b == 42 );
+   VERIFY( b - e == -42 );
+ }
+ 
+ void
+ test07()
+ {
+   // PR libstdc++/100631 comment #2
+   auto r = views::iota(0)
+     | views::transform([](int) { return std::make_pair(42, "hello"); })
+     | views::keys;
+   auto b = ranges::cbegin(r);
+   auto e = ranges::end(r);
+   b.base() == e.base();
+   b == e;
+ }
+ 
  int
  main()
  {
    test01();
    test02();
    test03();
+   test05();
+   test06();
+   test07();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc	Tue Jun 28 08:54:46 2022
*************** test08()
*** 149,154 ****
--- 149,164 ----
    VERIFY( i->a == 5 );
  }
  
+ void
+ test10()
+ {
+   // PR libstdc++/100290
+   auto v = views::single(0)
+     | views::transform([](const auto& s) { return views::single(s); })
+     | views::join;
+   VERIFY( ranges::next(v.begin()) == v.end() );
+ }
+ 
  int
  main()
  {
*************** main()
*** 160,163 ****
--- 170,174 ----
    test06();
    test07();
    test08();
+   test10();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc	Tue Jun 28 08:54:46 2022
*************** void test06()
*** 149,154 ****
--- 149,163 ----
    static_assert( std::ranges::range<const V> );
  }
  
+ void
+ test08()
+ {
+   // PR libstdc++/100639
+   auto v = views::iota(1701ll, 3000ll) | views::reverse | views::take(5);
+   for (auto x : v)
+     ;
+ }
+ 
  int
  main()
  {
*************** main()
*** 158,161 ****
--- 167,171 ----
    test04();
    test05();
    test06();
+   test08();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/split.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/split.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/split.cc	Tue Jun 28 08:54:46 2022
*************** test08()
*** 152,157 ****
--- 152,168 ----
    VERIFY( i == v.end() );
  }
  
+ void
+ test10()
+ {
+   // LWG 3505
+   auto to_string = [] (auto r) {
+     return std::string(r.begin(), ranges::next(r.begin(), r.end()));
+   };
+   auto v = "xxyx"sv | views::split("xy"sv) | views::transform(to_string);
+   VERIFY( ranges::equal(v, (std::string_view[]){"x", "x"}) );
+ }
+ 
  int
  main()
  {
*************** main()
*** 163,166 ****
--- 174,178 ----
    test06();
    test07();
    test08();
+   test10();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc	Tue Jun 28 08:54:46 2022
*************** struct Y
*** 132,137 ****
--- 132,140 ----
  void
  test06()
  {
+   using ranges::next;
+   using ranges::begin;
+ 
    // LWG 3483
    Y y[3];
    __gnu_test::test_forward_range<Y> r(y);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc	Tue Jun 28 08:54:46 2022
*************** test04()
*** 77,82 ****
--- 77,92 ----
    VERIFY( it == v.end() );
  }
  
+ void
+ test05()
+ {
+   // PR libstdc++/100690
+   int x[] = {42, 42, 42};
+   auto r = std::views::iota(std::ranges::begin(x), std::ranges::cbegin(x) + 3);
+   VERIFY( r.end() - r.begin() == 3 );
+   VERIFY( r.begin() - r.end() == -3 );
+ }
+ 
  int
  main()
  {
*************** main()
*** 84,87 ****
--- 94,98 ----
    test02();
    test03();
    test04();
+   test05();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/istream_view.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/istream_view.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/istream_view.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/istream_view.cc	Tue Jun 28 08:54:46 2022
*************** test04()
*** 83,88 ****
--- 83,108 ----
    static_assert(!std::forward_iterator<It>);
  }
  
+ void
+ test05()
+ {
+   // PR libstdc++/101231
+   auto words = std::istringstream{"42"};
+   auto is = ranges::istream_view<int>(words);
+   auto r = is | views::filter([](auto) { return true; });
+   for (auto x : r)
+     ;
+ }
+ 
+ void
+ test06()
+ {
+   // Default template argument
+   using V = std::ranges::basic_istream_view<int, char>;
+   using W = std::ranges::basic_istream_view<int, char, std::char_traits<char>>;
+   static_assert( std::is_same_v<V, W> );
+ }
+ 
  int
  main()
  {
*************** main()
*** 90,93 ****
--- 110,115 ----
    test02();
    test03();
    test04();
+   test05();
+   test06();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/p2259.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/p2259.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/p2259.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/p2259.cc	Tue Jun 28 08:54:46 2022
***************
*** 0 ****
--- 1,91 ----
+ // Copyright (C) 2021 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library.  This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 3, or (at your option)
+ // any later version.
+ 
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ // GNU General Public License for more details.
+ 
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING3.  If not see
+ // <http://www.gnu.org/licenses/>.
+ 
+ // { dg-options "-std=gnu++2a" }
+ // { dg-do compile { target c++2a } }
+ 
+ // Verify P2259 changes.
+ 
+ #include <ranges>
+ #include <tuple>
+ #include <vector>
+ 
+ namespace ranges = std::ranges;
+ namespace views = std::views;
+ 
+ using std::__detail::__iter_without_category;
+ 
+ template<typename _Range>
+ concept only_cxx20_input_range = ranges::input_range<_Range>
+   && !ranges::forward_range<_Range>
+   && __iter_without_category<ranges::iterator_t<_Range>>;
+ 
+ void
+ test01()
+ {
+   extern std::vector<int> vec;
+   only_cxx20_input_range auto v0
+     = vec
+     | views::transform([](int c) { return views::single(c); })
+     | views::join;
+ 
+   // Verify the changes to filter_view.
+   only_cxx20_input_range auto v1 = v0 | views::filter([](int c) { return c > 0; });
+ 
+   // Verify the changes to transform_view.
+   only_cxx20_input_range auto v2 = v0 | views::transform([](int& c) -> auto& { return c; });
+ 
+   // Verify the changes to split_view.
+   only_cxx20_input_range auto v3 = v0 | views::split(12);
+   static_assert(only_cxx20_input_range<decltype(*v3.begin())>);
+ 
+   // Verify the changes to join_view.
+   only_cxx20_input_range auto v4 = v0 | views::split(12) | views::join;
+ 
+   // Verify the changes to elements_view.
+   only_cxx20_input_range auto v5
+     = v0
+     | views::transform([](int c) { return std::make_tuple(c, c); })
+     | views::elements<0>;
+ 
+   // Verify the changes to common_iterator.
+   only_cxx20_input_range auto v6 = v0 | views::common;
+   *(v6.begin()++);
+ 
+   // Verify the changes to iota_view.
+   only_cxx20_input_range auto v8 = ranges::iota_view{v0.begin()};
+ 
+   // Verify the changes to move_iterator.
+   __iter_without_category auto i9 = std::make_move_iterator(v0.begin());
+ 
+   // Verify the changes to counted_iterator.
+   extern std::counted_iterator<int*> i10;
+   static_assert(std::contiguous_iterator<decltype(i10)>);
+   static_assert(std::same_as<std::iterator_traits<decltype(i10)>::iterator_category,
+ 			     std::random_access_iterator_tag>);
+   i10.operator->();
+   __iter_without_category auto i11 = std::counted_iterator{v0.begin(), 5};
+ }
+ 
+ void
+ test02()
+ {
+   // Verify LWG 3291 example.
+   auto v = views::iota(0);
+   auto i = std::counted_iterator{v.begin(), 5};
+   static_assert(std::random_access_iterator<decltype(i)>);
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/p2325.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/p2325.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/p2325.cc	Thu Jan  1 00:00:00 1970
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/p2325.cc	Tue Jun 28 08:54:46 2022
***************
*** 0 ****
--- 1,181 ----
+ // { dg-options "-std=gnu++20" }
+ // { dg-do compile { target c++20 } }
+ // P2325R3 "Views should not be required to be default constructible"
+ 
+ // Parts of P2325R3 are deliberately omitted in libstdc++ 10, in particular the
+ // removal of default ctors for back_/front_insert_iterator, ostream_iterator,
+ // ref_view and basic_istream_view/::iterator, so as to maximize backward
+ // compatibility with pre-P2325R3 code.  So most static_asserts in this test fail,
+ // see the xfails at the end of this file.
+ 
+ #include <ranges>
+ #include <iterator>
+ #include <span>
+ #include <sstream>
+ #include <vector>
+ #include <testsuite_iterators.h>
+ 
+ using namespace std;
+ 
+ template<default_initializable T> void f();
+ template<typename T> requires weakly_incrementable<T> || ranges::view<T> void f();
+ 
+ void
+ test01()
+ {
+   // Verify neither std::weakly_incrementable nor ranges::view require
+   // default_initializable.
+   f<int>(); // { dg-error "ambiguous" }
+ }
+ 
+ void
+ test02()
+ {
+   // Verify these iterators are not default constructible.
+   static_assert(!default_initializable<insert_iterator<vector<int>>>);
+   static_assert(!default_initializable<front_insert_iterator<vector<int>>>);
+   static_assert(!default_initializable<back_insert_iterator<vector<int>>>);
+   static_assert(!default_initializable<ostream_iterator<int>>);
+ 
+   using iter = ostream_iterator<int>;
+ 
+   // Verify common_iterator is conditionally default constructible.
+   static_assert(!default_initializable<common_iterator<iter, unreachable_sentinel_t>>);
+   static_assert(default_initializable<common_iterator<int*, unreachable_sentinel_t>>);
+ 
+   // Verify counted_iterator is conditionally default constructible.
+   static_assert(!default_initializable<counted_iterator<iter>>);
+   static_assert(default_initializable<counted_iterator<int*>>);
+ }
+ 
+ void
+ test03()
+ {
+   using iter = ostream_iterator<int>;
+ 
+   // Verify iota_view is conditionally default constructible.
+   static_assert(!default_initializable<ranges::iota_view<iter>>);
+   static_assert(!default_initializable<decltype(declval<ranges::iota_view<iter>>().begin())>);
+   static_assert(default_initializable<ranges::iota_view<int>>);
+   static_assert(default_initializable<decltype(declval<ranges::iota_view<int>>().begin())>);
+ 
+   // Verify subrange is conditionally default constructible.
+   static_assert(!default_initializable<ranges::subrange<iter, unreachable_sentinel_t>>);
+   static_assert(default_initializable<ranges::subrange<int*, unreachable_sentinel_t>>);
+ 
+   // Verify single_view is conditionally default constructible.
+   static_assert(!default_initializable<ranges::single_view<iter>>);
+   static_assert(default_initializable<ranges::single_view<int*>>);
+ }
+ 
+ void
+ test04()
+ {
+   // Verify basic_istream_view is not default constructible.
+   using type = ranges::basic_istream_view<int, char, char_traits<char>>;
+   static_assert(!default_initializable<type>);
+   static_assert(!default_initializable<decltype(declval<type>().begin())>);
+ }
+ 
+ void
+ test05()
+ {
+   // Verify ref_view is not default constructible.
+   static_assert(!default_initializable<ranges::ref_view<int[5]>>);
+ }
+ 
+ template<auto& adaptor>
+ void
+ test06()
+ {
+   auto f1 = [] (auto) { return true; };
+   auto f2 = [i=0] (auto) { return true; };
+   static_assert(default_initializable<decltype(views::single(0) | adaptor(f1))>);
+   static_assert(!default_initializable<decltype(views::single(0) | adaptor(f2))>);
+ 
+   struct S { S() = delete; };
+   static_assert(!default_initializable<decltype(views::single(declval<S>()) | adaptor(f1))>);
+   static_assert(!default_initializable<decltype(views::single(declval<S>()) | adaptor(f2))>);
+ }
+ 
+ // Verify filter_view, transform_view, take_while_view and drop_while_view are
+ // conditionally default constructible.
+ template void test06<views::filter>();
+ template void test06<views::transform>();
+ template void test06<views::take_while>();
+ template void test06<views::drop_while>();
+ 
+ void
+ test07()
+ {
+   // Verify join_view is conditionally default constructible.
+   struct S { S() = delete; };
+   using type1 = ranges::join_view<ranges::single_view<ranges::single_view<S>>>;
+   static_assert(!default_initializable<type1>);
+   using type2 = ranges::join_view<ranges::single_view<ranges::single_view<int>>>;
+   static_assert(default_initializable<type2>);
+ }
+ 
+ void
+ test08()
+ {
+   // Verify split_view is conditionally default constructible.
+   using type1 = ranges::split_view<ranges::ref_view<int[2]>, ranges::single_view<int>>;
+   static_assert(!default_initializable<type1>);
+   using type2 = ranges::split_view<ranges::single_view<int>, ranges::ref_view<int[2]>>;
+   static_assert(!default_initializable<type2>);
+   using type3 = ranges::split_view<ranges::ref_view<int[2]>, ranges::ref_view<int[2]>>;
+   static_assert(!default_initializable<type3>);
+   using type4 = ranges::split_view<ranges::single_view<int>, ranges::single_view<int>>;
+   static_assert(default_initializable<type4>);
+ }
+ 
+ void
+ test09()
+ {
+   // Verify common_view is conditionally default constructible.
+   using type1 = ranges::common_view<ranges::iota_view<ostream_iterator<int>>>;
+   static_assert(!default_initializable<type1>);
+   using type2 = ranges::common_view<ranges::iota_view<int*>>;
+   static_assert(default_initializable<type2>);
+ }
+ 
+ void
+ test10()
+ {
+   // Verify reverse_view is conditionally default constructible.
+   using type1 = ranges::reverse_view<ranges::ref_view<int[2]>>;
+   static_assert(!default_initializable<type1>);
+   using type2 = ranges::reverse_view<ranges::single_view<int>>;
+   static_assert(default_initializable<type2>);
+ }
+ 
+ void
+ test11()
+ {
+   // Verify elements_view is conditionally default constructible.
+   using type1 = ranges::elements_view<ranges::ref_view<pair<int,int>[2]>, 0>;
+   static_assert(!default_initializable<type1>);
+   using type2 = ranges::elements_view<ranges::single_view<pair<int,int>>, 0>;
+   static_assert(default_initializable<type2>);
+ }
+ 
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 35 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 36 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 37 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 38 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 43 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 47 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 57 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 58 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 63 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 67 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 76 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 77 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 84 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 124 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 126 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 128 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 138 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 148 }
+ // { dg-bogus "static assertion failed" "" { xfail *-*-* } 158 }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/range.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/range.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/range.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/range.cc	Tue Jun 28 08:54:46 2022
*************** static_assert( same_as<std::ranges::rang
*** 75,83 ****
  static_assert( same_as<std::ranges::range_difference_t<O>,
  		       std::ptrdiff_t> );
  
- static_assert( same_as<std::ranges::range_value_t<O>,
- 		       char> );
- 
  static_assert( same_as<std::ranges::range_reference_t<I>,
  		       char&> );
  static_assert( same_as<std::ranges::range_reference_t<O>,
--- 75,80 ----
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/single_view.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/single_view.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/single_view.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/single_view.cc	Tue Jun 28 08:54:46 2022
*************** test03()
*** 58,66 ****
--- 58,81 ----
    VERIFY(*std::ranges::begin(s3) == 'a');
  }
  
+ void
+ test06()
+ {
+   // PR libstdc++/100475 comment #7
+   struct S {
+     S() = default;
+     S(std::initializer_list<S>) = delete;
+     S(const S&) {}
+   };
+   S obj;
+   auto x = std::views::single(obj);
+   auto y = std::views::single(std::move(obj));
+ }
+ 
  int main()
  {
    test01();
    test02();
    test03();
+   test06();
  }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc	Tue Jun 28 08:54:46 2022
*************** struct Base {};
*** 29,31 ****
--- 29,46 ----
  struct Derived : Base {};
  subrange<Derived*> sd;
  subrange<Base*> sb = sd; // { dg-error "conversion" }
+ 
+ void
+ test_lwg3404()
+ {
+   // LWG 3404. Finish removing subrange's conversions from pair-like
+   std::pair<char*, char*> p;
+   subrange sb1(p);			// { dg-error "no matching function" }
+   // { dg-error "class template argument deduction" "" { target *-*-* } 38 }
+   subrange sb2(p, p.second - p.first);	// { dg-error "no matching function" }
+   // { dg-error "class template argument deduction" "" { target *-*-* } 40 }
+ 
+   // { dg-prune-output "in requirements with" }
+   // { dg-prune-output "template constraint failure" }
+   // { dg-prune-output "unsatisfied constraints" }
+ }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/view.cc gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/view.cc
*** gcc-10.3.0/libstdc++-v3/testsuite/std/ranges/view.cc	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/std/ranges/view.cc	Tue Jun 28 08:54:46 2022
***************
*** 31,37 ****
  
  static_assert(std::ranges::view<std::span<int>>);
  static_assert(std::ranges::view<std::span<int, 0>>);
! static_assert(!std::ranges::view<std::span<int, 1>>);
  static_assert(std::ranges::view<std::string_view>);
  static_assert(std::ranges::view<std::experimental::string_view>);
  
--- 31,37 ----
  
  static_assert(std::ranges::view<std::span<int>>);
  static_assert(std::ranges::view<std::span<int, 0>>);
! static_assert(std::ranges::view<std::span<int, 1>>); // Changed with P2325R3
  static_assert(std::ranges::view<std::string_view>);
  static_assert(std::ranges::view<std::experimental::string_view>);
  
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/util/pstl/test_utils.h gcc-10.4.0/libstdc++-v3/testsuite/util/pstl/test_utils.h
*** gcc-10.3.0/libstdc++-v3/testsuite/util/pstl/test_utils.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/util/pstl/test_utils.h	Tue Jun 28 08:54:51 2022
*************** struct invoke_if_<std::false_type, std::
*** 752,758 ****
  {
      template <typename Op, typename... Rest>
      void
!     operator()(bool is_allow, Op op, Rest&&... rest)
      {
          op(std::forward<Rest>(rest)...);
      }
--- 752,758 ----
  {
      template <typename Op, typename... Rest>
      void
!     operator()(bool, Op op, Rest&&... rest)
      {
          op(std::forward<Rest>(rest)...);
      }
*************** struct non_const_wrapper_tagged : non_co
*** 787,800 ****
  
      template <typename Policy, typename Iterator>
      typename std::enable_if<IsPositiveCondition != is_same_iterator_category<Iterator, IteratorTag>::value, void>::type
!     operator()(Policy&& exec, Iterator iter)
      {
      }
  
      template <typename Policy, typename InputIterator, typename OutputIterator>
      typename std::enable_if<IsPositiveCondition != is_same_iterator_category<OutputIterator, IteratorTag>::value,
                              void>::type
!     operator()(Policy&& exec, InputIterator input_iter, OutputIterator out_iter)
      {
      }
  };
--- 787,800 ----
  
      template <typename Policy, typename Iterator>
      typename std::enable_if<IsPositiveCondition != is_same_iterator_category<Iterator, IteratorTag>::value, void>::type
!     operator()(Policy&&, Iterator)
      {
      }
  
      template <typename Policy, typename InputIterator, typename OutputIterator>
      typename std::enable_if<IsPositiveCondition != is_same_iterator_category<OutputIterator, IteratorTag>::value,
                              void>::type
!     operator()(Policy&&, InputIterator, OutputIterator)
      {
      }
  };
*************** struct iterator_invoker<std::forward_ite
*** 999,1005 ****
  {
      template <typename... Rest>
      void
!     operator()(Rest&&... rest)
      {
      }
  };
--- 999,1005 ----
  {
      template <typename... Rest>
      void
!     operator()(Rest&&...)
      {
      }
  };
*************** test_algo_basic_double(F&& f)
*** 1226,1232 ****
  
  template <typename Policy, typename F>
  static void
! invoke_if(Policy&& p, F f)
  {
  #if _PSTL_ICC_16_VC14_TEST_SIMD_LAMBDA_DEBUG_32_BROKEN || _PSTL_ICC_17_VC141_TEST_SIMD_LAMBDA_DEBUG_32_BROKEN
      __pstl::__internal::invoke_if_not(__pstl::__internal::allow_unsequenced<Policy>(), f);
--- 1226,1232 ----
  
  template <typename Policy, typename F>
  static void
! invoke_if(Policy&&, F f)
  {
  #if _PSTL_ICC_16_VC14_TEST_SIMD_LAMBDA_DEBUG_32_BROKEN || _PSTL_ICC_17_VC141_TEST_SIMD_LAMBDA_DEBUG_32_BROKEN
      __pstl::__internal::invoke_if_not(__pstl::__internal::allow_unsequenced<Policy>(), f);
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/util/testsuite_allocator.h gcc-10.4.0/libstdc++-v3/testsuite/util/testsuite_allocator.h
*** gcc-10.3.0/libstdc++-v3/testsuite/util/testsuite_allocator.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/util/testsuite_allocator.h	Tue Jun 28 08:54:51 2022
*************** namespace __gnu_test
*** 512,518 ****
      {
        typedef Tp value_type;
  
!       SimpleAllocator() noexcept { }
  
        template <class T>
          SimpleAllocator(const SimpleAllocator<T>&) { }
--- 512,518 ----
      {
        typedef Tp value_type;
  
!       constexpr SimpleAllocator() noexcept { }
  
        template <class T>
          SimpleAllocator(const SimpleAllocator<T>&) { }
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/util/testsuite_fs.h gcc-10.4.0/libstdc++-v3/testsuite/util/testsuite_fs.h
*** gcc-10.3.0/libstdc++-v3/testsuite/util/testsuite_fs.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/util/testsuite_fs.h	Tue Jun 28 08:54:51 2022
*************** namespace test_fs = std::experimental::f
*** 34,40 ****
  #include <fstream>
  #include <string>
  #include <cstdio>
! #include <unistd.h> // unlink, close, getpid
  
  #if defined(_GNU_SOURCE) || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
  #include <stdlib.h> // mkstemp
--- 34,40 ----
  #include <fstream>
  #include <string>
  #include <cstdio>
! #include <unistd.h> // unlink, close, getpid, geteuid
  
  #if defined(_GNU_SOURCE) || _XOPEN_SOURCE >= 500 || _POSIX_C_SOURCE >= 200112L
  #include <stdlib.h> // mkstemp
*************** namespace __gnu_test
*** 160,164 ****
--- 160,180 ----
      path_type path;
    };
  
+   inline bool
+   permissions_are_testable(bool print_msg = true)
+   {
+     bool testable = false;
+ #if !(defined __MINGW32__ || defined __MINGW64__)
+     if (geteuid() != 0)
+       testable = true;
+     // XXX on Linux the CAP_DAC_OVERRIDE and CAP_DAC_READ_SEARCH capabilities
+     // can give normal users extra permissions for files and directories.
+     // We ignore that possibility here.
+ #endif
+     if (print_msg && !testable)
+       std::puts("Skipping tests that depend on filesystem permissions");
+     return testable;
+   }
+ 
  } // namespace __gnu_test
  #endif
diff -Nrcpad gcc-10.3.0/libstdc++-v3/testsuite/util/testsuite_iterators.h gcc-10.4.0/libstdc++-v3/testsuite/util/testsuite_iterators.h
*** gcc-10.3.0/libstdc++-v3/testsuite/util/testsuite_iterators.h	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/libstdc++-v3/testsuite/util/testsuite_iterators.h	Tue Jun 28 08:54:51 2022
*************** namespace __gnu_test
*** 122,128 ****
     */
    template<class T>
    struct output_iterator_wrapper
!   : public std::iterator<std::output_iterator_tag, T, std::ptrdiff_t, T*, T&>
    {
    protected:
      output_iterator_wrapper() : ptr(0), SharedInfo(0)
--- 122,128 ----
     */
    template<class T>
    struct output_iterator_wrapper
!   : public std::iterator<std::output_iterator_tag, void, std::ptrdiff_t, void, void>
    {
    protected:
      output_iterator_wrapper() : ptr(0), SharedInfo(0)
*************** namespace __gnu_test
*** 175,184 ****
--- 175,188 ----
  #if __cplusplus >= 201103L
      template<typename U>
        void operator,(const U&) const = delete;
+ 
+     void operator&() const = delete;
  #else
    private:
      template<typename U>
        void operator,(const U&) const;
+ 
+     void operator&() const;
  #endif
    };
  
*************** namespace __gnu_test
*** 275,284 ****
--- 279,292 ----
  #if __cplusplus >= 201103L
      template<typename U>
        void operator,(const U&) const = delete;
+ 
+     void operator&() const = delete;
  #else
    private:
      template<typename U>
        void operator,(const U&) const;
+ 
+     void operator&() const;
  #endif
    };
  
diff -Nrcpad gcc-10.3.0/libvtv/ChangeLog gcc-10.4.0/libvtv/ChangeLog
*** gcc-10.3.0/libvtv/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/libvtv/ChangeLog	Tue Jun 28 08:54:51 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/lto-plugin/ChangeLog gcc-10.4.0/lto-plugin/ChangeLog
*** gcc-10.3.0/lto-plugin/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/lto-plugin/ChangeLog	Tue Jun 28 08:54:51 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/maintainer-scripts/ChangeLog gcc-10.4.0/maintainer-scripts/ChangeLog
*** gcc-10.3.0/maintainer-scripts/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/maintainer-scripts/ChangeLog	Tue Jun 28 08:54:51 2022
***************
*** 1,3 ****
--- 1,15 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
+ 2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2021-04-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* generate_libstdcxx_web_docs: Add --disable-multilib to
+ 	configure command.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
diff -Nrcpad gcc-10.3.0/maintainer-scripts/generate_libstdcxx_web_docs gcc-10.4.0/maintainer-scripts/generate_libstdcxx_web_docs
*** gcc-10.3.0/maintainer-scripts/generate_libstdcxx_web_docs	Thu Apr  8 11:56:30 2021
--- gcc-10.4.0/maintainer-scripts/generate_libstdcxx_web_docs	Tue Jun 28 08:54:51 2022
*************** do
*** 43,49 ****
    [ $dir == 'libstdc++-v3' ] || disabled_libs="$disabled_libs --disable-$dir"
  done
  set -x
! ${SRCDIR}/configure --enable-languages=c,c++ --disable-gcc $disabled_libs --docdir=/docs
  eval `grep '^target=' config.log`
  make configure-target
  # If the following step fails with an error like
--- 43,49 ----
    [ $dir == 'libstdc++-v3' ] || disabled_libs="$disabled_libs --disable-$dir"
  done
  set -x
! ${SRCDIR}/configure --enable-languages=c,c++ --disable-gcc --disable-multilib $disabled_libs --docdir=/docs
  eval `grep '^target=' config.log`
  make configure-target
  # If the following step fails with an error like
diff -Nrcpad gcc-10.3.0/zlib/ChangeLog gcc-10.4.0/zlib/ChangeLog
*** gcc-10.3.0/zlib/ChangeLog	Thu Apr  8 11:56:48 2021
--- gcc-10.4.0/zlib/ChangeLog	Tue Jun 28 08:54:51 2022
***************
*** 1,3 ****
--- 1,7 ----
+ 2022-06-28  Release Manager
+ 
+ 	* GCC 10.4.0 released.
+ 
  2021-04-08  Release Manager
  
  	* GCC 10.3.0 released.
